Платформонезависимая разработка программ
ArticleCategory: [Choose a category, translators: do not translate
this, see list below for available categories]
Software Development
AuthorImage:[Here we need a little image from you]
TranslationInfo:[Author + translation history. mailto: or
http://homepage]
original in de Michael Tschater
de to en Jürgen Pohl
en to ru Лебедев Александр Сергеевич
AboutTheAuthor:[A small biography about the author]
В настоящее время Michael занимается разработкой программного обеспечения взаимодействующего
с аппаратными средствами. Работая над очередным проектом решил рассмотреть вопросы стратегии
выбора среды разработки.
Abstract:[Here you write a little summary]
Практически любым оборудованием, используемым в индустрии, можно
управлять через сеть. Программа, запускаемая пользователем работает как
обычный клиент, получая и отправляя данные. На следующей диаграмме
зеленым цветом показано в каком месте коммуникационной схемы она
располагается:
В большинстве программ обычно пишут на какой операционной системе они
работают. Читатели этого журнала используют Linux, и все же другие
операционные системы, к примеру, Windows, также популярны среди
пользователей. В принципе, приложения не должны от них зависеть, на
любой платформе пользователь все должен понять интуитивно.
Эта статья покажет, что выбор специфичной платформы для приложения
необязателен, и что возможно написать программу, которая будет
компилироваться на разных операционных системах. При написании статьи
использовались ПК с двумя операционными системами - Linux и Windows.
Возможно, программы запускались бы и на Mac, и на MacOSX, но в данный
момент проверить это невозможно из-за отсутствия необходимого
оборудования.
ArticleIllustration:[One image that will end up at the top of the
article]
ArticleBody:[The main part of the article]
В независящих от операционной системы библиотеках существует два
различных способа отображения пользовательского интерфейса:
- Собственные библиотеки: для отображения элементов используются
системные ресурсы. Это позволяет всем приложениям иметь стандартный
интерфейс. Эти библиотеки различаются в зависимости от операционной
системы, например, стандартный интерфейс под Linux отличается от
Windows 2000 или XP.
- Второй способ предполагает, что все функции по отображению
графики будет выполнять сама программа, поэтому интерфейс будет
одинаков на любой системе.
Кроме того, технические параметры самого пакета играют отнюдь не
последнюю роль. Обычно в качестве этих параметров принимают следующие
факторы присутствующие в этих пакетах, именно их мы и будем сравнивать:
- Среда программирования: встроенные среды программирования
(например GUI конструктор, генератор makefile`ов) упрощают разработку
программ.
- Документация и поддержка: хорошая документация может существенно
помочь при появлении проблем.
- Расходы на лицензию: пока что большинство библиотек легко
доступны и бесплатны для личного использования, для коммерческих же
библиотек характерна высокая цена.
- Возможные проблемы при портировании программ.
В данном случае еще один вопрос должен быть принят в расчет, однако это
применимо не ко всем проектам:
- Приложение использует собственные средства управления, которые
она интегрирует в систему, при этом пользователь не должен видеть
разницы в программе, запускаемой на разных системах.
Внизу, на картинке, показано, какое место в модели занимают библиотеки:
Языки программирования
Первый критерий по-которому мы будем отбирать пакеты - это языки
программирования. Вот те из них, о которых мы будем подробно
рассказывать:
- C/C++ библиотеки
- Java
- Kylix
- Smalltalk
- Mozilla
Другие языки детально будут рассмотрены когда они станут более
популярны среди программистов.
Простое приложение
Для сравнения различных пакетов, создадим простое приложение, используя
все библиотеки, которые можно генерировать. Приложение не блещет
особой функциональностью, но тем не менее оно наглядно показывает
наиболее важные части его работы. Windows-приложения создавались при
помощи Visual C++ 6.0 и ее основной библиотеки классов - MFC,
остальные пакеты сравнивались с ним обычным просмотром. В качестве
Linux-дистрибутива я использовал RedHat Fedora Core 2 и Debian 3.0.
Скриншот в Windows 2000 и Windows XP (исходный код для Visual C++ здесь (win32_src.zip)).
C/C++ библиотеки
Trolltech Qt
Qt - это библиотека классов от норвежской компании Trolltech для
платформонезависимого программирования на С++. Оконный менеджер KDE
основан именно на этой библиотеке. Поначалу QT была разработана под
лицензией недоступной для большинства пользователей. По этой причине
была создана библиотека GTK+, которая стала основой для нового
оконного менеджера - Gnome. Тем временем, Linux-версия, так же как и
MacOS-версия, вместе со всеми исходниками стала доступна по лицензии
GPL. Для Windows, QT все еще является коммерческой. Trial-версию можно
загрузить с домашней странички, но она довольно сильно отличается от
коммерческой версии. В дальнейшем я про нее расскажу более подробно.
Эта версия также требует регистрации.
Кроме того, в версиях для Windows и некоторых разновидностях
Linux(Unix) и Mac, предоставляются инструменты для администрирования.
Установка библиотеки под Linux прошла, как и ожидалось, без проблем,
включая графические утилиты, такие как QT Designer. Вместе с ней
поставляется подробная документация и множество примеров. Qt Designer
создает на выходе XML-файл с кодом для GUI. При помощи программы
qmake, из пакета Qt -Tool, вы можете создать из него Makefile. Makefile
генерируется из исходника С++, в котором описана структура GUI
(Qt-Tool: uic) и вызывает Meta Object Compiler (Qt-Tool: moc).
Последний транслирует код QT обратно в исходник С++. После этого
запустить
программу можно с помощью стандартной команды make.
Для генерирования исходников вручную понадобится следующая
последовательность команд (входным файлом является MyDialog.ui):
- uic MyDialog.ui > MyDialog.h
- uic -impl MyDialog.h MyDialog.ui > MyDialog.cpp
- moc -o moc_MyDialog.cpp MyDialog.h
Скриншот в Linux и Windows 2000 (исходный код для QtDesigner здесь (qt_src.tar.gz)
Обзор Qt
Имя:
|
Trolltech Qt
|
Версия:
|
3.3.2
|
Операционные системы:
|
Linux, Win32, MacOS, Solaris, IRIX, AIX, HP-UX
|
Язык программирования:
|
C++
|
Лицензия:
|
GPL или коммерческая лицензия
|
Преимущества: |
- является основной библиотекой для KDE Windows Manager в
Linux
- инсталляционные пакеты присутствуют во многих стандартных
дистрибутивах (установка очень простая)
- настраиваемые средства управления под Windows
- мощная среда программирования
- проверенный временем
- поддержка со стороны свободных разработчиков позволила
изменить код MFC
|
Недостатки: |
- возможны большие лицензионные отчисления (дорогой)
- ошибки во время установки под Windows
|
Среда программирования:
|
QtDesigner, KDevelop
|
WWW: |
http://www.trolltech.com |
Документация:
|
руководства, справочники, списки рассылки
на http://doc.trolltech.com/3.3/index.html
|
Крупные проекты:
|
- KDE Desktop (Default e.g. with SuSE)
- Opera Browser
- Photoshop Album
|
Дистрибутив:
|
широко распространен
|
wxWidgets
Пакет wxWidgets появился около 12 лет назад, до определенного времени
он носил имя wxWindows, но после "переговоров" с Microsoft его
пришлось изменить. wxWidgets включает в себя огромную коллекцию
различных классов, которые можно использовать в приложении. Множество
примеров доказывают, что wxWidgets является очень мощным проектом.
Процесс программирования чем-то напоминал Visual C++ и закончился
успешно.
Недостатки проявились при использовании wxWindows 2.4.2 на системе
RedHat Fedora Core 2 при компилировании программы. Причиной тому было
то, что GTK+ обращался к закрытым функциям обновленной версии GTK+, а
в ней запрещалось это делать, но это не серьезная проблема. Все
отлично заработало после подключения стандартной библиотеки GTK+. В
Debian все прошло без проблем.
Инсталляция под Windows не показала каких-либо ошибок.
Скриншот в Linux и Windows 2000 (исходный код для wxWidgets здесь).
Обзор wxWidgets
Имя:
|
wxWidgets
|
Версия:
|
2.4.2
|
Операционные системы:
|
Linux, Win32
|
Язык программирования:
|
C++
|
Лицензия:
|
LGPL |
Преимущества:: |
- достаточно прост в обращении (много примеров).
- очень хорошая документация.
|
Недостатки:
|
- Проблемы с комбинацией Fedora Core 2 - wxWindows2.4.2
|
Среда программирования:
|
|
WWW: |
http://www.wxwidgets.org
|
Документация:
|
руководства, справочники, списки рассылки
на http://wiki.wxwidgets.org |
Крупные проекты:
|
AOL Communicator |
Дистрибутив:
|
не очень широко распространен
|
GTK+ и gtkmm
Акроним GTK+ означает "The GIMP Toolkit". Два хорошо известных проекта,
основанных на нем - Gnome Windows Manager, часть любого стандартного
Linux-дистрибутива, и графический редактор GIMP. Как и KDE (смотрите
QT), Gnome является очень мощной графической оболочкой под Linux. Во
многих дистрибутивах Gnome устанавливается по-умолчанию. По сравнению с
предыдущей, новая версия GTK+ более стабильна и функциональна.
Одним из преимуществ GTK+ является то, что он полностью написан на С.
Естесственно GTK+ предоставляет средства для работы именно с этим
языком, для этого существует
GUI-конструктор - glade2. Если вам нужно писать код на С++, то
вы можете воспользоваться таким средством как gtkmm, который
иногда называют GTK--.
Несмотря на профессионально написанный пакет GTK+ в Linux, 'GTK+ для
Win32' не производит особого впечатления. Зайдя на главную страничку
GTK+ вы увидете сообщение примерно такого содержания -" Программа
может неожиданно завершиться или работать некорректно". (Как
собственно, и любая коммерческая программа под Windows.) Стабильность
зависит от многих факторов, таких как драйвера дисплея, другие
программы, как установленные, так и нет (статус 2004-09-06). Отчаянные
разработчики, несмотря ни на что, кликают на ссылке и получают длинный
список компонентов для загрузки. А для полноценного пакета, достаточно
один раз его найти и скачать. Кроме того, инструкция по установке
требует, чтобы мы вернулись на главную страничку и загрузили все
недостающие компоненты. Вот заявление о 'GTK+ для Windows' сделанное на
главной веб-странице: "Вы ожидали спокойно использовать GTK+ в своих
программах? Это не Visual Basic." После установки множества
компонентов и неудачной попытки запустить тестовое приложение, у
большинства разработчиков может погаснуть рвение углубляться в изучение
этого пакета. Некачественно выполненная реализация 'GTK+ для Win32'
приводит нас к выводу о том, что не стоит использовать этот "пакет" для
написания профессиональных приложений.
Скриншот GTK+ в Linux (исходный код для glade2 здесь
(gtk_src.tar.gz))
Обзор GTK+
Имя:
|
GTK+ - The GIMP Toolkit
|
Операционные системы:
|
Linux, Win32
|
Язык программирования:
|
C (для C++ - gtkmm)
|
Лицензия
|
LGPL
|
Преимущества:
|
- основная библиотека для менеджера Gnome под Linux
- пакет включен во все основные дистрибутивы (инсталляция
очень проста)
- настраиваемые средства управления под Windows
- хорошо себя зарекомендовал (под Linux)
|
Недостатки:
|
- неудачная реализация под Win32, приложения работают
нестабильно (09-2004)
|
Среда программирования:
|
glade (GUI Builder), Anjuta |
WWW: |
http://www.gtk.org |
Документация:
|
руководства, справочники, списки рассылки
на http://developer.gnome.org/doc/API/2.0/gtk/index.html
|
Крупные проекты:
|
- Gnome Desktop
- GIMP
- Gnumeric
|
Дистрибутив:
|
Linux: широко распространен, Windows: слабая реализация
|
FLTK
FLTK Toolkit ( Fast, Light Tool Kit) - довольно крупный, однако
малоизвестный пакет, который является наследником XForms. Исходники
размером 2.3 MB (для Linux) и 3MB (для Windows) доступны на сайте
разработчика. Установка под Linux достаточно проста: распакуйте архив,
а затем выполните make. После установки пользователь получит
библиотеки, примеры программ, конструктор GUI - "fluid" и
справочник по программированию на FLTK. Правда число управляемых
классов в нем намного меньше, чем у таких тяжеловесов, как QT и
wxWindows.
Тем не менее эти классы включают в себя многие элементы GUI: окна,
меню, OpenGL. Классы для работы с сетью туда не включены.
Установка под Windows была намного сложнее. При использовании Visual
C++ Development Environment только главный проект должен быть
транслирован. Возможно, это стало причиной проблем с библиотекой. Чтобы
ее избежать надо раскомментировать строку, в которой она упоминается в
config.h. Вторая особенность заключалось в особом способе запуска
программ, для этого FLTK открывал окно DOS. Это нужно для того, чтобы
программа могла корректно использовать потоки вывода.
В общем, FLTK Toolkit оставил впечатление довольно грамотно написанного
пакета. В документации подчеркнули, что размер исполняемого файла
очень маленький (всего 80kb для " hello world" ) и достаточно быстрая
2D и 3D графика (OpenGL). Нельзя также не упомянуть о хорошей
переносимости на другие платформы.
Скриншот в Linux и Windows 2000 (исходный код здесь
(fltk_src.tar.gz) )
Обзор FLTK
Имя:
|
Fast Light Tool Kit |
Версия:
|
1.1.5rc2
|
Операционные системы:
|
Linux, Win32, MacOS
|
Язык программирования:
|
C++
|
Лицензия:
|
LGPL
|
Преимущества: |
- очень гибкая библиотека
- исходник включает в себя документацию и среду
программирования "fluid".
- хорошая поддержка OpenGL (не тестировалось)
- настраиваемые средства управления под Windows
|
Недостатки:
|
- Инсталляция под Windows (Visual C++) прошла не без проблем
- Среда программирования fluid под Windows работала
нестабильно.
|
Среда программирования:
|
fluid (GUI Builder)
|
WWW: |
http://www.fltk.org,
Загрузка: http://freshmeat.net/projects/fltk/
|
Документация:
|
руководства, справочники, списки рассылки
на http://vtkfltk.sourceforge.net/
|
Крупные проекты:
|
|
Дистрибутив:
|
мало распространен, особенно среди программистов.
|
FOX Toolkit
The Fox Toolkit претендует на то, чтобы стать самым быстрым пакетом,
среди рассмотренных нами. Он содержит большое число элементов GUI и
поддержку OpenGL.
Установка как под Linux, так и под Windows прошла без проблем. В пакете
есть подробная документация и различные примеры. Просмотрщик классов не
включен в эту версию, но доступен на сайте программы.
Скриншот в Windows 2000 (исходный код здесь (fox_src.zip))
Обзор FOX
Имя:
|
FOX Toolkit |
Версия:
|
1.2.9
|
Операционные системы:
|
Linux, Win32
|
Язык програмирования:
|
C++
|
Лицензия:
|
LGPL
|
Преимущества: |
|
Недостатки:
|
|
Среда программирования:
|
|
WWW: |
http://www.fox-toolkit.org
|
Документация:
|
руководства, справочники, списки рассылки |
Крупные проекты:
|
|
Дистрибутив:
|
слабо распространен |
Другие способы
В добавлении к предыдущим библиотекам, я бы хотел упомянуть следующие
проекты, о которых я не буду подробно рассказывать:
- GNUstep [http://www.gnustep.org/]: Ограниченные возможности при
работе в Windows
- Visual Component Framework [http://vcf.sourceforge.net/]:
Недоступна версия для Linux
JAVA
В 1995 компания Sun анонсировала новый язык программирования. Кроме
версий для настольных ПК, планировалось использовать его в качестве
языка для обыкновенных приборов (кофеварки, тостеры...). И все же
наибольшую популярность он приобрел в качестве языка для написания
интернет-приложений (апплетов), которые работают с веб-браузерами.
Сегодня, Java используется и в качестве языка для написани я обычных
приложений, так как в нем заложены многие средства для
профессионального программирования.
Ниже будет рассказано о наиболее важных особенностях этого языка.
Платформонезависимость
Java - платформонезависим. Его приложения состоят из байт-кода,
который интерпритируется виртуальной машиной. Таким образом приложения
могут запускаться на любой платформе, где она присутствует. Скорость
интерпритирования приложений виртуальной машиной вполне можно сравнить
со скоростью их компилирования. Основным недостатком этого метода
является его медлительность. Большое количество времени тратиться на
транслирование программных инструкций виртуальной машины в код для
железа. Правда в результате получается, что программа, находясь в
памяти, запускается очень быстро и без интерпритации. Глубокий анализ
программы с HotSpot-технологией показал очень хорошие рузультаты
работы приложения.
Объектно-ориентирование програмирование
Java - объектно-ориентированный язык. Разработчик объектного
ориентирования был явно вдохновлен идеями, заложенными в Smalltalk.
Возможно, исходя из соображений производительности, до сих пор
существуют простейшие типы данных, которые не представлены как
объекты.
Синтаксис языка
Синтаксис Java довольно сильно напоминает C и C++, при этом многие
проблемы этих языков также перешли и в Java. И все же одним из главных
принципов разработки ПО на этом языке является использование лучших
концепций существующих языков программирования.
Приведем пример:
- Отсутствие препроцессора. Сейчас нет необходимости его
использовать, как и файлы заголовков, так как вся информация храниться
в файле классов.
- указатели: в Java отсутствуют указатели, вместо них используются
выражения. Они представляются как объекты класса.
- garbage-collector: различные проблемы при создании и удалении
объектов решаются самим Java. После того, как объекты покидают массив
они автоматически удаляются. Объекты или массивы, которые не
используются также находятся под контролем Java.
- исключения: обработка исключений в Java довольно сильно отличается
от его аналога в С++, в Java обращение к исключениям происходит
намного чаще, очень часто они вызываются принудительно.
Библиотека классов
Java включает в себя богатую библиотеку классов: JFC (Java Foundation
Class). (Ее кодовое имя - Swing.)
Безопасность
Java-код проверяется верификатором на правильность структуры программы
и безопасность управления типами данных. Специальный менеджер следит за
управлением доступом к периферии. О других проблемах, касающихся
безопасности приложений, Java сообщает в реальном времени.
Стабильность
К сожалению многие преимущества имеют эффект не для всех приложений.
Это вовсе не ошибки разработчиков или слабости языка, на самом
деле это делается сознательно, просто такова философия языка.
К примеру:
- доступ к периферии специфичен для каждой платформы
- прямой доступ к железу
- интеграция в операционную систему
Java Development Kit (JDK)
The Java Development Kit можно загрузить с сайта компании Sun. Этот
пакет включает в себя простейшие примеры приложений, классы и
документацию. В него также включены компилятор, дебаггер,
апплет-вьювер. В общем все, что нужно для создания и тестирования
программ и апплетов. Самая необходимая вещь - компилятор, он имеет
интерфейс коммандной строки. Следует также упомянуть о том, что этот
пакет содержит Java Runtime Environment (JRE, в основе которой лежит
виртуальная машина), которая нужна для преобразования приложений в
байт-код. Документация подробно описывает работу API.
JHelloWorld
C помощью JDK создадим стандартную прораммку - "hello world".
Шаг 1: Создание исходного кода.
sh>vi Helloworld.java
public class HelloWorld {
public static void main (String[] args) {
System.out.println("Hello World!");
}
}
Имена класса и файла должны совпадать.
Шаг 2: Трансляция
sh>javac Helloworld.java
Шаг 3: Запуск приложения с помощью виртуальной машины.
sh>java Helloworld
JavaScript и Java
Многие считают, что JavaScript и Java это одно и тоже. Это абсолютно не
так. JavaScript был разработан компанией Netscape как скриптовый язык
для HTML. Это не самостоятельный язык программирования, скрипты
написанные на нем полностью зависят от браузера. Просто имя JavaScript
не более чем удачный маркетинговый ход.
Попытки стандартизации
Любые попытки стандартизировать Java провалились. Это связано с тем,
что компания Sun хочет иметь полный контроль над разработкой дальнейших
версий Java.
Декомпилирование
Серьезной проблемой языка является декомпилирование программ.
Несмотря на все меры безопасности, в настоящий момент,
достаточно легко конвертировать байт-код обратно в исходник. Это
возможно благодаря тому, что байт-код пишется для виртуального
процессора с добавлением важной информации, а это отличается от
обычного способа применения ассемблера. Эта информация позволяет легче
понять структуру программы, а значит становится проще ее
декомпилировать. Вы не сможете скрыть действия API или специальные
сигнатуры в коде.
Удивительный язык или короткометражная реклама
Идея Java выглядела как начало универсального программирования под
различные платформы. К сожалению, эта была всего лишь реклама.
Всевозможные конфликты версий между виртуальными машинами Java и низкая
скорость запуска программ, заставляли многие компании возвращаться к
стандартному программированию на С++ . Огромное число загрузок
wxWidgets разработчиками - убедительное тому доказательство.
Интересный веб-сайт посвященный этой теме:
http://www.internalmemos.com/memos/memodetails.php?memo_id=1321 где
разработчики из Sun приводят аргументы против Java.
GUI и Java
Java предоставляет 2 различных способа программирования графического
интерфейса:
- В Java поставляется богатая библиотека классов (JFC, Swing).
Никакие системные функции при этом не используются. Все элементы
рисуются при помощи Java-инструкций. Это позволяет изменять интерфейс в
реальном времени. Примеры можно увидеть на скриншотах.
- Простейшие AWT-функции. AWT не имеет таких элементов, как
разветвления и он не очень подходит для большинства приложений.
Скриншоты Java в Metal-, Motif- и GTK+ (Исходный код здесь (java_src.zip))
Скриншоты Java в Windows 2000 и Windows XP (идентичный исходный
код)
Все популярные браузеры поддерживают Java. Приложения (апплеты) могут
быть написаны в самом браузере. Эта технология может использоваться в
уже существующих системах, где байт-код может быть загружен с
веб-сервера и интегрирован в приложение.
Следующий скриншот наглядно показывает, как приложение интегрируется в
веб-страницу в качестве Java-апплета.
Скриншот, показывающий пример апплета (исходный код здесь
(java_applet.zip))
SWT и Eclipse
Несмотря на то, что Java предлагает встроенные средства для создания
графического интерфейса, разработчики не торопятся его использовать.
Наибольшие пререкания к пакету вызывают низкая скорость запуска
программ и его недостаточная функциональность. IBM разработала
альтернативный пакет - Standart Widget Toolkit (SWT), который вполне
может заменить встроенный пакет от Java. Другой крупный проект, также
разработанный кампанией IBM - IDE Eclipse предлагает утилиты для
кроссплатформенного программирования. Сам пакет и среда
программирования абсолютно бесплатны.
Аббревиатуры используемые в JAVA
JDK (Java Development Kit) |
Полноценный Java-пакет для создания приложений на этом
языке, включающий в себя классы и документацию.
|
JRE (Java Runtime Environment)
|
Содержит в себе виртуальную машину, используется всеми
Java-приложениями.
|
J2ME (Java 2 Micro Edition)
|
Версия Java для устройств с ограниченными ресурсами, например
мобильных телефонов.
|
J2SE (Java 2 Standard Edition)
|
Версия Java для настольных машин (Linux, Windows...)
|
J2EE (Java 2 Enterprise Edition)
|
Версия Java для создания многоуровневых приложений для
клиент/серверных станций.
|
JFC (Java Foundation Class) |
Классы для создания графического интерфейса(Swing) |
Обзор Java
Имя:
|
JAVA 2 PLATFORM STANDARD EDITION DEVELOPMENT KIT 5.0 |
Версия:
|
5.0
|
Операционные системы:
|
- Linux, Windows, Solaris (SUN)
- Linux, Windows, AIX, Solaris (possibly MacOS, OS/2,
FreeBSD, Amiga, BeOS) (Jikes -> IBM)
|
Язык программирования:
|
JAVA
|
Лицензия:
|
закрытая лицензия (SUN)
|
Преимущества: |
- грамотно написанный язык (много ошибок было устранено в
самой концепции языка).
|
Недостатки:
|
- закрытый язык, который находится под полным контролем Sun
- виртуальная машина должна присутствовать на каждой
платформе
- низкая скорость запуска программ
- пакет SWT более продуман, чем Swing
|
Среда программирования:
|
Eclipse
|
WWW: |
http://java.sun.com |
Документация:
|
справочники, статьи:
http://java.sun.com/j2se/1.5.0/docs/,
http://www-e.uni-magdeburg.de/mayer/java.html
SWT: http://eclipse-wiki.info/SWT,
http://www.java-tutor.com/java/swtlinks.html
|
Крупные проекты:
|
|
Дистрибутив:
|
широко распространен
|
Kylix
Kylix - это кроссплатформенная среда программирования для Linux и
Windows. Справочные средства по библиотеке Borland's CLX помогут вам
написать приложения как на Delphi, так и на C++, которые будут работать
на обеих платформах. Интересные вещи можно узнать на страничке проекта
wikipedia (ссылка de.wikipedia.org/wiki/Kylix).
Эта библиотека является всего лишь оболочкой ранее рассказанной QT.
Более того, среда программирования для Kylix основана на программе wine
и не является самостоятельным Linux-приложением( de.wikipedia.org/wiki/WINE_Is_Not_an_Emulator)
Из этого следует, что все разрабатываемые приложения должны обращаться
к библиотеке libwine. Принимая все это во внимание, не
удивительно, что программисты, пишушие на С++ предпочитают использовать
бесплатный QT, который к тому же является открытым проектом.
Обзор Kylix
Имя:
|
Kylix
|
Версия:
|
3
|
Операционные системы:
|
Windows, Linux
|
Язык программирования:
|
Delphi, C++
|
Лицензия:
|
закрытая лицензия
|
Преимущества: |
- разработка приложений на Delphi и C++
|
Недостатки:
|
|
Среда программирования:
|
Kylix
|
WWW: |
http://www.borland.de/kylix |
Документация:
|
|
Крупные проекты:
|
|
Дистрибутив:
|
не очень распространен
|
Smalltalk
Smalltalk - это классика среди языков программирования. Он был написан
в 1969/70 годах компанией Xerox и он до сих пор является хорошим
примером объектно-ориентированного языка. В нем абсолютно всё является
объектами. Нету простейших текстовых типов, как Java и .Net
(читайте ниже) использует виртуальную машину. Синтаксис немного
напоминает английскую речь, но он сильно отличается от других языков
программирования. Smalltalk уже около 10-15 лет. Он был довольно
популярен, пока не появился Java.
Вот простейшая программа 'Hello world !', написанная на Smalltalk:
Transcript show: 'Hello world !'; cr.
Smalltalk используется энтузиастами до сегодняшних дней. Наиболее
доступный вариант - Smalltalk - 80 (стандартизирован в 1980 году).
Довольно мощная среда программирования для него - это Squeak.
Обзор Smalltalk
Имя:
|
Smalltalk (Squeak)
|
Версия:
|
3.6
|
Операционные системы:
|
Windows, Linux, Solaris, MacOSX, Darwin
|
Язык программирования:
|
Smalltalk
|
Лицензия:
|
Open Source
|
Преимущества: |
полностью объектно-ориентированный язык |
Недостатки:
|
Smalltalk, не без помощи Java, был отодвинут в сторону, что
стало причиной уменьшения числа пользователей этого языка. |
Среда программирования:
|
Squeak
|
WWW: |
http://www.smalltalk.org |
Документация:
|
|
Крупные проекты:
|
|
Дистрибутив:
|
не очень распространен |
Mozilla
Mozilla? Веб-браузер? Как можно писать программы при помощи браузера?
Mozilla это не только браузер, но и платформонезависимая среда
Framework, в которую включены различные стандарты, такие как XUL
(основанный на XML язык). XUL определяет структуру и содержание
приложения. Все файлы представляют собой обычный текст. Mozilla не
видит разницы между программами и web -страницами.
Введите следующую строку в качестве адреса страницы:
chrome://navigator/content
Следующий код отобразит кнопку, нажав на которую, появится текстовое
окно с сообщением "Hello World!":
<?xml version="1.0"?>
<!-- Beispiel XUL Datei -->
<window
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<box align="center">
<button label="Push" onclick="alert('Hello World');" />
</box>
</window>
Разработка программ при помощи mozilla несколько отличается от
классического программирования. Mozilla сделала много нововведений,
такие как разделение самого приложения от его отображения. Это
позволяет легко изменять вид приложения, т.е. создавать темы для него.
Примером такого приложения является мощный веб-браузер firefox.
Скриншот в Linux и Windows 2000 (исходный код здесь
(moz_src.tar.gz)).
Обзор Mozilla
Имя:
|
Mozilla
|
Версия:
|
1.6
|
Операционные системы:
|
Windows, Linux,
|
Язык программирования:
|
XUL
|
Лицензия:
|
Mozilla Public License, Netscape Public License |
Преимущества: |
- новаторские концепции
- поддержка многих стандартов (JavaScript, Stylesheets,...)
- приложения запускаются в браузере вручную
|
Недостатки:
|
|
Среда программирования:
|
|
WWW: |
http://www.mozilla.org
|
Документация:
|
справочники, учебники, списки рассылки: www.xulplanet.com |
Крупные проекты:
|
Mozilla firefox |
Дистрибутив:
|
широко распространен, но редко используется в качестве среды
для разработки программ.
|
Ответ Microsoft
Тем временем, Microsoft готовила собственное наступление. Разработка
под названием .NET, которая по их представлениям должна была
приостановить миграцию разработчиков на Java-платформу. Их действия
против своего конкурента можно увидеть даже в терминах. Эквивалент
"байт-код" от Java называется в С# - "Промежуточный язык" (MSIL
"Intermediate Language").
Что такое .NET ?
.NET - это технология разработанная Microsoft, которая станет базой для
ее следующих продуктов. Поддержка компилирования приложений, основанных
на библиотеке MFC для Visual C++ была исключена с самого начала. При
помощи .NET можно легко создавать сетевые и интернет-приложения, много
идей было взято из Java, он также поддерживает объектно-ориентированное
программирование и использует для этого всего одну библиотеку классов,
которую можно использовать в разных языках программирования
(С#,VB.NET). Она является неким посредником между программой и железом
(похожая схема у Java: Исходник->байт-код ->виртуальная машина
-> оборудование).
Следующие версии Windows будут поставляться вместе с базовой основой
.NET
Что такое Visual Studio .NET ?
Visual Studio .NET - это среда программирования для быстрого создания
.NET-приложений.
Различия между Visual Basic (VB) и VB .NET
VB.NET для совместимости с предыдущими версиями поддерживает много
оригинальных функций VisualBasic, а также сохранен синтаксис языка. В
остальном - это совершенно другой язык программирования.
Какой язык программирования самый пригодный для написания
приложений?
Пока исходный код VB.NET и код C# транслируются в MSIL, нет никакой
разницы в используемом языке программирования. Компилятор С# был самым
мощным, когда он разрабатывался специально для .NET.
.NET и Linux
Презрение к кроссплатформенному программированию стало причиной того,
что Microsoft не желает разрабатывать Linux-вариант .NET. Но комманда
под руководством Miguel de Icaza (Ximian: Evolution) поставила своей
целью изменить эту ситуацию. Разработанный ими пакет Mono,
версия 1.0, распространяемый под открытой лицензией, уже можно найти в
интернете.
Обзор .NET
Имя:
|
Microsoft .NET-Framework
|
Версия:
|
|
Операционные системы:
|
Windows, Linux
|
Язык программирования:
|
C#, Windows: VB.NET
|
Лицензия:
|
закрытая лицензия
|
Преимущества: |
- является частью будущей версии Windows
|
Недостатки:
|
- закрытое программное обеспечение
- нет версии .NET для Linux
- полностью новый API
|
Среда программирования:
|
Visual Studio .NET
|
WWW: |
|
Документация:
|
|
Крупные проекты:
|
|
Дистрибутив:
|
на данный момент не очень распространен
|
Вывод
Основным приоритетом при выставлении финальной оценки пакету сводится к
следующему: графическое клиент-серверное приложение должно правильно
работать в сети. Для этого программы должны работать как на Linux так
и Windows-платформах. Приложение не должно отличаться от исходной
версии. С этим заданием просмотр протестированных пакетов показал
неопределенные результаты и довольно сложно придти к окончательному
решению.
Хороший пример качественно выполненного пакета - FLTK. В нем
удивительно сочетаются стабильность и быстрота работы. Наиболее явные
преимущества - маленький исходный код, продуманный графический
интерфейс и хорошая переносимость на другие платформы. Это делает его
удобным для создания крупных графических приложений. К сожалению, для
сетевых приложений в этом пакете не хватает классов, поэтому для их
разработки он не пригоден.
Настоящим разочарованием для программистов стала версия GTK+ для
Windows. Сообщество Linux не смогло сделать его стабильным продуктом.
Предупреждения на главной странице проекта не дают особой уверенности в
его работоспособности. Как это не прискорбно, GTK+ выглядит слишком
сырым проектом. Вывод: реализация под Windows требует значительных
улучшений.
Такие пакеты как Smalltalk и Mozilla предлагаю оценить вам самим.
Smalltalk является примером хорошего объектно- ориентированного
программирования, а Mozilla со своей технологией XUL предоставляет
встроенный веб-браузер, однако ни один их них не является популярным
средством для разработки программ.
В данном обзоре, Kylix, как и GTK+ для Win32, оставил негативное
впечатление, слишком слаба популярность Turbo Pascal. В 80-х годах
компания Borland выпустила мощный продукт - графическую оболочку для
этого языка, которая могла запускаться на домашних компьютерах. В то
время это казалось очень мудрым шагом. Сейчас все изменилось, Turbo
Pascal перерос в Object Pascal, затем в Delphi и в конце концов в Kylix
(конечно с улучшениями). Только вот теперь, эти продукты не вызывают
тех же ощущений, что и раньше.
Сейчас Microsoft пытается продемонстрировать, что она является
стандартом в нынешнее время. В начале компания пытается протолкнуть на
рынок Java в их новом продукте Visual++. Туда были включены как
стандартные команды Java, так и доступ к Win32-API, а также доступ к
системному реестру (что явно противоречит принципам языка). Вдобавок,
запускаемые приложения генерируются автоматически. После некоторых
пререканий с Sun, было сделано заявление о том, что приложения не будут
запускаться на других ОС. В конце концов Microsoft перестала работать
над Java. К тому времени компания решила поменять свою стратегию.
Своими продуктами, .NET и С++, Microsoft сделала новый стандарт.
Комбинация Windows, .NET и C# безусловно хорошее сочетание, но и сейчас
комбинация Windows, Visual++ и библиотеки MFC выглядит неплохой.
Недостатком является то, что всего одна компания делает попытки
протолкнуть свой стандарт (Windows). Microsoft не планирует переносить
.NET на другие платформы в обозримом будущем. Свободная версия - Mono
покажет, насколько мощен этот продукт.
Очень сложно дать оценку таким пакетам как Qt, wxWindows и Java. Каждый
из них обладает рядом положительных свойств и способен создать
полноценное графическое приложение. Слишком много мнений надо
рассматривать при выборе одного из них, это и ценовая политика, и
скорость работы, сама философия программирования. В данном случае
каждый пакет надо рассматривать более детально, допустим, философия
Java не позволяет напрямую обращаться к железу, что может быть хорошо в
одном случае и плохо в другом. С технической точки зрения все эти три
конкурента могут выполнить поставленную задачу без проблем.
Вывод сделанный автором: фанаты Open Source могут склониться к
wxWindows. Особенно, этот пакет порадовал продуманной концепцией и
доступной документацией.