DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Готов ли Lazarus для создания коммерческих приложений?

Автор: Мигел ван де Лар (Miguel van de Laar)
Заметка редактора:
Эта статья демонстрирует тот существенный прогресс, которого добился Lazarus, благодаря самоотверженному труду команды разработчиков: это доказывает, что современный Lazarus во многих отношениях находится наравне с Delphi. В некоторых ключевых областях он даже опережает Delphi (64 битная компиляция исполняемых файлов, мультиплатформенность и мультисистемность позволяют вести разработку для мобильных и встроенных систем). Конечно, это не совсем то же, что и Delphi, но зато очень дешево -смотри цену USB-накопителя Lazarus в рекламном приложении. Lazarus доступен для всех и позволяет начать работу сразу без предварительной инсталляции. Вы можете создать любое приложение, которое пожелаете, а количество доступных компонентов непрерывно растет. Так скажите же «ДА». Идеально подходит для использования в коммерческих целях!
В то время я еще не был знаком с такими компонентами сторонних производителей, как Zeos и т.д., поэтому написал свой собственный драйвер PostgreSQL и несколько лет использовал его. Затем я обнаружил Zeos — приятный сюрприз — и сразу же стал использовать его. Так продолжалось до 2004 года, пока не пошли слухи о том, что Kylix умер, и не было известий от Borland - только тишина...Да, от него отказались: как же вам не стыдно, Borland? Не за то, что вы похоронили Kylix, а за то, что вы обманули своих клиентов.
Затем в течение нескольких лет мы сражались с продуктами Borland (Kylix тогда не мог работать с каким-либо дистрибутивом на основе Glibc старше версии 2.4.) до тех пор, пока я не обнаружил, что кто-то запустил Qt-widgetset в проекте Lazarus. Этим парнем оказался Фелипе. И спасибо Ден Жану за привязку Qt к C, потому что без привязки к С мы не получили бы Qt-widgetset в Lazarus.
Я начал свою работу в 2001—м году в хорватской компании Holobit. В то время Holobit был относительно небольшой компанией, имевшей всего несколько десятков клиентов.
Моей основной задачей было обеспечить совместимость существующих С++-бизнес приложений как с Linux, так и с Windows, используя Delphi, Kylix и технологию Borland CLX.
После нескольких лет C/C++ кодинга под Linux, ООП казался мне простым и очень хорошо организованным. Два месяца спустя я пришел к выводу, что у Borland замечательные продукты, а время кодинга значительно меньше, чем на C/C++ (gtk+, qt) с использованием редактора vi (серия текстовых редакторов операционных систем семейства UNIX -Прим. переводчика). В течение трех месяцев наши бизнес приложения были переведены на CLX, и компания начала продажи для Linux и Win32. Все было сделано с помощью Kylix 2 и Delphi 6 

(позже обновленных до K3 и D7).

Создание нативных Linux приложений стало удачным решением, вследствие которого количество клиентов начало стремительно увеличиваться.
Наши клиенты остались довольны такой возможностью выбора для настольных ПК, потому, что это экономит деньги и создает более безопасное окружение.
Вторым вопросом, который тогда казался довольно сложным, стали базы данных. Когда я начинал работу по переводу наших приложений, все они использовали Foxpro, и мне это очень не понравилось, потому что я уже использовал PostgreSQL для Linux. Так что ваше предположение о том, что мы перевели все свои приложения на PostgreSQL, совершенно верно.
До этого я видел Lazarus всего несколько раз, но он меня не заинтересовал, так как поддерживал только Gtkl-widgetset, который выглядел ужасно по сравнению с Qt2, использовавшимся в Kylix. Так что теперь у меня появилась мотивация скачать ядро Lazarus и исследовать возможности работы с Qt. 

(Я уже пробовал Gtkранее).

Как я говорил ранее, работа над Qt widgetset только началась, требовалось много доработок, и поэтому его еще нельзя было полноценно использовать.
После беглого ознакомления с принципами Lazarus, библиотекой компонентов Lazarus (LCL) и подключением widgetset к LCL, я начал вносить свой вклад в проект Lazarus, главным образом для того, чтобы получить работоспособный Qt widgetset.
Мои первые патчи были отосланы Фелипе. Он указал мне на мои недочёты относительно стандартов написания кода, но я их устранил и привел собственные стандарты к стандартам Lazarus.
Во всяком случае, через год или около того, Qt widgetset уже можно было использовать. К тому времени разработчики Lazarus предоставили мне доступ на запись в subversion, так что больше было не нужно ждать Фелипе или кого-нибудь еще для выкладывания собственных патчей. В то же время возникли бизнес-проблемы с программированием на Kylix и Delphi, и руководство компании рассматривало вопрос о полном переводе нашего кода на Java или .
Net. Когда руководство решило, что эти изменения должны быть срочно сделаны, я запротестовал.
Меня это не слишком радовало. Не столько из-за самих приложений, сколько из-за всех сторонних компонентов, используемых в наших приложениях (ZeosLib, FastReport, TMS-grid, VirtualTree и т.д.). Я заявил, что нам понадобится очень много времени и ресурсов для перевода кода на Java или .Net, а результат будет неубедителен. Я был обеспокоен этими бизнес-решениями (и уже подумывал о смене работы). В один прекрасный день я спросил начальника, позволит ли он мне потратить некоторое время на разработку кода с помощью Lazarus, и несколько месяцев спустя я показал некоторые из наших приложений, работающие на Qt4.

В бой!
Я начал гонку со временем. Я должен был исправить Qt-LCL и сконвертировать одно из наших приложений в LCL (совсем небольшое). Это не было легкой задачей, поскольку Qt-LCL-прежнему оставался незаконченным, и многое еще не работало. Zeos для Lazarus уже существовал, но для этого простого приложения, мне требовались еще FastReports и TMS Grids. Таким образом, у меня было три месяца для того, чтобы сделать Qt для Lazarus пригодным для использования и конвертировать FastReports и TMS grids (для обоих продуктов была CLX лицензия)... После сотен часов программирования, наступил час расплаты. Я должен был показать свою работу к концу февраля 2008 года. Я сделал презентацию на Linux, 32-битной Windows и на Mac OSX, и руководство компании осталось довольно. Конечно, еще оставались ошибки и нереализованные функциональные возможности, но они оценили мой главный аргумент. Если мы перейдем на Lazarus, мы сможем работать с другими платформами (их даже станет больше). К тому же, Lazarus -проект с открытым кодом, и мы не будем зависеть от решений, принятых другими компаниями (такими, как Borland), ущерб от которых мы понесли в прошлом. Это был самый счастливый день за последние несколько лет моей карьеры. Мне предоставили бюджет и время, необходимое для перевода наших приложений на Lazarus.
Теперь у меня был разумный срок (15 месяцев) для улучшения Lazarus и для перевода на него наших приложений (и еще для других повседневных задач). В течение 2008/2009 годов я перевел все сторонние компоненты и все наши приложения на FPC / Lazarus и в процессе этого также выпустил большое количество патчей для проекта Lazarus. Цель была достигнута — теперь Lazarus стал лучше чем Kylix 3, и мы начали устанавливать LCL-приложения на более чем 3500 объектах у клиентов. Отзывы пользователей были положительными, так как наши приложения выглядели более естественно на всех платформах. Несколько десятков пользователей Mac OSX были просто счастливы,от того, что мы сразу предоставили им нативные приложения (они использовали Parallels + Linux VM). Вот оно счастье! Мы больше не нуждались в продуктах Borland.
Теперь весь спектр нашего программного обеспечения разработан с использованием FPC / Lazarus и использует СУБД PostgreSQL:
HoloERP - ERP-система с более чем 400 модулями (формами)
Cafeman — система управления документацией для кафе баров, ресторанов и POS (торговый терминал - прим. переводчика).
TSuS - система управления документацией для небольших магазинов и POS
Cinema - программное обеспечение для кинотеатров (бронирование, билеты и т.д.)
ArhStudio - база данных документации для архитекторов.
Все эти приложения используют следующие сторонние компоненты:
ZeosLib
FastReports (портированый c CLX)
TMS grids (портирован c CLX, но вдобавок мы приобрели более свежие VCL-компоненты и также портировали и их)
TMS Planner (портирована с CLX, позже с VCL)
FlexCell (лицензия LCL, да, есть LCL версия)
Наши собственные компоненты
Заключение.
Lazarus готов для коммерческого использования, особенно для тех, кто имеет код, основанный на устаревших Kylix3 / Delphi7. Мое личное мнение: сейчас Lazarus Qt (ядро 0.9.29) гораздо лучше, чем K3/D7, а разработчики с радостью встретят новую версию -0.9.30.
 









jAntivirus