[LinuxFocus-icon]
<--  | Карта  | Индекс  | Поиск

Новости | Архивы | Ссылки | Про LF
эта страница доступна на следующих языках: English  ChineseGB  Deutsch  Francais  Italiano  Russian  

[Photo of the Author]
автор Michael Tschater
<tschater/at/web.de>

Об авторе:

В настоящее время Michael занимается разработкой программного обеспечения взаимодействующего с аппаратными средствами. Работая над очередным проектом решил рассмотреть вопросы стратегии выбора среды разработки.



Перевод на Русский:
Лебедев Александр Сергеевич <slice(at)list.ru>

Содержание:

 

Платформонезависимая разработка программ

[Illustration]

Резюме:

Практически любым оборудованием, используемым в индустрии, можно управлять через сеть. Программа, запускаемая пользователем работает как обычный клиент, получая и отправляя данные. На следующей диаграмме зеленым цветом показано в каком месте коммуникационной схемы она располагается:
[gui frontend]
В большинстве программ обычно пишут на какой операционной системе они работают. Читатели этого журнала используют Linux, и все же другие операционные системы, к примеру, Windows, также популярны среди пользователей. В принципе, приложения не должны от них зависеть, на любой платформе пользователь все должен понять интуитивно.
Эта статья покажет, что выбор специфичной платформы для приложения необязателен, и что возможно написать программу, которая будет компилироваться на разных операционных системах. При написании статьи использовались ПК с двумя операционными системами - Linux и Windows. Возможно, программы запускались бы и на Mac, и на MacOSX, но в данный момент проверить это невозможно из-за отсутствия необходимого оборудования.

_________________ _________________ _________________

В независящих от операционной системы библиотеках существует два различных способа отображения пользовательского интерфейса:
  1. Собственные библиотеки: для отображения элементов используются системные ресурсы. Это позволяет всем приложениям иметь стандартный интерфейс. Эти библиотеки различаются в зависимости от операционной системы, например, стандартный интерфейс под Linux отличается от Windows 2000 или XP.
  2. Второй способ предполагает, что все функции по отображению графики будет выполнять сама программа, поэтому интерфейс будет одинаков на любой системе.
Кроме того, технические параметры самого пакета играют отнюдь не последнюю роль. Обычно в качестве этих параметров принимают следующие факторы присутствующие в этих пакетах, именно их мы и будем сравнивать:
В данном случае еще один вопрос должен быть принят в расчет, однако это применимо не ко всем проектам:
Внизу, на картинке, показано, какое место в модели занимают библиотеки:
layer-model
 

Языки программирования

Первый критерий по-которому мы будем отбирать пакеты - это языки программирования. Вот те из них, о которых мы будем подробно рассказывать:
  1. C/C++ библиотеки
  2. Java
  3. Kylix
  4. Smalltalk
  5. Mozilla
Другие языки детально будут рассмотрены когда они станут более популярны среди программистов.

 

Простое приложение

Для сравнения различных пакетов, создадим простое приложение, используя все библиотеки, которые можно генерировать. Приложение не блещет особой функциональностью, но тем не менее оно наглядно показывает наиболее важные части его работы. Windows-приложения создавались при помощи Visual C++ 6.0 и ее основной библиотеки классов - MFC, остальные пакеты сравнивались с ним обычным просмотром. В качестве Linux-дистрибутива я использовал RedHat Fedora Core 2 и Debian 3.0.
Windows 2000 Screenshot Windows XP Screenshot

Скриншот в 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):
qt linux qt win

Скриншот в 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 не показала каких-либо ошибок.

wxWidgets on Linux screenshot wxWidgets on Windows screenshot

Скриншот в 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+ screenshot
Скриншот 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 FLTK Screenshot
Windows FLTK Screenshot

Скриншот в 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 прошла без проблем. В пакете есть подробная документация и различные примеры. Просмотрщик классов не включен в эту версию, но доступен на сайте программы.
FOX screenshot

Скриншот в Windows 2000 (исходный код здесь (fox_src.zip))
 

Обзор FOX

Имя:
FOX Toolkit
Версия:
1.2.9
Операционные системы:
Linux, Win32
Язык програмирования:
C++
Лицензия:
LGPL
Преимущества:
  • Хорошая документация
Недостатки:

Среда программирования:

WWW: http://www.fox-toolkit.org
Документация:
руководства, справочники, списки рассылки
Крупные проекты:
  • X File Explorer (Xfe)
Дистрибутив:
слабо распространен

 

Другие способы

В добавлении к предыдущим библиотекам, я бы хотел упомянуть следующие проекты, о которых я не буду подробно рассказывать:  

JAVA

В 1995 компания Sun анонсировала новый язык программирования. Кроме версий для настольных ПК, планировалось использовать его в качестве языка для обыкновенных приборов (кофеварки, тостеры...). И все же наибольшую популярность он приобрел в качестве языка для написания интернет-приложений (апплетов), которые работают с веб-браузерами. Сегодня, Java используется и в качестве языка для написани я обычных приложений, так как в нем заложены многие средства для профессионального программирования.

Ниже будет рассказано о наиболее важных особенностях этого языка.

 

Платформонезависимость

Java - платформонезависим. Его приложения состоят из байт-кода, который интерпритируется виртуальной машиной. Таким образом приложения могут запускаться на любой платформе, где она присутствует. Скорость интерпритирования приложений виртуальной машиной вполне можно сравнить со скоростью их компилирования. Основным недостатком этого метода является его медлительность. Большое количество времени тратиться на транслирование программных инструкций виртуальной машины в код для железа. Правда в результате получается, что программа, находясь в памяти, запускается очень быстро и без интерпритации. Глубокий анализ программы с HotSpot-технологией показал очень хорошие рузультаты работы приложения.
 

Объектно-ориентирование програмирование

Java - объектно-ориентированный язык. Разработчик объектного ориентирования был явно вдохновлен идеями, заложенными в Smalltalk. Возможно, исходя из соображений производительности, до сих пор существуют простейшие типы данных, которые не представлены как объекты.

 

Синтаксис языка

Синтаксис Java довольно сильно напоминает C и C++, при этом многие проблемы этих языков также перешли и в 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 различных способа программирования графического интерфейса:
  1. В Java поставляется богатая библиотека классов (JFC, Swing). Никакие системные функции при этом не используются. Все элементы рисуются при помощи Java-инструкций. Это позволяет изменять интерфейс в реальном времени. Примеры можно увидеть на скриншотах.
  2. Простейшие  AWT-функции. AWT не имеет таких элементов, как разветвления и он не очень подходит для большинства приложений.

Java Metal screenshot Java Motif screenshot
Java Gtk screenshot

Скриншоты Java в Metal-, Motif- и GTK+ (Исходный код здесь (java_src.zip))

Java on Win2k here.
Java on WinXP here.

Скриншоты Java в  Windows 2000 и Windows XP (идентичный исходный код)

Все популярные браузеры поддерживают Java. Приложения (апплеты) могут быть написаны в самом браузере. Эта технология может использоваться в уже существующих системах, где байт-код может быть загружен с веб-сервера и интегрирован в приложение.

Следующий скриншот наглядно показывает, как приложение интегрируется в веб-страницу в качестве Java-апплета.

Java applet screenshot
Скриншот, показывающий пример апплета (исходный код здесь (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.
Mozilla on Linux Screenshot
Mozilla on Win2k
Скриншот в 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. Особенно, этот пакет порадовал продуманной концепцией и доступной документацией.

 

Страница отзывов

У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей




Webpages maintained by the LinuxFocus Editor team
© Michael Tschater
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Translation information:
de --> -- : Michael Tschater <tschater/at/web.de>
de --> en: Jürgen Pohl <sept.sapins/at/verizon.net>
en --> ru: Лебедев Александр Сергеевич <slice(at)list.ru>

2004-11-22, generated by lfparser version 2.50