Технология Java изначально предназначалась для удобства разработки приложений, исполняемых на всевозможных аппаратных платформах.

Несколько лет назад корпорация Sun провозгласила принцип «разработал однажды — исполняй везде», который был положен в основу Java. Это был рискованный шаг, но такой подход к созданию ПО оказался востребованным в самых разных отраслях. Впрочем, очень скоро стало ясно, что нельзя абсолютно одинаковый код исполнять и на промышленных серверах, и на мобильных телефонах, поэтому единая Java «расслоилась» на несколько спецификаций. Сам язык программирования по-прежнему остался общим, но в различных спецификациях применяются различные наборы компонентов, поставляемых в составе виртуальной машины и доступных законченному приложению.

Java как она есть

На сегодняшний день актуальной для пользователей является вторая версия спецификации Java (готовится версия 1.5, которая, возможно, будет названа пятой). В состав технологии входят компилятор объектного языка Java и среда исполнения байт-кода Java. Вместе эти компоненты называются Java Development Kit (JDK). Однако на сегодняшний день существует несколько вариантов JDK, которые предназначены для исполнения на оборудовании разных типов. Рассмотрим подробнее, на какие задачи ориентированы спецификации Java.

ИНСТИТУТ Java Community Process, в работе которого могут участвовать любые компании, занимается стандартизацией отдельных библиотек Java и обеспечивает процедуру открытого обсуждения новых спецификаций

Java 2 Enterprice Edition (J2EE). Данный набор компонентов предназначен для исполнения на серверах приложений, которые называются контейнерами серверных компонентов. На эти контейнеры возлагаются основные обязанности управления сетевыми соединениями, жизненным циклом компонентов и решения других вспомогательных задач. Сами же компоненты приложений (JavaBeans) реализуют логику работы промежуточного программного обеспечения. Спецификация J2EE активно используется для создания корпоративных порталов и серверной части информационных сервисов.

Java 2 Standard Edition (J2SE). Этот вариант Java предназначен для оснащения рабочих мест и персональных компьютеров. Как правило, виртуальные машины J2SE интегрируются с Web-браузерами для создания Web-приложений, где набор компонентов J2SE выступает в качестве тонкого клиента. Значительная часть комплекта J2SE приходится на набор графических и мультимедийных компонентов, хотя достаточно хорошо проработаны и средства поддержки сетевых коммуникаций. Для мобильных решений эта версия Java в основном используется как средство разработки и отладки.

Java 2 Micro Edition (J2ME). Микроверсия Java разработана специально для портативных устройств, таких как мобильные телефоны и PDA. Этот набор компонентов рассчитан на работу в условиях ограниченных вычислительных ресурсов и памяти. Тем не менее в нем содержатся модули для поддержки сетевого взаимодействия, мобильной связи, трехмерной графики и многое другое. Так, если в спецификации мобильного телефона указывается, что он поддерживает Java, это означает: в него встроены виртуальная машина J2ME и набор базовых библиотек.

Помимо стандартных компилятора, виртуальной машины и библиотек, разными организациями разработано множество наборов интерфейсов и отдельных API для различных применений. Эти интерфейсы распространяются в виде отдельных библиотек Java, а их стандартизацией занимается институт Java Community Process (JCP), участвовать в работе которого могут любые компании. Все спецификации Java вначале должны пройти процедуру открытого обсуждения в JCP — так обеспечивается открытость новых версий. В частности, все нововведения, появившиеся в Java 1.5, утверждены в качестве набора требований Java Specification Request (JSR), которые имеют примерно такой же статус, как RFC для разработчиков Internet-приложений.

Мобильная Java

В мобильных телефонах используется специальный набор библиотек, который базируется на J2ME и носит имя MIDP (Mobile Information Device Profile). Этот стандарт, описанный в документах JSR 37 и 118, определяет так называемые MIDlet-приложения, которые предназначены для исполнения на мобильном телефоне. Их можно разрабатывать в любой удобной программисту среде Java, проверять на эмуляторе телефона и только затем загружать в процессор мобильного устройства. Таким образом, обеспечивается стандартная процедура разработки приложений, исполняемых в нестандартной среде.

Чтобы реализовать MIDlet, программисту достаточно написать приложение, унаследовав его от класса MIDlet. Библиотека MIDP сама позаботится об отображении информации на экране телефона, обработке нажатия кнопок, проигрывании музыкальных фрагментов и выполнении других действий. Хотя в каждом телефоне эти функции реализованы по-своему, создатели библиотеки MIDP гарантируют, что все перечисленные действия будут выполняться на них одинаково. Пока основным применением Java в мобильной индустрии является разработка компьютерных игр, но потенциал этой технологии значительно больше.

Важной особенностью виртуальной машины Java является встроенная модель безопасности, которая подразумевает исполнение кода в защищенной среде, называемой «песочницей». Ее суть заключается в ограничении доступа MIDlet к ресурсам телефона. К примеру, приложение, загружаемое с конкретного сервера, может подключиться только к этому серверу и не имеет доступа (даже для чтения) к внутренней информации телефона. Впрочем, во второй версии MIDP используется более мягкая модель «песочницы»: здесь предусмотрены доверительные домены. Загруженное с них приложение будет иметь больше прав, но это расширение сопровождается введением электронной подписи для каждого компонента MIDlet, что необходимо для надежной идентификации исполняемого кода.

Средства разработки

Для программирования, отладки и исполнения Java-кода существуют самые разные средства разработки, основанные на идеологии визуального проектирования. Наиболее популярны из них два продукта, которые сами написаны на Java и распространяются вместе с исходными текстами. Первый — NetBeans — поддерживается и развивается родоначальницей Java, корпорацией Sun. Развитием второго — Eclipsе — занимается консорциум разработчиков во главе с IBM. Есть и коммерческие инструменты разработки, которые ориентированы на создание крупных разветвленных проектов. В частности, одним из таких продуктов является Sun ONE Studio, имеющий собственную мобильную редакцию. Существуют даже средства моделирования Java-приложений, написанные на языке UML. В общем, разработчику предлагается масса возможностей для написания приложений на Java.

Кроме того, Sun выпустила набор компонентов Wireless Toolkit (WTK), которые предназначены для создания приложений, работающих на мобильных устройствах. В него входят:

  • среда исполнения MIDlet — MIDP (стандарты JSR 37 и JSR 118);
  • набор мультимедийных интерфейсов для мобильной связи — Mobile Media API (MMAPI JSR 135);
  • набор средств для работы с мобильными терминалами — Connected Limited Device Configuration (JSR 30 и JSR 139);
  • библиотеки для использования протоколов мобильной связи — Wireless Messaging API (JSR 120 и JSR 205);
  • библиотека для реализации Web-сервисов (JSR 172).

В дополнение к этому набору в мобильных телефонах часто применяется графическая библиотека Mobile 3D Graphics (JSR 184) и другие инструменты для создания игр.

Для операторов и разработчиков информационных сервисов наиболее важным компонентом пакета WTK является библиотека Wireless Messaging API. Она позволяет телефону напрямую взаимодействовать с мобильной сетью — передавать и принимать SMS-сообщения, использовать механизмы транспортировки неструктурированной информации (Unstructured Supplementary Service Data, USSD) и возможности сигнализации ОКС-7.

На основе USSD с помощью Java создаются интеллектуальные интерактивные сервисы, которые весьма эффективно задействуют ресурсы операторской сети. При этом MIDlet обрабатывает нажатие клавиш на телефоне, транслирует их в USSD-вызов, а потом интерпретирует полученный от сервера ответ. Такие сервисы можно сделать доступными даже в роуминговых сетях, поскольку, согласно стандарту, ряд коротких номеров, набираемых на телефоне, автоматически транслируются в домашнюю сеть абонента.

Отдельно следует упомянуть технологию Web-сервисов, реализации которой существуют как для мобильных телефонов, так и для PDA. Она позволяет превратить мобильный телефон в своеобразный тонкий клиент для работы с определенными Web-сервисами, которые могут быть также написаны на языке Java с помощью технологии J2EE. Создание удобных информативных сервисов на базе этой технологии стимулирует рост трафика данных в сетях сотовых операторов. Если принять во внимание, что, по прогнозам аналитиков, через три года технология Java будет поддерживаться практически всеми мобильными устройствами, логично уже сегодня максимально полно использовать ее возможности для реализации новых информационных сервисов.