В начале (а точнее, весной) 1999 года всемирно-известная компания Borland (создатель таких средств разработки как C++ Builder, Delphi, Jbuilder) провела на своем сайте анкетный опрос с целью оценить, насколько высоким спросом будет пользоваться продукт, назначение которого заключается в переносе приложений, разработанных на Delphi для ОС Windows, на платформу Linux. Видимо, результаты опроса удовлетворили компанию, так как сразу же после него началась работа над Kylix одним из самых неординарных проектов в истории Borland.
Так что же собой представляет Borland Kylix? Это первая RAD(Rapid Application Development Быстрое Создание Приложений)-среда разработки для Linux, которая во многом идентична Delphi для Windows (часто ее даже называют «Delphi для Linux»). Но Kylix имеет ряд отличий от своего Windows-аналога (в частности, отсутствие поддержки VCL, библиотеки компонентов, используемой всеми версиями Delphi и внедрение на замену ее библиотеки CLX). Этот продукт, как уже описывалось выше, предназначен для разработки кроссплатформенных приложений, а также переноса Delphi-программ для Windows на систему Linux. Kylix (как и Delphi) обладает мощными средствами для разработки интернет-приложений и работы с базами данных.
Наверняка многие читатели были знакомы с Delphi, и учитывая тот факт, что Kylix является, можно сказать, Delphi для Linux, то все сказанное о этом продукте будет на 99% правдой и для Kylix. Я не буду в этой статье детально описывать возможности Kylix, а остановлюсь конкретно на функциональных различиях между этими двумя средами разработки.
Основная особенность Kylix заключается в том, что эта среда разработки не поддерживает библиотеку VCL (Visual Components Library Визуальная Библиотека Компонентов), которую использовали все версии Delphi. Windows и Linux являются принципиально разными операционными системами, соответственно, многие компоненты VCL имеют жесткую привязку к платформе Win32 и не смогут работать в Linux. Для решения этой проблемы компания Borland создала совершенно новую библиотеку компонентов Borland Component Library for Cross Platform (CLX). Компоненты этой библиотеки поддерживаются как в Windows (начиная с Delphi версии 6), так и под Linux. В CLX появилось множество новых возможностей, облегчающих процесс кроссплатформенной разработки, в частности, возможность использования условных указателей при компиляции (Delphi использует при компиляции одни библиотеки, а Kylix другие). Например:
Даже человеку, который не знаком с синтаксисом языка Pascal, должно быть понятно, что при запуске из среды Linux программа будет компилироваться с использованием библиотек, указанных в разделе {$IFDEF Linux}, а при запуске из Windows совершенно других, указанных в разделе {$ELSE}.
Библиотека CLX содержит несколько групп компонентов:
VisualCLX Основные кроссплатформенные компоненты. Свойства компонентов в этой области могут несколько разниться в Linux и Windows.
DataCLX Содержит компоненты, которые позволяют работать с базами данных.
NetCLX Содержит Internet компоненты, в частности набор компонентов Indy (Internet Direct) компании Nevrona Design (рис. 1).
RTL Библиотека Runtime Library.
Конечно, как и любой другой продукт, библиотека CLX не лишена и ряда недостатков. Для VCL на данный момент имеется огромное количество компонентов сторонних разработчиков, чего нельзя сказать о CLX. Многие компоненты, которые часто используются в Windows-приложениях, в CLX попросту отсутствуют, что затрудняет перевод приложений, использующих VCL, на новый стандарт.
Компания Borland также акцентировала внимание на тесной интеграции Kylix 2 и Delphi 6. Интерфейс продуктов внешне идентичен во всем, начиная от оформления среды разработки и заканчивая заставками при загрузке продуктов. Начиная с Delphi версии 6, при создании нового приложения имеется возможность выбора отдельного подпункта CLX Application (рис. 2). В этом случае Delphi создает программу с использованием только библиотеки компонентов CLX это означает, что данное приложение можно будет перенести на платформу Linux простой перекомпиляцией кода в Kylix 2 (если, конечно, программа не использует специфических для платформы Win32-функций). Для наглядной иллюстрации ниже приведен список библиотек, которые Delphi 6 добавляет в uses-лист программы при создании нового VCL- и нового CLX-приложения:
Для нового VCL-приложения: Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
Для нового CLX-приложения: SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls;
Как можно заметить, названия многих библиотек в CLX остаються неизменными, просто перед ними добавляется буква «Q» первая буква названия библиотеки Qt, которая была создана компанией TrollTech на языке С++ и содержит набор GUI-классов, достаточно близких по оформлению к стандартным элементам управления Windows (именно на основе Qt создана популярная графическая облолочка KDE). Но многие библиотеки (некоторые из которых используются достаточно часто) в CLX попросту отсутствуют (полный список соответствий библиотек VCL и CLX можно найти в help’е к Borland Delphi 6 в разделе Programming with Delphi > Using CLX for cross-platform development > CLX and VCL unit comparison), как, например, Messages аналога ей в CLX нет, так что если эта библиотека была задействована в вашем приложении, то придется искать какие-либо «окольные пути».
Все это, конечно, хорошо, но в основном для тех, кто только начинает создавать свое приложение «с нуля» и может использовать CLX с самого начала работы над проектом. Ведь до появления Delphi 6 о CLX никто и слыхом ни слыхивал (за исключением тех, кто работал с Kylix 1, который особой популярностью не пользовался), приложения же в подавляющем большинстве использовали VCL и встроенные функции ядра конкретной ОС, а так как структура Linux kernel отличается от структуры ядра Windows, то для использования таких приложений в Linux необходима будет определенная модификация их исходного кода. Очевидно, что чем чаще приложение будет использовать специфические особенности платформы Windows, тем значительнее будут затраты труда и времени на переработку приложения для использования аналогичных функций ОС Linux.
Но и для приложений, основанных на VCL, еще не все потеряно. Для того чтобы приложение, которое использует компоненты и функции этой библиотеки, переработать для использования библиотеки компонентов CLX, необходимо проделать следующие нехитрые манипуляции:
удалить из приложения или заменить аналогами все компоненты VCL, которые не были включены в состав CLX (к примеру, компонент TMemo присутствует как в CLX, так и в VCL, а вот TRichEdit только в VCL)
если приложение обращается к файлам на жестком диске, то необходимо переделать форму указания пути к ним (так как в Linux используется совершенно другая файловая система, и ваш диск C: может называться, к примеру, /mnt/hda1). Это же относиться к картинкам для кнопок и другим подобным элементам (работающее в Windows CLX-приложение ищет файл рисунка в C:\xxx\xxx.bmp, а это же приложение, запущенное из Kylix, не найдет данного файла, так как, по мнению ОС, он будет лежать в /mnt/hda1/xxx/xxx.bmp)
заменить названия библиотек в Uses-листе pas-файлов на указанные в CLX and VCL unit comparison, а также отказаться от использования тех библиотек, для которых в CLX нет функциональных аналогов
переименовать pas-файлы таким образом, чтобы имя файла абсолютно точно (с учетом верхнего/нижнего регистра, ведь Linux различает Main.pas и main.pas как два совершенно разных файла) соответствовало названию юнита в файле pas (например, если pas-файл начинается со строки «unit Main», то название этого файла должно быть Main.pas, а никак не MAIN.pas)
поменять расширение всех файлов *.dfm на *.xfm
во всех pas-файлах заменить строку {$R *.dfm} на {$R *.xfm}
в файле проекта (dpr) в uses-листе заменить ссылку на библиотеку Forms ссылкой на QForms.
После этого можно смело перекомпилировать исходники программы в Kylix (правда, необходимо будет заново назначить пути к рисункам, а также другим внешним файлам)
После всего сказанного за и против, можно вынести справедливый вердикт: такой продукт как Kylix необходим. Даже с учетом специфики перехода от VCL к CLX можно уверенно сказать, что перенос приложений под Linux этой средой разработки предельно упрощается и, вследствие этого, намного ускоряется. И сейчас к тем языкам программирования, которые используются в Linux можно по праву добавить и Object Pascal.
Что ж, если теперь, после того как вы прочли статью, у вас еще осталось желание испробовать Kylix в действии, то прошу любить и жаловать его почетным местом на вашем хард-драйве 60-дневный полнофункциональный дистрибутив Borland Kylix 2 Trial можно скачать с сайта Borland’a (http://www.borland.com) в формате tar.gz после регистрации. Обьем архива 69 Мб.
На сайте также доступна редакция Borland Kylix 2 Open Edition, предназначенная для создания программ с открытым исходным кодом в рамках проекта GNU General Public License.