Java 2 Micro Edition (J2ME)

       

Конфигурация 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.

    С точки зрения программиста профиль необходим для «полезной» работы. Профиль определяет уровень, который содержит АРГи, с которыми программист обычно имеет дело. Создатели 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 Классы и интерфейсы для пересылки данных внутри и между приложениями
    ]ava .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.



  • Содержание раздела