Что было бы лучшим решением для моих приложений Delphi в Linux - Delphi + Wine или Lazarus? - PullRequest
10 голосов
/ 21 мая 2009

Мне нужно сделать свои решения Delphi доступными в Linux, и я протестировал их на Wine и Lazarus. Какие технические соображения я должен принять во внимание (программирование, развертывание, обслуживание и т. Д.) В долгосрочной перспективе, чтобы избежать посадки в кошмаре обслуживания. Я поддерживаю стандартные компоненты Windows, чтобы избежать сложностей, которые могут возникнуть на кроссплатформенных платформах. Я ищу некоторые неопровержимые факты, которые должны выходить за рамки субъективности. Я не хочу рассматривать .Net / Mono, потому что это немедленно отбросит меня назад (огромная задержка на рынок), что я не могу себе позволить.

Я могу думать о некоторых:

  1. Lazaraus может потребовать некоторого (изменения) программирования, чтобы заставить код работать.
  2. Вино - более сложная среда для обслуживания большого количества клиентов.

Ваш вклад в это был бы очень признателен.

Ответы [ 8 ]

18 голосов
/ 21 мая 2009

Я бы сказал, что там нет золотого правила. Это будет зависеть от того, сколько компонентов вы используете в Lazarus.

Я бы начал тестирование с Lazarus и оставил Wine в качестве резервной копии на случай, если вы отчаялись.

Планы Codegear по-прежнему очень расплывчаты (они только «смотрят на это», но в то же время они размазывают 64-битное развертывание над двумя полными версиями, поэтому, даже если это и даст прогресс, это может занять довольно много времени)

Быстрый график заставляет меня думать, что версия Apple будет использовать QT, а не native apis.

Обновление: почти 4 года, и все еще нет поддержки Linux. Деревья растут быстрее.

16 голосов
/ 21 мая 2009

Я должен не согласиться со всеми здесь и предложить вам использовать Wine. Google поставляет Picassa с установкой Wine, и вы можете сделать то же самое. Вместо того, чтобы полагаться на версию, установленную дистрибутивом, у них есть копия в каталоге программы, которая предварительно сконфигурирована и имеет известную версию, с которой вы можете протестировать.

По сути, вам просто нужно спросить, что бы предоставил собственный порт, а винная оболочка - нет. Для большинства приложений Delphi ответ, вероятно, тематический, и совсем немного. Мы создали собственный порт, чтобы иметь доступ к файловой системе на более низком уровне, но до этого наш продукт почти годами работал на Wine.

И, судя по опыту, родные порты - это не прогулка в парке:

  • Возможно, сторонние компоненты не поддерживаются Lazarus.
  • Если вы не переключите свою версию Windows на Lazarus, вам потребуется поддерживать параллельные файлы .lfm, и если вы сделаете это, вы потеряете Delphi IDE. Как бы ни был хорош Lazarus, он намного отстает от последних версий Delphis по полировке и функциональности.
  • Тестирование потребует гораздо больше усилий, если у вас есть совершенно отдельная программа с другим набором виджетов. Тестирование на Wine ближе к тестированию существующей версии на новой версии Windows.
  • Вы не сможете использовать какие-либо новые функции, представленные компилятором Delphi (обобщенные, анонимные методы), пока FPC не получит нечто эквивалентное.
  • Большинство 64-битных версий Linux не включают в себя 32-битные версии Gtk / Qt, и их установка может быть сложной и подвержена ошибкам, поэтому вам придется также компилировать 64-битные версии вашего приложения.
5 голосов
/ 21 мая 2009

Я бы вообще рекомендовал использовать Lazarus. Если вы зависите от WINE, вы также зависите от ошибок WINE, которые могут повлиять на качество вашей продукции. Может быть даже полезно использовать Lazarus + FPC в среде Windows.

Альтернативой может быть использование виртуализации, но это зависит от типа приложения, которое вы пишете.

4 голосов
/ 21 мая 2009

Рассматривая планы Codegear - поиск некоторых советов по дорожной карте на DelphiLive 2009 - чтобы предоставить родной Delphi для Linux и Mac, я бы сейчас остановился на Lazarus. Вы избавляетесь от администрирования Wine и позже можете портировать свое приложение на native. (Как кто-то сказал: Delphi будет похож на большой зоопарк с пингвинами, тиграми, леопардами и снежными барсами.)

Конечно, портирование приведет к прекращению работы. Но если вы внимательно посмотрите на такие вопросы, как юникод и не допустите наиболее распространенных ошибок, это должно быть довольно просто.

Поиск по delphifeeds для юникода и дорожная карта для дальнейших подсказок.

3 голосов
/ 22 мая 2009

Я думаю, что либо Wine, либо Lazarus, вероятно, подойдут для вас. Я протестировал некоторые из наших довольно больших приложений Delphi (многие сторонние элементы управления) с Wine, и они работали довольно хорошо. Было несколько раздражающих проблем со шрифтами. Две вещи, которые действительно потерпели неудачу, были в основном там, где я использовал TWebBrowser (который выглядел почти как работающий, я думаю, что он использовал движок рендеринга геккона вместо IE). Другой был многоуровневый (Datasnap) сервер, который работал, но я не мог понять, как подключиться к нему.

Я думаю, что поддержка Mac / Linux для Delphi была бы ошибкой, тот факт, что они могут скомпилировать консольное приложение "hello world" для OS / X, впечатляет - но я думаю, что перенос VCL - это отдельная история ( если вы не написали консольное приложение).

Если у вас уже есть работающее приложение, попробуйте Wine - тестирование не помешает.

Другая вещь, которую стоит рассмотреть, это кто ваши пользователи (и сколько)? Если они фанаты Linux, то у них не возникнет проблем с настройкой и настройкой Wine (хотя они могут посчитать оскорбительным использование нативного приложения для Windows). Если это группа бабушек, то это уже другая история.

2 голосов
/ 05 июня 2009

Free Pascal Compiler / Lazarus не близок к последним функциям Delphi, но он достаточно стабилен, хотя есть еще ошибки, которые нужно выяснить.

Кроме того, производимые исполняемые файлы кажутся большими, но это определенно меньше, чем при использовании виртуальной машины или развертывании с самим Wine.

Но он делает то, что однажды попробовал Delphi / Kylix. Крестовина ! Используя его, вы можете компилировать с платформы на другую.

1 голос
/ 03 сентября 2013

Во-первых, вы должны убедиться, что ваш код GUI и код не-GUI аккуратно разделены на приложение GUI и библиотеки, если их еще нет. Это облегчает тестирование, а также упрощает реализацию интерфейса командной строки, веб-интерфейса и т. Д. Эти библиотеки (файлы модулей с объектами и процедурами) в большинстве случаев должны легко компилироваться в FreePascal, однако вам следует проверять и отлаживать код, не относящийся к графическому интерфейсу. первый.

Как только это закончится, пришло время взглянуть на ваш графический интерфейс. Если вы используете множество сторонних коммерческих компонентов с закрытым исходным кодом, вам может не повезти с простой конвертацией графического интерфейса. Если вы используете в основном стандартные компоненты и / или компоненты, которые были портированы на Lazarus, то вы действительно сможете конвертировать графический интерфейс и использовать его как есть.

Обратите внимание, что поскольку программы для Mac OS и Linux часто предполагаются , чтобы выглядеть по-разному, вы можете рассмотреть это в зависимости от вашего приложения. Возможные подходы включают в себя: 1. Используйте Lazarus даже в Windows и используйте один и тот же код графического интерфейса для всех платформ. 2. Используйте Lazarus только в OS X и Linux, и настройте графический интерфейс, чтобы он был немного естественным после конвертации. 3. Кодируйте собственный графический интерфейс для OS X (используя Cocoa и, возможно, XCode), а затем сделайте ссылку на свой код Pascal для обработки без использования GUI. Подобные вещи менее необходимы в Linux, но там у вас есть выбор наборов инструментов, которые может сделать серверная часть LCL (VCL).

Есть сильные сторонники каждого подхода, но какой из них правильный, зависит от ваших "обстоятельств" и ваших целей.

Если вас интересует OS X, рассмотрите возможность присоединения к списку MacPascal.

Wine - это огромное излишество, если только завтра вам не понадобится выпустить приложение для Linux / OS X практически без изменений. (В таком случае, почему бы просто не использовать VMWare?)

1 голос
/ 03 сентября 2009

На самом деле мы используем Wine для нашего продукта ShareTeam ... У нас есть тестовая версия Lazarus, которая является хорошим инструментом и имеет много преимуществ, но в данный момент она еще не завершена. Я думаю, что на данный момент лучше использовать Wine, если работа непростая, конвертировать приложение Delphi в Lazarus / FreePascal непросто. Лично я надеюсь, что Embarcadero создаст кроссплатформенную версию Delphi, а не Prism, которая сильно отличается от Delphi.

...