Лазарь жив!

Денис Лянда (С.-Петербург)

Все знают, чем хорош Delphi — скоростью разработки, скоростью компиляции, удобным интерфейсом… Однако многие на собственном опыте отлично знают, чем Delphi плох. Возможно, многие их проблемы можно решить, если обратить внимание на относительно новый, но уже неплохо зарекомендовавший себя проект — Lazarus.

Lazarus — это среда быстрой разработки приложений (RAD, Rapid Application Development) для языка программирования Object Pascal, того же языка, что использован в известном семействе продуктов Delphi и Kylix. Технически Lazarus представляет собой компилятор FreePascal, снабженный библиотеками GUI и удобной средой визуального программирования.

Написал однажды — компилируй где угодно!

Lazarus стремится заполнить пустовавшую долгое время нишу среды быстрой разработки для языка Pascal, способной работать под разными операционными системами. Известно, что Delphi годится только для Windows, а к проекту Kylix корпорация Borland быстро потеряла интерес, ограничившись выпуском трех версий.

Зачем вообще нужна кросс-платформенная среда разработки для языка Pascal и чем нам не нравится Kylix?

Все больше людей (причем, как правило, наиболее думающая часть аудитории) бросает Windows и обращается к альтернативам — Linux, Mac OS X и так далее. Так что писать под одну операционную систему, будь то Windows или Linux, — моветон и вообще вчерашний день. Нынче принято, чтобы программа работала везде. Самый простой способ — это написать ее на интерпретируемом языке, таком, как Python или Java. Тогда программа запустится на любой платформе, где найдется для нее интерпретатор. Однако, во-первых, интерпретируемая программа часто бывает существенно медленнее, чем двоичный код, полученный компиляцией, а, во-вторых, во многих случаях уже накоплен большой запас программ, которые нужно заставить работать, скажем, под Linux, но переписывать их на другой язык (на Java, или, допустим на C/C++) — трудоемкая и дорогостоящая задача. Очень часто, особенно в России, весь этот полезный, привычный, созданный специально для ваших нужд софт бывает написан именно на Delphi.

Нам с ними не по пути…

Итак, задача ясна: нужно заставить имеющуюся программу, написанную на Delphi, работать под Linux. Если вы решите использовать для этой цели связку Delphi-Kylix, перед вами встанут три серьезные проблемы:

1. Для того чтобы программу компилировал Kylix, ее придется все-таки слегка переделать: как минимум, использовать другие названия модулей, а зачастую внести и еще кое-какие (порой непредсказуемые) изменения.

2. Kylix строго привязан к одной библиотеке — Qt. Если вы захотите собрать программу с использованием, допустим, библиотек GTK/GTK2, вам это не удастся.

3. Delphi стоит денег, как и Kylix. Хотя в России принято забывать об этом, профессиональная версия Delphi стоит порядка тысячи долларов, что явилось бы серьезным ударом по бюджету небольшой фирмы, не говоря уже об одиночном программисте.

Совместимость и свобода — бесплатно!

Lazarus лишен этих недостатков:

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

2. Kylix работает только под Linux, а Lazarus, теоретически, на любой платформе, для которой существует версия FreePascal (список таких платформ велик — от ARM/Linux до PPC/Mac OS X). Библиотеки тоже можно подключать разные — GTK, GTK2 и Windows GUI, ведется работа над Qt и Carbon. Причем никакого переписывания не требуется — нужная библиотека выбирается переключателем в настройках.

3. Lazarus, как и FreePascal, относится к свободному программному обеспечению (Free Software) и распространяется под лицензиями GNU GPL и LGPL. Это значит, что ни копейки платить не надо, причем вы получаете в свое распоряжение полный исходный код и право делать с ним почти все что вздумается.

Набор инструментов

Итак, с совместимостью разобрались. Что же есть в Lazarus своего, чего нет у других?

Pascal вообще и Delphi в частности традиционно используют для работы с базами данных, XML и для других подобных задач. Lazarus тоже относится к данной области с должным вниманием. Во-первых, повторимся, те библиотеки, к которым вы привыкли в Delphi, с большой вероятностью будут работать и с FreePascal/Lazarus. Во-вторых, Lazarus имеет несколько собственных полезных компонентов.

Обращение с базами данных осуществляется при помощи компонента TDataSource и набора компонентов TDBNavigator, TDBMemo, TDBGrid и т. д. По отзывам специалистов, создание приложений-баз данных в Lazarus ничуть не сложнее, чем в Delphi. Использование Lazarus для создания баз данных подробно документировано на сайте Lazarus CCR, куда я и отсылаю всех интересующихся.

XML, который нынче используют, кажется, для всего на свете, тоже не остался в стороне. FreePascal предоставляет модули для работы с XML, причем вы можете использовать как DOM, так и SAX. Имеется также очень удобный модуль, позволяющий сохранять в виде XML настройки вашей программы. Кстати говоря, XML широко используется и самим Lazarus в файлах проектов и в собственных файлах настроек.

Среди полезных компонентов Lazarus нельзя не упомянуть SynEdit -редактор с возможностью выделения синтаксиса (несколько готовых вариантов выделения прилагается). SynEdit использован и в самом Lazarus, так что перед вами всегда будет хороший пример использования его обширных возможностей.

Удобно также использовать Lazarus для работы с графикой, например, посредством библиотеки JEDI-SDL, предоставляющей интерфейс к популярной библиотеке SDL (Simple DirectMedia Layer — в некотором смысле кросс-платформенный аналог DirectX). Библиотеки JEDI прекрасно документированы, так что написание простейшей графической программы заняло у меня порядка пяти минут. Для многих программистов, привыкших к созданию графических программ в TurboPascal, оказалось значительным препятствием отсутствие простых и интуитивных способов рисования на экране в Delphi, а тем более в бесплатных альтернативах. К тому же часто нужно использовать возможности графического ускорителя или создать OpenGL-приложение. Все это просто реализуется при помощи FreePascal, Lazarus и библиотек JEDI-SDL.

 

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

Ложка дегтя

Объективности ради упомяну и недостатки. Хотя для очень многих программистов «Лазарь» явится настоящим спасителем, назову и кое-какие нюансы, которые могут кому-то помешать.

Недостатком Lazarus можно назвать отсутствие документации по библиотеке классов. Однако, учитывая полную совместимость с Delphi, документация от Borland вполне сгодится, если, конечно, она у вас есть. Неплохие руководства по Lazarus и примеры кода можно найти на сайте Lazarus CCR.

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

Ну и, наконец, пакетов под Lazarus все же заметно меньше, чем под Delphi. Пакеты, распространяемые только в бинарной форме, под Lazarus работать не будут, так как их невозможно перекомпилировать. Впрочем, за бинарные пакеты авторы, как правило, заламывают немалую цену, так что в России невозможность их подключения вряд ли на ком-либо серьезно отразится.

Итак, хотя впереди у «Лазаря» еще долгий путь к успеху, уже сейчас его можно рекомендовать всем, кто недоволен Delphi, не хочет за него платить и при этом хочет разрабатывать кросс-платформенные приложения.

Ссылки:

http://lazarus.freepascal.org/ — Lazarus

http://freepascal.org/ — FreePascal

http://lazarus-ccr.sf.net/ — Lazarus Code and Components Repository (CCR)

http://delphi-jedi.org/ — JEDI project

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *