2009-05-21 17 views
10

Necesito hacer que mis soluciones Delphi estén disponibles en Linux y las he probado en Wine y Lazarus. ¿Cuáles son las consideraciones técnicas que debería tener en cuenta (Programación, Despliegue, Mantenimiento, etc.) a largo plazo para evitar el aterrizaje en una pesadilla de mantenimiento? Guardo mis componentes de Windows usados ​​bastante estándar para evitar las complejidades que pueden desarrollarse en multiplataforma. Estoy buscando algunos hechos duros que deberían ir más allá de ser subjetivos. No quiero considerar .Net/Mono porque esto me retrasará inmediatamente (Huge Delay to market) que no puedo pagar.¿Cuál sería la mejor solución para mis aplicaciones Delphi en Linux - Delphi + Wine o Lazarus?

puedo pensar en alguna:

  1. Lazaraus puede requerir algunos cambios() programación para hacer el trabajo de código.
  2. El vino es un entorno más difícil de mantener en una gran base de clientes.

Su contribución en esto sería muy apreciada.

Respuesta

1

En primer lugar, debe asegurarse de que el código de la GUI y el código de la parte de fuera de la GUI estén claramente separados en la aplicación de la GUI y las bibliotecas si aún no lo están. Esto facilita la prueba y también facilita la implementación de la interfaz de línea de comandos, la interfaz web, etc. Estas bibliotecas (archivos de unidades con objetos y procedimientos) deben compilarse fácilmente en FreePascal en la mayoría de los casos, sin embargo, debe verificar y depurar el código que no es GUI. primero.

Una vez que está fuera del camino, es hora de echar un vistazo a su GUI. Si está utilizando muchos componentes comerciales de terceros de código cerrado, puede que no tenga suerte con la conversión fácil de la GUI. Si está utilizando principalmente componentes de stock y/o aquellos que han sido portados a Lazarus, entonces puede ser capaz de convertir la GUI y usarla tal como está.

Tenga en cuenta que, dado que los programas Mac OS y Linux son a menudo supuestos con un aspecto diferente, es posible que desee considerar eso, dependiendo de su aplicación. Los enfoques posibles incluyen: 1. Utilice Lazarus incluso en Windows, y use el mismo código GUI para todas las plataformas. 2. Utilice Lazarus solo en OS X y Linux, y personalice la GUI para que se vea algo nativa después de la conversión. 3. Codifique una GUI nativa para OS X (usando Cocoa y tal vez XCode), y luego vincule a su código Pascal para el manejo sin GUI. Este tipo de cosas es menos necesario en Linux, pero allí tiene una opción de kits de herramientas para el back-end de LCL (VCL).

Existen fuertes defensores de cada enfoque, pero cuál es el correcto depende de sus "circunstancias" y sus objetivos.

Si su principal interés es OS X, considere unirse a la lista MacPascal.

El vino es una gran exageración a menos que necesite sacar una aplicación Linux/OS X mañana sin casi ninguna modificación. (En ese caso, ¿por qué no usar VMWare?)

+0

Lazarus en Mac admite QT y Carbono. En el pasado, incluso GTK (no lo han intentado durante años). El cacao está planeado pero progresa lentamente. Supongo que todo depende de lo ansioso que estés por reorganizar tu aplicación, y lo que demanda en la GUI que tienes. –

5

En general, recomendaría usar Lazarus. Si usted depende de WINE, también está a merced de los WINE bugs, que pueden afectar la calidad de su producto. Incluso puede ser útil usar Lazarus + FPC en el entorno de Windows.

Una alternativa sería utilizar la virtualización, pero esto depende del tipo de aplicación que está escribiendo.

+0

Gracias por su comentario. Soy consciente de que la vitualización tendrá implicaciones de rendimiento indeseables y otras complejidades técnicas, probablemente peores que cualquier otro encuentro al utilizar Wine. –

+1

lazarus tiene muchos errores y problemas de AV, ¿pero contra el vino? Yo diría 1+ para Lázaro. – avar

+0

Pero para la mantenibilidad, la virtualización puede ayudar porque todo está contenido dentro de la máquina virtual. – sybreon

4

Mirando los planes de Codegear - busque algunos de los consejos de la hoja de ruta en DelphiLive 2009 - para proporcionar Delphi nativo en Linux y Mac, por ahora iría con Lazarus. Te ahorras la administración de Wine y luego puedes transferir tu aplicación a native. (Como alguien dijo: Delphi será como un gran zoológico con pingüinos, tigres, leopardos y leopardos de las nieves.)

Por supuesto, portar envolver dejará algo de trabajo. Pero si observa detenidamente problemas como el Unicode y evita las fallas más comunes, debería ser bastante fácil.

Busque en delphifeeds para unicode y hoja de ruta para obtener más consejos.

17

Yo diría que no hay una regla de oro allí. Realmente dependerá de la cantidad de componentes que use que sean compatibles con Lazarus.

Empezaría a probar con lazarus y mantendría Wine como copia de seguridad en caso de que se desespere.

Los planes Codegear son todavía muy imprecisos (solo lo "miran", pero al mismo tiempo difuminan el despliegue de 64 bits en dos versiones completas, por lo que incluso si esto avanza esto podría llevar bastante tiempo)

La línea de tiempo rápida me hace pensar que la versión de Apple usará QT, no apis nativos.

Actualización: casi 4 años, y todavía no hay compatibilidad con Linux. Los árboles crecen más rápido.

+2

Gracias por una voz de la razón entre los actuales ojos estrellados creen que (una de) las próximas versiones de Delphi permitirán simplemente presionar un botón y obtener todo esto maravilloso Aplicaciones Linux y Mac OS X. – mghie

+0

Bueno, tampoco quiero ser negativo, al menos tienen el código base de Kylix y un compilador revisado (y con suerte portátil) como parte del esfuerzo de 64 bits. FPC/Lazarus fue multiplataforma y más tarde -arquitectura a través de esa misma ruta también. Sin embargo, simplemente no hay suficiente carne para comentar. –

+0

mghie: Resulta que presionar el botón DESPUÉS de volver a crear una biblioteca GUI diferente :-) –

16

Tengo que estar en desacuerdo con todos los demás aquí y sugerir que use Wine. Google está enviando a Picassa una instalación de Wine y usted podría hacer lo mismo. En lugar de confiar en la versión instalada por la distribución, tienen una copia en el directorio del programa que está preconfigurado y tiene una versión conocida contra la que puede probar.

Básicamente, solo necesita preguntar qué proporcionaría un puerto nativo que un envoltorio de vino no lo haría.Para la mayoría de las aplicaciones de Delphi, la respuesta es probablemente el tema y muy poco más. Hicimos un puerto nativo para poder acceder al sistema de archivos en un nivel inferior, pero antes de eso nuestro producto trabajó en Wine casi perfectamente durante años.

Y hablando por experiencia, puertos nativos no son un paseo por el parque:

  • Cualquier componente de terceros probablemente no son compatibles con Lázaro.
  • A menos que cambie su versión de Windows a Lazarus también necesitará mantener los archivos .lfm de paralaje, y si lo hace, perderá el Delphi IDE. Tan lindo como lo es Lazarus, está muy por detrás del último Delphis en polaco y características.
  • Las pruebas requerirán mucho más esfuerzo si tiene un programa completamente separado con un conjunto de widgets diferente. Testing on Wine estaría más cerca de probar su versión existente en una nueva versión de Windows.
  • No podrá usar ninguna característica nueva que el compilador Delphi presente (métodos genéricos, anónimos) hasta que FPC tenga algo equivalente.
  • La mayoría de las instalaciones de Linux de 64 bits no incluyen las versiones de 32 bits de Gtk/Qt, y su instalación puede ser complicada y propensa a errores, por lo que también deberá compilar las versiones de 64 bits de su aplicación.
+0

Gracias por esto, sin duda, añade algo de reflexión. –

+2

No estoy de acuerdo con los componentes de terceros. Muchos de los componentes básicos SON compatibles, como suites Socket, ZeOS, VST, Comport, TeeChart y la lista continúa. El segundo punto que acepto, al menos en la primera parte, es que el mantenimiento dual es complicado si tienes mucha GUI.(Cambié la mayoría de mis proyectos de Lazarus para usar también Lazarus en Windows, de todos modos lo hice por win64) FPC lanzó genéricos antes que D2009. Pero lamentablemente CG los implementó incompatibles El último punto depende de qué tan lejos llegarás. Linux/PPC Sparc, ARM, Wince? Primero vea si Linux de 64 bits tiene sentido en este punto. –

+4

¿Cuántos de los componentes de TMS y DevExpress admite? También debo haberme perdido los controles Ribbon, las bibliotecas de imágenes, ZipForge/ziptv, VirtualShellTree, skinning/themeing, QuickReports y más. Tal vez el wiki está desactualizado ... –

3

Creo que Wine or Lazarus probablemente funcione para usted. He probado algunas de nuestras aplicaciones Delphi bastante grandes (muchos controles de terceros) con vino, y han funcionado bastante bien. Hubo algunos problemas de fuente molestos. Las dos cosas que realmente fallaron fueron donde usé TWebBrowser (que parecía que casi funcionaba, creo que estaba usando el motor de renderizado gecko en lugar de IE). El otro era un servidor de muli-tier (Datasnap), que funcionaba pero no pude encontrar la forma de conectarme.

Creo que aguantar la compatibilidad con Mac/Linux para Delphi sería un error, el hecho de que puedan compilar una aplicación de consola "hola mundo" para OS/X es impresionante, pero creo que portar la VCL es una historia diferente (a menos que hayas escrito una aplicación de consola).

Si ya tiene una aplicación que funcione, entonces pruebe el vino: las pruebas no pueden perjudicar.

La otra cosa a considerar es ¿quiénes son tus usuarios (y cuántos)? Si son geeks de Linux, entonces no tendrán problemas para configurar y modificar el vino (aunque les puede resultar ofensivo usar una aplicación nativa de Windows). Si se trata de un grupo de abuelas, esa es una historia diferente.

+0

El hecho de que puedan compilar "hello world" para Mac OS X no es impresionante, es lo mínimo. Quiero decir, estamos hablando de una compañía que ha estado desarrollando herramientas de desarrollo x86 por más de 20 años. (Supongo que no se enfocarían en PPC, no tiene mucho sentido hacer eso más). De lo contrario, tu respuesta es buena, +1. – mghie

+0

(OS X ABI es un poco funky, con alineación de bytes, pequeños registros en registros de alineación de pila en cada función, etc. Así que no es del todo trivial) –

+0

@Marco: Puede que no sea trivial, pero hay toneladas de arte previo para buscar a. Deberían saber sus cosas después de todo este tiempo. Y de todos modos, en estos días tomará mucho más que resolver un problema "no del todo trivial" para convencer a la gente a pagar por una herramienta de desarrollo. – mghie

2

Free Pascal Compiler/Lazarus no está cerca de las últimas características de Delphi, pero es bastante estable a pesar de que todavía hay errores que descubrir.

Además, los ejecutables producidos parecen más grandes, pero es definitivamente más pequeño que usar una VM o implementar con Wine.

Pero hace algo que Delphi/Kylix intentó una vez. Cross build! Al usarlo, puede compilar desde una plataforma a otra.

1

Actualmente utilizamos Wine para nuestro producto ShareTeam ... Tenemos una versión de prueba en Lazarus que es una buena herramienta y tiene muchas ventajas pero no está realmente completa en este momento. Creo que por el momento es mejor utilizar el vino si el trabajo no es simple, la conversión de una aplicación Delphi a Lazarus/FreePascal no es simple. Personalmente, espero que Embarcadero cree una versión multiplataforma de Delphi, no como Prism, que tiene mucha diferencia con Delphi.

+0

Creo que los mismos componentes que son el problema con lazarus (como RTF, paquetes de informes, TWebBrowser (IE), XML (MSXML, pero que es factible emular), ADO, etc.) también serán un problema con Delphi multiplataforma. –

Cuestiones relacionadas