Что было бы лучшим решением для моих приложений Delphi на Linux - Delphi + Wine или Lazarus?

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

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

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

Вы внесли свой вклад в это.

Ответ 1

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

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

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

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

Если ваш основной интерес - OS X, подумайте о присоединении к списку MacPascal.

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

Ответ 2

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

Я бы начал тестировать с помощью lazarus и держать Wine в качестве резервной копии, если вы отчаянно нуждаетесь.

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

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

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

Ответ 3

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

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

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

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

Ответ 4

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

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

Ответ 5

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

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

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

Ответ 6

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

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

Если у вас уже есть рабочее приложение, то дайте вину пройти - тестирование не повредит.

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

Ответ 7

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

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

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

Ответ 8

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