Borland Kylix
Некоторые технические особенности Kylix
Типы создаваемых приложений и поддерживаемые графические оболочки
Технические требования к Kylix
Несколько слов о поддержке русского языка
Borland Kylix, первое средство быстрой разработки приложений для Linux, является, наверное, одним из самых необычных (и даже в определенной степени рискованных) проектов Borland. Проведя весной 1999 года на своем корпоративном сайте анкетный опрос разработчиков с целью оценить, насколько высок интерес к переносу основных средств разработки на платформу Linux, эта компания в сентябре того же года официально объявила о своем намерении создать Kylix — Linux-версию Delphi, своего самого популярного средства быстрой разработки приложений. И вот теперь мы можем наконец увидеть, что же из этого получилось.
Kylix представляет собой первое RAD-средство для платформы Linux (RAD — Rapid Application Development). Пользователям Delphi не составит особого труда освоить его — это средство использует тот же язык Object Pascal и практически такую же среду разработки, а также содержит похожий набор компонентов. Однако прежде чем обсуждать технические особенности Kylix, связанные главным образом со спецификой платформы, для которой он предназначен, следует понять, кому и зачем этот продукт нужен. Данная статья основана на предположении, что читателю известны основные возможности последних версий Delphi; читатели, не знакомые с ними, могут обратиться к прежним выпускам нашего журнала — статьи об этом продукте мы публикуем регулярно в течение последних шести лет.
Кому и зачем нужен Kylix
Ответ на этот вопрос не так прост, как это может показаться. Чтобы понять возможности использования продукта для той или иной платформы, следует оценить степень применения самой платформы в той или иной роли. В нашем случае речь идет о Linux, популярность которой велика во вполне определенных ролях — ее часто используют в качестве операционной системы, управляющей Web-сервером, иногда — в качестве платформы для серверной СУБД. Иными словами, в настоящее время Linux рассматривается главным образом как серверная платформа. Если ВОСПРИНИМАТЬ Linux исключительно в этой роли, RAD-средства класса Delphi можно, на первый взгляд, посчитать излишними — серверные приложения, включая расширения функциональности Web-серверов, не предназначены для применения конечными пользователями, следовательно, требования к пользовательскому интерфейсу у таких приложений минимальны.
Тем не менее использование Linux в качестве клиентской платформы, то есть платформы, на которой эксплуатируются приложения для конечного пользователя, вполне возможно — для Linux существуют графические среды, не уступающие Windows по удобству и функциональности, а в некотором отношении даже более гибкие и удобные. Тем не менее, несмотря на «бесплатность» самой операционной системы, есть, на мой взгляд, одна существенная деталь, ограничивающая сферу ее применения в качестве клиентской платформы. Дело в том, что российские пользователи, работающие на так называемых универсальных рабочих местах, где помимо собственно клиентских приложений для работы с корпоративными базами данных и иными серверными продуктами применяются и офисные приложения, вряд ли легко откажутся от ставших привычными Windows и Microsoft Office в пользу Linux и какого-либо офисного пакета для этой платформы — Corel Office не локализован, StarOffice все-таки не столь привычен и удобен (подождем, впрочем, выхода OpenOffice...). В результате может оказаться, что, сэкономив на операционной системе и офисных приложениях, руководители IT-подразделений потратят гораздо больше средств на переучивание пользователей.
Отметим, однако, что не на всех рабочих местах требуется наличие офисных продуктов — бывает, что на рабочем месте эксплуатируется одно-единственное приложение, зато самих рабочих мест на предприятии — десятки и даже сотни. Примерами таких специализированных рабочих мест могут быть кассовые терминалы, рабочие места операционистов банка, да и многие другие приложения в самых различных областях деятельности. И вот тут-то уже применимость платформы в качестве клиентского рабочего места определяется в первую очередь наличием для нее RAD-средств и универсальных механизмов доступа к данным, а также стоимостью самой операционной системы. RAD-средство для Linux теперь есть, универсальные механизмы доступа к данным входят в его состав (какие именно, мы обсудим чуть позже), сама операционная система доступна бесплатно — или почти бесплатно. Поэтому для некоторых типов рабочих мест применение Linux в качестве клиентской платформы сегодня, после выхода Kylix, может оказаться вполне рентабельным.
Отметим также, что Delphi — достаточно универсальное средство разработки приложений, и серверные приложения (например, Web-приложения) с его помощью создавать тоже можно. Естественно, их можно создавать и с помощью Kylix — этот продукт обладает очень неплохим набором компонентов для создания расширений Web-сервера Apache, что, с учетом удобных механизмов доступа к базам данных, делает его неплохим инструментом для создания динамических Web-сайтов на базе Linux. Статью Никиты Попова «Разработка Internet-приложений с использованием Borland Delphi и Kylix» о подробностях их создания вы сможете найти в спецвыпуске этого номера журнала.
Итак, мы видим, что Kylix имеет две достаточно очевидные области применения: создание клиентских приложений для корпоративных информационных систем с целью оснащения ими специализированных рабочих мест, а также создание Web-приложений. Поэтому следует ожидать, что этот продукт займет некоторую долю рынка средств разработки. Можно предположить, что найдется определенное число компаний, которые готовы использовать Linux в качестве клиентской платформы при наличии подходящих средств быстрой разработки приложений и, следовательно, являются потенциальными пользователями Kylix. Впрочем, пока я не берусь оценивать их количество в нашей стране. Поживем — увидим...
Все сказанное выше было адресовано главным образом руководителям проектов, IT-менеджерам и иным специалистам, выбирающим платформу для клиентских приложений. Что же касается разработчиков, которым предстоит создавать приложения, то для них предназначена вторая часть статьи, где будут кратко рассмотрены основные технические возможности Kylix. Ее вы сможете найти на нашем CD-ROM.
Некоторые технические особенности Kylix
Как мы уже говорили, пользователям Delphi не составит особого труда освоить Kylix. Убедиться в этом несложно: достаточно взглянуть на среду разработки Kylix (рис. 1) — и мы увидим, что, на первый взгляд, его отличия от Delphi невелики.
Отметим, однако, что Linux и Windows — принципиально разные платформы. Мы знаем также, что в компонентах и классах Delphi Visual Component Library (VCL) использовались многие особенности, характерные только для Windows, такие как специфические для этой платформы элементы управления, очереди сообщений, COM и др. Поэтому внешнее сходство Kylix и Delphi в определенной степени обманчиво — «внутри» эти продукты все же устроены по-разному. Но поговорим обо всем по порядку.
Типы создаваемых приложений и поддерживаемые графические оболочки
С помощью Kylix можно создавать стандартные двоичные исполняемые файлы формата ELF (Executable and Linking Format), а также библиотеки (Shared Objects). Приложения с графическим пользовательским интерфейсом, созданные с помощью Kylix, можно выполнять под управлением графических оболочек KDE или GNOME. Можно также создавать консольные приложения, которые вызываются на выполнение из командной строки.
Библиотека классов CLX
Поскольку применение библиотеки VCL в Linux и даже ее адаптация к этой платформе не представляются возможными ввиду использования в ней многих специфических особенностей Windows, для Kylix была разработана другая библиотека классов и компонентов — CLX (Component Library for Cross-platform), являющаяся не зависимой от платформы надстройкой над библиотеками Qt.
Так как библиотека CLX не зависит от платформы, она может быть использована и в Linux, и в Windows. Поскольку в ожидаемую, шестую версию Delphi эта библиотека, наряду с уже привычной библиотекой VCL, также будет включена, станет возможным создание приложений, переносимых между двумя этими платформами, с помощью Delphi 6 или Kylix. В этом случае можно будет использовать условную компиляцию для указания модулей, требующихся для Linux- или Windows-приложения, которые должны быть включены в проект.
Модули, входящие в состав CLX, можно разбить на четыре группы:
- BaseCLX содержит базовые классы и функции CLX, такие как функции ввода-вывода, обработки строк, обработки исключений. В частности, в BaseCLX входят модули System, SysUtils, Classes.
- VisualCLX содержит классы, необходимые для визуальных компонентов. Эта часть CLX отличается от соответствующей части VCL, поскольку основана на других библиотеках интерфейсных элементов. В частности, в CLX визуальные компоненты являются наследниками не класса TWinControl, содержащего реализацию обработки сообщений Windows, а класса TWidgetControl, реализующего общую функциональность всех элементов управления библиотеки Qt. Компоненты и классы VisualCLX, как правило, несколько отличаются от сходных по функциональности компонентов и классов VCL — обычно у них разные списки свойств и методов; исключением здесь является класс TCanvas. Впрочем, в браузере объектов Kylix класс TWidgetControl почему-то отсутствует, зато есть класс TWinControl (рис. 2). Будем надеяться, что и все остальные погрешности в этом продукте будут столь же незначительны.
- DataCLX содержит классы, позволяющие создавать приложения, которые используют базы данных. Эта группа модулей состоит из двух частей: библиотеки визуальных компонентов для отображения и редактирования данных и библиотеки dbExpress, предназначенной для обеспечения доступа к данным.
- Библиотека dbExpress содержит компоненты доступа к данным и драйверы баз данных (список их зависит от того, какая редакция Kylix используется; спецификация dbExpress, разработанная Borland, является открытой). Эта библиотека не имеет отношения к BDE, традиционно использовавшейся в Delphi. Дело в том, что BDE, наследница библиотеки Paradox Engine, несмотря на наличие средств доступа к данным серверных СУБД, сохранила многие черты библиотеки доступа к настольным базам данных, ориентированной на манипуляцию данными с помощью средств файловой системы, что в ряде случаев негативно проявлялось при создании клиентских приложений для серверных СУБД. Естественно, переносить BDE на новую платформу было неразумно, и вместо этого была создана новая библиотека доступа к данным dbExpress, представляющая собой не зависящий от платформы универсальный механизм доступа к данным.
Хотя сама по себе библиотека dbExpress позволяет создать только однонаправленный курсор, в модулях DataCLX содержится класс TClientDataSet, реализующий кэширование данных на стороне клиента и организацию двунаправленной навигации внутри этого кэша.
Помимо этого DataCLX содержит компоненты для обеспечения соединения с базой данных, средство слежения за запросами — SQL monitor, а также ряд компонентов — наследников класса TDataSet, предназначенных для выбора и редактирования данных (рис. 3).
NetCLX содержит классы для создания сетевых и Web-приложений (рис. 4). В частности, в эту часть CLX входят классы для доступа к сокетам, а также компоненты WebBroker, хорошо знакомые пользователям Delphi. В этой версии Kylix поддерживается создание CGI-приложений и библиотек, являющихся расширениями для Web-сервера Apache — Dynamic Shared Objects (DSO).
Чего нет в Kylix
Как заметили многие из моих коллег, состав палитры компонентов и набор экспертов Kylix напоминают скорее первую, еще 16-разрядную версию Delphi, нежели Delphi 5. Это неудивительно — ведь в Linux нет поддержки COM, поэтому, естественно, не стоит ожидать ни соответствующих страниц в палитре компонентов (таких как ActiveX, Servers и др.), ни соответствующих экспертов в репозитарии. И тем не менее в Kylix поддерживаются данные типа Variant и интерфейсы — ведь и то и другое нужно не только для поддержки COM.
Тем не менее многие возможности среды разработки соответствуют возможностям, имеющимся в Delphi 5. В частности, практически аналогичны возможности, предоставляемые отладчиком, а также диалоговые панели опций проекта, инспектора объектов, менеджера проектов и многое другое. Отметим также, что в Kylix предусмотрены некоторые эксперты и компоненты, отсутствующие в Delphi 5, но ожидаемые в Delphi 6, в частности компоненты и драйверы dbExpress, а также набор созданных компанией Nevrona Designs компонентов INDY (Internet Direct) для разработки Web-приложений (о них мы уже писали в апрельском номере нашего журнала, рис. 5).
Кроме того, в Kylix нет других компонентов, созданных сторонними производителями, — TeeChart, QuickReport, DecisionCube, реализующих простейшую функциональность Business Intelligence. Так что проблему использования деловой графики, простейшего анализа данных и, что самое важное, подготовки и печати отчетов по базам данных придется решать отдельно. Впрочем, на рынке программного обеспечения средства Business Intelligence представлены достаточно широко и их выбор отнюдь не ограничивается продуктами для Windows, поэтому эти проблемы в принципе разрешимы (подробности об основных производителях этих средств содержатся в обзоре средств Business Intelligence, опубликованном в КомпьютерПресс № 3’2001, а также в книге «Базы данных для всех», готовящейся к выпуску издательством «КомпьютерПресс» этим летом). Кроме того, вполне возможно, что сторонние производители довольно быстро создадут компоненты или утилиты, решающие эти проблемы, — например у TurboPower Software, ведущего производителя компонентов и утилит для Delphi и C++Builder, уже существуют продукты для Kylix. И не только у TurboPower — в коробке с Kylix есть целый компакт-диск с компонентами, примерами кода, руководствами пользователя, предоставленными сторонними производителями.
Технические требования к Kylix
Для применения Kylix требуется не так уж много — 64 Мбайт оперативной памяти, Pentium-200, 175 Мбайт свободного места на жестком диске.
Отметим, однако, что Kylix можно использовать не с любой версией Linux. Если исходить из официальной информации, помещенной на сайте компании Borland, Kylix гарантированно работоспособен в Red Hat 6.2 и выше, Mandrake 7.2 и выше, SuSE 7.0 и выше. Это не значит, что его нельзя применять и в других версиях Linux, но в их отношении нет никаких гарантий. Например, в Caldera OpenLinux e-Desktop 2.4 этот продукт мне установить не удалось.
В связи с этим следует заметить, что появление продуктов такого класса, как Kylix, заставляет всерьез задуматься о том, каковы должны быть стандарты на операционные системы с открытыми исходными текстами. То, что с помощью Kylix нельзя перекомпилировать ядро Linux (Kylix предназначен вовсе не для этого!), не означает, что этого нельзя сделать в принципе — просто для этой цели используются другие компиляторы, известные всем, кто занимается написанием модулей для ядра Linux. А некорректное внесение изменений в ядро операционной системы может, по крайней мере теоретически, сделать некоторые приложения неработоспособными. Как же в этой ситуации защитить интересы создавших их разработчиков? Наверное, на сегодняшний день существует единственный способ — указать конкретные версии дистрибутивов конкретных производителей, в которых работоспособность как самого средства разработки, так и созданных с его помощью приложений будут гарантирована. Что, собственно, и было сделано.
Различные редакции Kylix
Kylix в настоящее время доступен в двух редакциях: Server Developer и Desktop Developer.
Kylix Desktop Developer содержит средства создания настольных приложений, включая приложения для работы с базами данных. Kylix Server Developer включает помимо этого средства создания Web-приложений, а также драйверы dbExpress для доступа к серверным СУБД производства Oracle и IBM DB2 (в дополнение к уже имеющимся в Desktop Developer драйверам dbExpress для Interbase и MySQL). Ожидается выпуск еще одной редакции, Kylix Open Edition, предназначенной для создания программного обеспечения, свободно распространяемого в соответствии с GNU General Public License (GPL). Эта редакция может быть доступна бесплатно на Web-сайте Borland или по относительно невысокой цене — в случае заказа ее на компакт-диске.
Подробности о различных редакциях Kylix можно найти по адресу http://www.borland.com/kylix/k1/features.html.
Несколько слов о поддержке русского языка
Поддержка русского языка является одним из важнейших вопросов применимости Linux на территории нашей страны. Известно, что сейчас широко используется несколько различных кодировок для русского языка и общепринятым стандартом для Linux является кодировка KOI-8r. Именно она и поддерживается в Kylix.
Помимо поддержки кодировки как таковой для успешного применения приложений Kylix требуется также наличие раскладки клавиатуры и клавиатурного переключателя, совместимых с Windows и не зависимых от дистрибутива Linux и графической оболочки. Подробности о настройке клавиатурного переключателя и раскладки клавиатуры, удовлетворяющей этим требованиям, можно узнать по адресу http://www.borland.ru/kylix/linux_ru.htm.
Заключение
Итак, первое RAD-средство для Linux, в создание и тестирование которого было вложено немало сил и средств, наконец поступило в продажу. Теперь мы видим, что его освоение не представляет особого труда для пользователей Delphi. Да и тем, кто ранее с Delphi не работал, думаю, освоить его будет не слишком сложно — RAD-средства такого класса и качества, как правило, не очень сложны в освоении. Остается лишь пожелать этому продукту счастливой судьбы.
КомпьютерПресс 6'2001