(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Приложения для Linux - вариант Kylix

Арсений Чеботарёв

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

Желательно получить приложение, которое "если что" можно выпустить в версии для нескольких ОС, получая в результате простор для маневра. Вариантов для этого несколько:

  • использовать Delphi и Kylix. Если проект уже разработан на Delphi - и особенно с использованием переносимых компонент - то задача еще более упрощается. Полученное приложение может работать на обеих платформах, или говоря более сложным языком - в гетерогенных средах. У Kylix есть несколько преимуществ перед остальными вариантами: мощный оптимизированный код, знакомый многим разработчикам интерфейс, доступность самой системы. К недостаткам можно отнести ограниченный ареал применения - только на системах Linux с определенным набором библиотек, хотя распространение Kylix это только вопрос времени;
  • использовать Java и, например, ONE Studio, на "обеих трех" платформах. Это тоже очень хороший вариант: приложения не потребуют перекомпиляции, доставку можно осуществлять по интернету, да еще и не одним способом. Единственный drawback - это определенные требования, предъявляемые к системам разработки и выполнения, в частности к объему памяти и к пропускной способности сети;
    вариант номер три - использовать характерные для Unix средства разработки, делая пользовательский интерфейс на Tk/Tcl и/или courses. В качестве языка написания логики удобно использовать perl, Python или, если вам так проще,- C. Это во многом героический путь, поскольку инструменты разработки таких программ не отличаются интуитивной понятностью - например, на изучение Emacs может уйти полгода. Зато полученный код будет самым "честным" и легко переносимым на все открытые платформы;
  • сравнительно сложный, хоть и самый универсальный путь - создание полнометражного веб-приложения, например, на perl или PHP. Это потребует некоторых условий, таких как наличие собственного (виртуального) сервера с широкими полномочиями - зато такое приложение будет совершенно нейтрально к среде выполнения. Говоря по правде, это решение совсем несправедливо занимает предпоследнее место - просто это отдельный разговор, не совсем касающийся того, о чем я собираюсь рассказать;
  • пятый путь - запускать приложения в режиме эмуляции ОС. Эта тема будет рассмотрена в данном номере. Из числа универсальных виртуальных машин выделяются VMWare и VirtualPC. Большой недостаток всех этих эмуляторов - проблемы совместимости и, кроме того, падение производительности (примерно вдвое). Ко всему прочему, такие методы, по сути, не относится к методам кроссплатформенной разработки.

В дальнейшем мы рассмотрим Kylix с, так сказать, гуманитарной точки зрения. Подразумевается, что я не ставлю себе цели научить вас программировать - и, тем более, не собираюсь описывать пункты меню. Моя задача - показать вам, что в той или иной среде разработки может оказаться полезным и как с минимальным дискомфортом установить инструмент на свой компьютер. Остальное, как говорится, RTFM.

Kylix

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

При ближайшем рассмотрении современный Kylix в третьей инкарнации содержит в себе две оболочки IDE: для разработки приложений на языке, который Borland именует "языком Delphi" и который известен также как объектный Паскаль. Кроме того, в Kylix можно разрабатывать программы на С++ в оболочке, воспроизводящей CBuilder. Следует признать, что работа по переносу стиля и ощущения Delphi/CBuilder была проделана немалая - с первого взгляда отличить Kylix от Delphi практически невозможно (не считая KDE widgets).

Построение переносимого кода

В основе переносимого кода Delphi-Kylix лежит независимый от платформы формат модулей и архитектура CLX. Последнее обозначает Borland Component Library for Cross-Platform. В результате компиляции строятся файлы в естественном для Linux формате ELF, а также в формате общих библиотек.so. Как и Delphi, Kylix использует прямую компиляцию в процессорные команды, то есть скорость приложений сопоставима с кодом на С++.

Как и в случае с Delphi, разработчик может (в ущерб переносимости) использовать системные функции, а также вызовы Linux API и других специфичных для платформы библиотек. Если вы разрабатываете компонент CLX, используя вызовы низкого уровня, и хотите сделать его универсальным,- можете использовать условную компиляцию, проверяя, определены ли символы LINUX и WIN32 соответственно c помощью предложения $IFDEF/#ifdef. Для абсолютных экстремалов по-прежнему существует возможность писать фрагменты кода на inline-ассемблере.

Для того чтобы писать переносимый код, предназначенный для обоих платформ, не следует использовать другие (кроме изоляции системных вызовов) особенности платформы: реестр Windows, вызовы оконных функций SendMessage и PostMessage и т.п. Не следует также забывать, что в Linux имена файлов и каталогов всегда учитывают регистр, так что следует обратить внимание на их правильное написание, в случаях когда имена задаются литерально.

Доступ к базам данных

Если под Windows возможно несколько методов доступа к базам данных, то для Linux единственным методом является прямое подключение к SQL-серверу через прилагаемый драйвер. Из компонентов доступа "на выбор" только dbExpress, через который поддерживаются распространенные базы данных: DB2, Informix, Interbase, MySQL, Oracle и PostgreSQL.

Фактически dbExpress - это очень тонкий и прозрачный уровень, непосредственно переводящий запросы в сервер. При запросах к базам данных dbExpress порождает локальные копии данных, освобождая сеанс с сервером. В процессе запроса предусмотрены трансформации данных, вычисляемые поля и запросы с параметрами. После запроса пользователь работает с полученной копией данных, внося изменения в удаленные таблицы в режиме пакетных транзакций. Для оптимизации трафика применяются режимы групповой пересылки обновлений, а также отложенная загрузка BLOB-объектов.

После получения локального набора данных значения столбцов поступают в привязанные к данным элементы управления по упрощенной схеме. То есть исключаются дополнительные передачи данных, как происходит в случае ODBC или ADO. Такой подход поощряет делать клиентскую часть приложений "тонкой", перенося бизнес-логику в хранимые процедуры на сервер баз данных. Это, в свою очередь, делает приложения эффективнее, снижает трафик и делает уровень бизнес-логики независимым от платформы.

Дополнительно к внешним источникам данных в Kylix входит персональная, основанная на XML база данных - MyBase. Таблицы этой БД хранятся полностью в памяти, поскольку она рассчитана на молниеносную производительность. Код поддержки MyBase встраивается в сам откомпилированный модуль и занимает около 300 Кб, так что не требует ни отдельных файлов, ни отдельной инсталляции. Тем не менее, эта "детка" понимает синтаксис SQL 92, сложные отношения между таблицами, декларативную целостность, триггеры и так далее. Полезной окажется также и возможность непосредственного создания таблиц MyBase как результата запроса к внешним данным.

Сетевые возможности

Встроенные в Kylix протоколы интернета широко и исчерпывающе представлены палитрами компонент Indy, которые названы так в честь независимых разработчиков. Палитр, ни много ни мало, целых пять:

  • Clients. С TCP, UDP, HTTP, POP3, SMTP все ясно. Не поленились реализовать также и, например,Gopher и IRC. Для приверженцев командной строки существуют telnet, rsh и rexec - так что опытный администратор может построить исключительно удобные для него инструменты удаленного администрирования;
  • Servers. Реализованы практически все распространенные в Сети серверы. На этой же палитре в наличии также два полезных компонента для построения туннельных подсетей - Tunnel Master и Tunnel Slave;
  • Misc. В эту категорию попали различные кодировщики, например MIME и UUEncode,- так же как и ряд дополнительных компонентов. Несколько компонентов упрощают организацию многопоточного выполнения, характерного для асинхронных сетевых запросов;
  • Intercepts. Перехватчики трафика, или фильтры, созданы для "навешивания" кода на другие протоколы с целью ведения журналов отладки, для кодирования-декодирования и сжатия трафика "на лету";
  • IO Handlers. Смысл всех этих компонент - заменить чтение сокетов на более привычный асинхронный поточный ввод-вывод. Весьма полезным и интересным компонентом является ограничитель пропускной способности - на его основе можно строить качественные и надежные приложения.

Веб-программирование представлено двумя поколениями инструментов. Во-первых, это компоненты палитры Internet, представляющие традиционный для Delphi набор WebDispatcher + PageProducer. Несколько сложная на практике технология - в частности, из-за отсутствия встроенного визуального редактора шаблонов. В Kylix, что естественно, сервер приложений взаимодействует с сервером Apache. Хорошей новостью является тот факт, что такое приложение, перенесенное в среду Windows, станет работать и с Apache для Windows.

Второй подход к веб-программированию - компоненты, представленные на WebSnap.

BizSnap, WebSnap, DataSnap

Эти технологии напрямую связаны с такими вещами, как XML, SOAP и веб-сервисы. Несмотря на довольно прихотливую терминологию и наличие нескольких трудных мест, в основе веб-сервисов лежит несколько простых принципов: для представления данных и удаленных команд используется протокол HTTP, поверх которого передаются специально оформленные в формате SOAP блоки XML данных. Подобно тому как класс ActiveX или JavaBean способен самостоятельно перечислять свои методы и тип их параметров, точно так же Web Services, установленные на сервере, могут быть исследованы с помощью протокола WSDL. Таким же образом в виде XML организованы вызовы и возврат значений удаленных объектов в модели CORBA. Частным, но исключительно важным типом передаваемых в XML данных являются таблицы как результат запросов к СУБД - фактически многие SQL-серверы представляют результаты запросов именно в этом виде.

Из-за обширности темы на этом я и закончу, а всех, кто интересуется данными технологиями, отсылаю к документации по Snap'ам.

Инсталляция

Официальные требования к целевой платформе разработки следующие:

  • Intel Pentium II/500 МГц;
  • 256 Мб RAM (обратите на этот параметр особое внимание!);
  • CD-ROM;
  • SVGA;
  • мышь;
  • место на диске:
    • 250 Мб Open Ed.,
    • 350 Мб Pro Ed.,
    • 500 Мб Enterprise Ed.

Система тестировалась на таких дистрибутивах:

  • Red Hat® Linux 7.2;
  • Mandrake™ 8.2;
  • SuSE® Linux 7.3.

Впрочем, вы можете установить Kylix практически на любой дистрибутив Linux и BSD, однако в некоторых случаях придется проделать установку библиотек и настройку путей вручную. Перед установкой системы можно убедиться, что ваш дистрибутив Linux удовлетворяет требованиям Kylix'а, а именно:

  • некоторые версии загрузчика libc могут привести к нарушению данных при загрузке и выгрузке общих объектов, в результате чего возникают ошибки сегментации в совсем других программах. Kylix тоже подвержен этой "болезни" и не станет инсталлироваться, если установлена эта версия libc. Эта проблема решена в libc 2.2 или в патче к 1.2.1;
  • Kylix и полученные приложения требуют glibc версии 1.2.1 или более поздней, ядро версии, как минимум, 2.2 и библиотеку libjpeg 6.2.

Все современные дистрибутивы Linux удовлетворяют этим условиям, но часто указанные библиотеки скрываются под различными типами инсталляции. Например, ASP Linux 7.3, установленный в режиме "экспресс-инсталляция", не обладает всеми необходимыми компонентами, и инсталляция вылетит с кодом ошибки 10. С другой стороны, Red Hat 7.1, установленный в режиме Workstation, не вызывает никаких проблем с Kylix.

Для проверки валидности вашей системы существует специальная утилита - borpretest - расположенная в одноименном каталоге на дистрибутивном диске. Для выполнения всех проверок в автоматическом режиме запустите командный файл /mnt/cdrom/borpretest/testsystem. Это не даст 100-процентной гарантии: на том же ASP данный тест выдает Looks Good, но инсталляция не завершается. Так что на тест надейся, но если что - придется устанавливать недостающие пакеты вручную.

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

Если borpretest обнаружит какие-то проблемы, то с вопросом о том, как их решить, обращайтесь к файлу /mnt/cdrom/PREINSTALL. После проверки системы (или без таковой) запускаете /mnt/cdrom/setup.sh. Инсталляция предлагает на выбор несколько типичных опций (вроде путей инсталляции и устанавливаемых компонент) - но в основном отличается исключительной прямолинейностью. Фактически все сводится к тому, чтобы трижды ответить Ok.

Важное замечание: вы можете инсталлировать Kylix под административным (root) или пользовательским аккаунтом. В первом случае файлы приложения будут размещены в каталоге /usr/local/kylix3, причем примеры попадут только к вам в домашний каталог - и чтобы сделать их доступными другим, вам придется или скопировать, или назначить пользователям доступ к этим файлам в режиме чтения. Если Kylix устанавливается обычным пользователем, то все файлы, и программы и данные попадут в подкаталог домашнего каталога.

Вместе с Kylix'ом на диске (в каталоге /dev/cdrom/jre) находится также и инсталляция Java RunTime версии 1.3.1. Это пакет rpm.bin, предназначенный для установки через командный процессор sh. Обратите внимание: на самом пакете не установлен флаг исполнения, поэтому запустить установку с лазерного диска вы не сможете. Для инсталляции Java вам понадобится скопировать его куда-то:

rm /tmp/j2re*
[mount -t iso9660//cd9660 /dev/cdrom /mnt/cdrom///cdrom]
cd /mnt/cdrom/jre/* /tmp
[umount /dev/cdrom]
chmod 777 /tmp/j2re*
/tmp/j2re*
rm /tmp/j2re*

Документация как основа успеха

Вопрос успешности того или иного продукта часто зависит от наличия доступной и удобной документации. Признаюсь откровенно: документация по Delphi очень долгое время была для меня главным источником информации по многим аспектам Windows. Думаю, многие скажут то же самое. Замечательный Delphi Help содержит в себе исчерпывающую и доступную информацию не только по Паскалю, но также и по Win API, Win32 и технологии OLE/COM. Вполне естественно было ожидать такого же качества и от Kylix. Понятно, что вы не найдете здесь описания Win32, но зато представлены сведения о доступных разработчику средствах из арсенала Linux - libc, XFree и, конечно, полные сведения о компонентах CLX. Справка Kylix Help выполнена в формате HyperHelp и внешне больше похожа на справку в Windows 3.11, но поскольку оглавление и поиск в наличии - то это не вызывает никаких неудобств.

Чего бы еще пожелать?

Создание моих первых приложений в Kylix прошло без проблем и неожиданностей. Камнем преткновения при создании реального приложения стало отсутствие современных средств для визуальной разработки и отладки отчетов и шаблонов веб-страниц. Было бы прекрасно создать такой инструмент - причем сделать его полиморфным для генерации как HTML-шаблонов, так и отчетов в распространенных форматах PDF, PostScript, TeX.

Другим крайне полезным инструментом мог бы стать интегрированный UML-редактор со встроенной поддержкой отображения как существующих, так и пользовательских CLX-классов, и автоматической генерацией кода и таблиц. Фактически многие UML-редакторы третьих производителей поддерживают CLX-классы, но встроенный инструмент мог бы работать на уровне максимальной интеграции.

Конечно, применение RAD провоцирует легкомысленное отношение к кодированию, так что вместе с Kylix в Linux придут и "кудесники от Access". Мы живем в эпоху массового производства, с этим уже поздно бороться - и все же: будете писать на Kylix - делайте это хорошо, плз!

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 22.06.2003 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Stimulsoft Reports Server Team 10 users
Quest Software. Toad for Oracle Development Suite
ABBYY Lingvo x6 Европейская Домашняя версия, электронный ключ
ABBYY Lingvo x6 Английская Профессиональная версия
Quest Software. TOAD Xpert Edition
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Один день системного администратора
3D и виртуальная реальность. Все о Macromedia Flash MX.
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100