С точки зрения программиста профиль необходим для «полезной» работы. Профиль определяет уровень, который содержит АРГи, с которыми программист обычно имеет дело. Создатели J2ME в начале задали один профиль CDC, профиль Foundation, который основан на выпуске J2SE версии 1.3. Он был разработан стандартным комитетом Java Community Process, экспертной группой компаний, работающих в сфере потребительских электронных товаров. Профиль Foundation содержит в себе пакеты J2SE, перечисленные в таблице 1.2.
Таблица 1.2. Пакеты профиля Foundation
Название пакета профиля Foundation — Описание
java.lang — Дополняет поддержку языка Java пакета java.lang.* J2SE (Compiler, UnknownError)
java.util — Добавляет полную поддержку zip и другие утилиты J2SE (java.util. Timer)
Java.net — Добавляет TCP/IP Socket и соединения HTTP
java.io — Дополняет поддержку ввода/вывода языка Java пакета Java, io. * J2SE (классы Reader и Writer)
Java.text — Дополняет поддержку интернационализации пакета Java. text.* J2SE (I18N): Annotation, Collator, Iterator
Java.security — Добавляет подпись и сертификацию кодов
Вышеуказанный список пакетов выглядит точно так, как список, который включает в себя CDC. В действительности они одинаковы. Говоря, что профиль Foundation заключает в себе эти пакеты, мы на самом деле имеем в виду, что они доступны профилю Foundation. Замысел заключается в том, что профиль Foundation используется с CDC. Различие между профилем и конфигурацией заключается в понятиях, но не в физическом отношении.
Отметьте, что вся иерархия java.awt Abstract Window Toolkit (AWT, абстрактного оконного инструментария) и Java.swing пакета Swing, которая определяет API графического пользовательского интерфейса (GUI), отсутствует в поддерживаемых пакетах. Если приложению необходим GUI, потребуется дополнительный профиль. Профили могут быть внедрены поверх друг друга. Продукт платформы J2ME, однако, может содержать только одну конфигурацию.
Отсутствие поддержки GUI в профиле Foundation имеет меньшее воздействие на семейство постоянно подключенных сетевых устройств с общим доступом, таких, как компьютерные приставки к телевизору, чем оно влияет на персональные мобильные устройства, с которыми работают при помощи второй конфигурации J2ME, CLDC.
В общем, решение включать или не включать свойства и библиотеки в конфигурацию или профиль основано на их зонах обслуживания, требованиях к статическим и динамическим ресурсам и к безопасности.
Профиль Personal Profile. Спецификация профиля Personal была разработана в Java Community, конечным результатом которой стал JSR-62. Профиль Personal обеспечивает среду с полной поддержкой AWT. Замысел его создателей заключался в том, чтобы обеспечить платформу, подходящую для Web-апплетов. Он также предоставляет способ перемещения J2ME для приложений Personal Java.
Профиль Personal версии 1.0 требует внедрения профиля Foundation версии 1.0. Это расширенный набор профиля Personal Basis Profile версии 1.0. Однако профиль Personal является подгруппой платформы J2SE версии 1.3.1, которая дает приложениям, созданным в профиле Personal, большую совместимость снизу вверх с J2SE версии 1.3.1.
В таблице 1.3 перечислены пакеты, которые включены в профиль Personal версии 1.0.
Таблица 1.3. Пакеты профиля Personal
Название пакета профиля Personal — Описание
Java.applet — Классы, необходимые для создания апплетов, и используемые апплетами
Java.awt — Классы AWT для создания пользовательского интерфейса программ
Java.awt.data — transferКлассы и интерфейсы для пересылки данных внутри и между приложениями
Java.awt.event — Классы и интерфейсы для обработки событий AWT
Java.awt.font — Классы и интерфейсы для работы со шрифтами
Java.awt.im — Классы и интерфейсы для описания редакторов методов ввода
Java.awt.im.spi — Интерфейсы, которые помогают в разработке редакторов методов ввода для любой среды исполнения Java
Java.awt.image — Классы для создания и изменения изображений
Java.beans — Классы, которые поддерживают разработку компонентов JavaBean
javax.microedition.xlet — Интерфейсы, используемые приложениями и диспетчерами приложений профиля J2ME Personal для коммуникации
Профиль RMI. Профиль RMI является профилем, созданным для платформ, которые поддерживают конфигурацию CDC. Он был задан JSR-66 и определен различными компаниями, принимавшими участие в Java Community Process.
Профиль RMI требует внедрения профиля Foundation и внедряется поверх него. Продукты профиля RMI должны поддерживать следующие свойства:
— полную семантику RMI вызовов;
— поддержку объектов маршалинга;
— RMI проводного протокола;
— экспорт удаленных объектов через API UnicastRemoteObject;
— распределенную сборку мусора и интерфейсы еборщика мусора как для клиента, так и для сервера;
— интерфейс активатора и протокол активации для клиента;
— интерфейсы реестра RMI и экспорт реестра удаленных объектов.
Профиль RMI поддерживает подгруппу RMI API J2SE в. 1.3. Следующие интерфейсы и свойства являются частью спецификации RMI J2SE в. 1.3 и публичных API, но поддержка этих интерфейсов и функциональных возможностей исключена из технических требований профиля RMI из-за ограниченности вычислительных мощностей устройств, сетевой производительности и пропускной способности:
— RMI через брандмауэры и прокси;
— RMI мультиплексный протокол;
— модель реализации «активизируемого» («activatable») удаленного объекта;
— нерекомендуемые методы, классы и интерфейсы;
— поддержка протокола скелетона/заглушки для RMI в. 1.1;
— компилятор скелетона и заглушки.
Поддержка следующих свойств J2SE RMI в. 1.3 не включена:
— Java. rmi. server. disableHttp;
— Java.rmi.activation.port;
— Java.rmi.loader.packagePrefix;
— Java.rmi.registry.packagePrefix;
— java.rmi.server.packagePrefix.
Вторая из двух конфигураций J2ME, Connected, Limited Device Configuration (CLDC), поддерживает персональные мобильные устройства, которые составляют значительно менее мощный класс устройств, чем тот, который поддерживает CDC. Спецификация CLDC распознает устройства этой категории по следующим характеристикам:
— от 160 до 512 KB полной памяти, доступной для платформы Java;
— 16-битный или 32-битный процессор;
— низкое потребление электроэнергии, часто питание от батарей;
— нестационарная сетевая связь (часто беспроводная) с потенциально ограниченной пропускной способностью.
Цель CLDC заключается в том, чтобы установить стандартную платформу Java для этих устройств. Из-за широкого выбора системного программного обеспечения на различных персональных устройствах CLDC исходит из минимальных предположений о среде, в которой она существует. Например, одна ОС может поддерживать множественные параллельные процессы, другая может или не может поддерживать файловую систему и тому подобное.
CLDC отличается от CDC и представляет из себя ее подгруппу. Однако эти конфигурации независимы друг от друга, так что они не должны использоваться вместе при описании платформы. На рисунке 1.2 показана связь между двумя конфигурациями и платформой J2SE.