Выбрать главу

Конфигурация также определяет минимальный набор свойств для категории устройств. Производители устройств внедряют профили для обеспечения реальной платформы для семейства устройств, которая имеет возможности, определяемые данной конфигурацией.

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

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

Например, профиль может поддерживать возможность сетевой коммуникации для популярного стандарта Short Message Service (SMS), широко используемого в мобильных телефонах. Поскольку стандарт SMS является повсеместно распространенным свойством в сотовой телефонии, имеет смысл задать эту службу в профиле, который предназначен для мобильных телефонов, вместо того чтобы встраивать ее в конфигурацию.

Профиль внедряется поверх конфигурации, на одну ступень ближе к выполнению практических приложений. Обычно профиль включает библиотеки, которые соответствуют более специфичным характеристикам категории устройств, которую они представляют, чем библиотеки, которые содержат конфигурации. Приложения затем встраиваются поверх конфигурации и профиля, они могут использовать только библиотеки классов, предоставляемые этими двумя низкоуровневыми спецификациями. Профили могут быть встроены поверх друг друга. Конечный продукт платформы J2ME, однако, может содержать только одну конфигурацию. На рисунке 1.1 показаны схематичные уровни, из которых состоит платформа J2ME

Java-приложение

Профиль

Конфигурация: Библиотеки

Виртуальная Машина Java [JVM]

Операционная система компьютера

Аппаратное обеспечение устройства

Рисунок 1.1.Платформа J2ME состоит из ряда уровней, которые поддерживают базовую среду исполнения с корневыми библиотеками Java и Виртуальной машиной (VM), набора программных интерфейсов приложения системного уровня (API) в конфигурации и набора API программного уровня в профиле

Конфигурации и профили

Конфигурация включает три базовых элемента:

— набор свойств языка программирования Java;

— набор свойств виртуальной машины Java;

— набор поддерживаемых библиотек Java и программных интерфейсов приложения (API).

Создатели J2ME определили только две конфигурации для избежания фрагментированного представления несовместимых платформ. Две конфигурации, которые существуют в настоящее время, представляют две категории портативных устройств, описанных ранее в этой главе, а именно:

— личные, не стационарно подключаемые мобильные устройства — поддерживаемые конфигурацией Connected, Limited Device Configuration (CLDC, конфигурация для подключенных ограниченных устройств);

— постоянно соединенные сетевые устройства — поддерживаемые конфигурацией Connected Device Configuration (CDC, конфигурация для подключенных устройств).

Теоретически конфигурация может устанавливать такую же поддержку, как и библиотеки платформы J2SE. Но на самом деле это маловероятно, потому что, как вы знаете, J2ME предназначена для устройств, которые намного менее мощны, чем настольные компьютеры.

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

Конфигурация Connected Device Configuration (CDC)

Конфигурация Connected Device Configuration (CDC) предназначена лишь для фиксирования основных возможностей каждого вида устройств в категории устройств, для которой она предназначена, а именно, устройств с 2МБ или более полной памяти, включая как RAM, так и ROM.

Как вы видели на рисунке 1.1, конфигурация задает как набор поддерживаемых свойств виртуальной машины Java, так и набор библиотек классов. В CDC определено использование виртуальной машины полной платформы Java 2, которая, в этом контексте, называется компактной виртуальной машиной (Compact Virtual Machine (CVM)).

CVM. Хотя CVM поддерживает те же свойства, что и J2SE VM, она создана для потребительских и встраиваемых устройств. Это означает, что стандарт VM J2SE был модернизирован, чтобы соответствовать ограничениям устройств с ограниченными ресурсами. Сюда включены следующие свойства получившегося в результате продукта CVM:

— улучшенная запоминающая система;

— небольшие временные интервалы сборки мусора в среднем;

— полное отделение виртуальной машины от системы памяти;

— модульные сборщики мусора;

— сборка мусора по поколениям.

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

— портативность;

— быстрая синхронизация;

— выполнение классов Java отдельно от постоянной памяти (ROM);

— поддержка естественных потоков

— зоны обслуживания малых классов;

— предоставление интерфейсов и поддержка служб операционной системы реального времени (RTOS);

— преобразование потоков Java непосредственно в естественные потоки;

— поддержка всех свойств и библиотек виртуальной машины версии 1.3, Java 2: безопасность, слабые ссылки, Java Native Interface (JNI, собственный интерфейс Java), Remote Method Invocation (RMI, интерфейс вызова удаленных методов), Java Virtual Machine Debugging Interface (JVMDI, интерфейс отладки виртуальной машины Java).

Библиотеки классов в CDC. CDC устанавливает минимальный набор библиотек классов и API. Она поддерживает следующие стандартные пакеты Java:

— java.lang — системные классы виртуальной машины Java; java.util — базовые утилиты Java;

— java.net — дейтаграмма Universal Datagram Protocol (UDP) и ввод/вывод (I/O);

— java.io — файловый ввод/вывод Java;

— Java.text — самая минимальная поддержка интернационализации (I18N — смотри главу 9);

— Java.security — минимальная защита на мелком уровне и шифрование сериализации объекта.