Технические спецификации конфигурации требуют, чтобы все классы Java, адаптированные с J2SE, были идентичны или соответствующей подгруппой оригинального класса J2SE. То есть класс не может добавлять методы, которых нет в версии J2SE. Однако конфигурации могут включать дополнительные классы в свои спецификации, конфигурации сами по себе необязательно являются соответствующими подгруппами J2SE. Обе конфигурации, которые были определены под классы добавления данных, не представлены в J2SE для того, чтобы обращаться к атрибутам и ограничениям устройств.
Конфигурация 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.
Название пакета 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