Изменить стиль страницы

Например, профиль может поддерживать возможность сетевой коммуникации для популярного стандарта 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 — минимальная защита на мелком уровне и шифрование сериализации объекта.

Как вы можете видеть, эти API не включают полный набор пакетов набора инструментальных средств разработки программного обеспечения (software development kit (SDK)) Java 2. В некоторых случаях эти пакеты и классы являются подгруппами пакетов и классов Java 2 SDK. Также убраны все устаревшие API J2SE. В таблице 1.1 перечислен полный набор пакетов, поддерживаемых CDC.

Таблица 1.1. Пакеты CDC

Название пакета CDC — Описание

java.io — Стандартные классы и интерфейсы ввода/вывода

java.lang — Классы виртуальной машины

java.lang.ref — Классы для работы с ссыпками на объекты

Java.lang.reflect — Классы и интерфейсы, поддерживающие отражение (динамическую информацию о классах)

Java.math — Математический пакет

Java.net — Сетевые классы и интерфейсы

Java.security — Классы и интерфейсы безопасности

Java security.cert — Классы сертификации безопасности

Java.text — Текстовой пакет

Java.util — Классы стандартных утилит

Java.util.jar — Классы утилиты архиватора Java (JAR)

Java.util.zip — Классы утилиты ZIP

javax.microedition.io — Классы и интерфейсы структуры общих соединений CDC

Профиль Foundation Profile. Конфигурация вместе с профилем формирует исполняемую среду J2ME. Свойства и службы системного уровня, поддерживаемые конфигурацией, более или менее спрятаны от разработчика приложений. В действительности разработчику приложения запрещен прямой доступ к ним. Если это не было соблюдено, приложение не будет считаться соответствующим требованиям J2ME.