Введение

Программная платформа для мобильных и встраиваемых устройств

Java Platform, Micro Edition или Java ME — это вычислительная платформа для разработки и развертывания переносимого кода для встраиваемых и мобильных устройств (микроконтроллеров, датчиков, шлюзов, мобильных телефонов, персональных цифровых помощников, приставок для телевизоров, принтеров). Java ME ранее была известна как Java 2 Platform, Micro Edition или J2ME. Платформа использует объектно-ориентированный язык программирования Java и является частью семейства программных платформ Java. Она была разработана Sun Microsystems (ныне Oracle Corporation) и заменила аналогичную технологию PersonalJava. В 2013 году, когда на рынке насчитывалось более 3 миллиардов мобильных телефонов с поддержкой Java ME, платформа продолжала приходить в упадок, поскольку смартфоны обогнали телефоны с функционалом кнопочных телефонов.

История

Платформа была популярна на кнопочных телефонах, таких как модели Nokia Series 40. Она также поддерживалась операционными системами Bada и Symbian OS, а также нативно. Пользователи Windows CE, Windows Mobile, Maemo, MeeGo и Android могли загрузить Java ME для своих соответствующих сред ("проверка концепции" для Android). Первоначально разработанная в рамках Java Community Process как JSR 68, различные реализации Java ME развивались в отдельных JSR. Устройства Java ME реализуют профиль. Наиболее распространенными являются профиль мобильного информационного устройства (Mobile Information Device Profile), предназначенный для мобильных устройств, таких как сотовые телефоны, и персональный профиль (Personal Profile), предназначенный для потребительских продуктов и встраиваемых устройств, таких как приставки и КПК. Профили являются подмножествами конфигураций, из которых в настоящее время существует две: Конфигурация устройств с ограниченными возможностями подключения (CLDC) и Конфигурация подключенных устройств (CDC). В 2008 году платформы Java ME были ограничены функциональностью JRE 1.3 и использовали эту версию формата файла класса (внутренне известную как версия 47.0).

Реализация

Oracle предоставляет эталонную реализацию спецификации, а также некоторые конфигурации и профили для MIDP и CDC. Начиная с JavaME 3.0 SDK, интегрированная среда разработки (IDE) на основе NetBeans поддерживала их в единой среде. В отличие от многочисленных бинарных реализаций платформы Java, созданных Sun для серверов и рабочих станций, Sun обычно не предоставляла бинарные файлы для платформ целевых устройств Java ME, а полагалась на сторонних разработчиков для их обеспечения. Исключением являлась JRE (JVM) MIDP 1.0 для Palm OS. Sun не предоставляла J2ME JRE для устройств на базе Microsoft Windows Mobile (Pocket PC), несмотря на кампанию открытых писем с просьбой к Sun выпустить внутреннюю реализацию PersonalJava, известную под кодовым названием "Капитан Америка". Сторонние реализации широко используются производителями Windows Mobile. В какой-то момент Sun выпустила теперь заброшенную эталонную реализацию под названием phoneME. Операционные системы, ориентированные на Java ME, были реализованы DoCoMo в виде DoJa, а SavaJe – как SavaJe OS. Позднее компания SavaJe была приобретена Sun в апреле 2007 года и теперь составляет основу Sun JavaFX Mobile. Проект Mika VM с открытым исходным кодом направлен на реализацию JavaME CDC/FP, но не сертифицирован как таковой (сертифицированные реализации требуют выплаты лицензионных отчислений, что непрактично для проекта с открытым исходным кодом). Следовательно, устройства, использующие эту реализацию, не могут заявлять о совместимости с JavaME CDC. Операционная система Android, основанная на Linux, использует проприетарную версию Java, которая по замыслу схожа, но во многом отличается от Java ME.

Конфигурация ограниченного подключенного устройства

Конфигурация устройств с ограниченными возможностями (CLDC) содержит строгий поднабор библиотек классов Java и представляет собой минимальный объем, необходимый для работы виртуальной машины Java. CLDC в основном используется для классификации множества устройств по фиксированной конфигурации. Конфигурация предоставляет наиболее базовый набор библиотек и функций виртуальной машины, которые должны присутствовать в каждой реализации среды J2ME. В сочетании с одним или несколькими профилями, конфигурация Connected Limited Device Configuration предоставляет разработчикам надежную Java-платформу для создания приложений для потребительских и встраиваемых устройств. Конфигурация предназначена для устройств с общей памятью от 160 до 512 КБ, при этом минимум 160 КБ ROM и 32 КБ оперативной памяти должны быть доступны для Java-платформы.

Профиль мобильного информационного устройства

Разработанный для мобильных телефонов, Mobile Information Device Profile включает графический интерфейс пользователя и API для хранения данных, а MIDP 2.0 включает в себя базовый 2D-игровой API. Приложения, написанные для этого профиля, называются MIDlet’ами. JSR 271: Mobile Information Device Profile 3 (окончательный релиз 9 декабря 2009 года) определил профиль мобильного информационного устройства третьего поколения (MIDP3), расширяя функциональность во всех областях и улучшая совместимость между устройствами. Ключевой целью разработки MIDP3 является обратная совместимость с контентом MIDP2.

Профиль модуля информации

Профиль информационного модуля (IMP) — это профиль для встраиваемых "безголовых" устройств, таких как торговые автоматы, промышленные встраиваемые приложения, системы безопасности и подобные устройства с простым или отсутствующим дисплеем и ограниченными сетевыми возможностями. Изначально представленный компаниями Siemens Mobile и Nokia как JSR 195, IMP 1.0 является строгим подмножеством MIDP 1.0, за исключением отсутствия API пользовательского интерфейса, то есть поддержки пакета Java javax.microedition.lcdui. JSR 228, также известный как IMP NG, — это следующее поколение IMP, основанное на MIDP 2.0, использующее новые типы безопасности и сетевые API MIDP 2.0, а также другие API, такие как PushRegistry и platformRequest, но, как и прежде, не включающее API пользовательского интерфейса и игровой API.

Конфигурация подключенного устройства

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

Профиль фонда

Профиль Foundation — это профиль конфигурации подключенных устройств Java ME (CDC). Он предназначен для устройств, которым требуется полная реализация виртуальной машины Java, включая весь API Java Platform, Standard Edition. Типичные реализации будут использовать некоторое подмножество этого набора API в зависимости от поддерживаемых дополнительных профилей. Данная спецификация была разработана в рамках Java Community Process.

Личный профиль

Персональный базовый профиль расширяет базовый профиль Foundation, добавляя поддержку простого графического пользовательского интерфейса в виде подмножества AWT. Эта платформа является основой для BD J.

Основание

JSR #NameDescription 68J2ME Спецификация платформы 30CLDC 1.x 37MIDP 1.0 118MIDP 2.x 139CLDC 1.1 271MIDP 3.0 Java ME 3.4 и более ранние версии, Последняя спецификация для мобильных телефонов, Функции языка Java как в Java SE 1.3 360 CLDC 8 Новое в Java ME 8 361 MEEP 8 Новое в Java ME 8, Функция языка как в Java SE 8, для устройств Интернета вещей.

Основные расширения

JSR #NameDescription
MSA 75File Connection and PIM APIФайловая система, контакты, календарь, задачи
82BluetoothBluetooth serial port communications and file exchanges (OBEX)
120Wireless Messaging API (WMA)
135Mobile Media API (MMAPI)Аудио, видео, мультимедиа
172Web Services APIXML parsers and RPC
177Security and Trust Services API (SATSA)APDU, Java Card RMI (JCRMI), Public Key Infrastructure (PKI) и криптография
179Location APIGPS координаты, адреса улиц, датчики ориентации, хранилища ориентиров
180SIP API
184Mobile 3D Graphics (M3G)Высокоуровневая 3D графика
185Java Technology for the Wireless Industry (JTWI)Общие
205Wireless Messaging API (WMA)
211Content Handler API (CHAPI)
226Scalable 2D Vector Graphics API for J2ME (M2G)Обработка SVG Tiny
228Information Module Profile Next Generation (IMP NG)
229Payment API
234Advanced Multimedia Supplements (AMMS)Расширения MMAPI
238Mobile Internationalization APILокализованные ресурсы, форматирование даты и чисел в соответствии с региональными настройками, сравнение строк в соответствии с региональными настройками
239Java Bindings for the OpenGL ES API
248Mobile Service Architecture (MSA)
253Mobile Telephony API
256Mobile Sensor APIЧтение значений с акселерометров, гироскопов, компасов, термометров, барометров и других датчиков
257Contactless Communication API
258Mobile User Interface Customization API
272Mobile Broadcast Service API for Handheld Terminals
280XML API for Java ME
281IMS Services API
287Scalable 2D Vector Graphics API 2.0 for Java ME
293Location API 2.0
298Telematics API for Java ME
300DRM API for Java ME
325IMS Communication Enablers

Будущее

JSR #NameDescription 297Mobile 3D Graphics API (M3G) 2.0 Предварительная финальная версия от 14 апреля 2009 года.

ЭСР

Консорциум ESR занимается разработкой стандартов для встраиваемой Java, особенно экономически эффективных стандартов. Типичные области применения включают промышленное управление, машинные коммуникации, медицину, электронные счетчики, домашнюю автоматизацию, потребительскую электронику, интерфейсы человек-машина.

ESR #NameDescription 001B ON (Beyond CLDC) B ON служит надежной основой для реализации программного обеспечения для встраиваемой Java. Он определяет надежную фазу инициализации Java-устройства и три типа объектов: неизменяемые, бессмертные и обычные (смертные) объекты. 002MicroUIMicroUI определяет расширенную архитектуру для создания открытой среды разработки приложений сторонних разработчиков для встраиваемых HMI-устройств. Такие устройства обычно оснащены дисплеем, входными датчиками и, возможно, средствами воспроизведения звука. Эта спецификация охватывает широкий спектр устройств. 011MWTMWT определяет три различные роли: разработчики виджетов, разработчики внешнего вида и разработчики приложений. MWT позволяет бинарному HMI-приложению работать одинаково на всех устройствах, предоставляющих совместимую MWT-структуру (встраиваемые устройства, сотовые телефоны, приставки к телевизорам, ПК и т. д.), обеспечивая истинную согласованность и универсальность приложений в различных продуктовых линейках (ME, SE, EE). 015ECLASSPATHECLASSPATH объединяет среды выполнения CLDC, CDC, Foundation, SE и EE с набором из примерно 300 классов API. Компиляция с использованием CLDC1.1/ECLASSPATH обеспечивает переносимость двоичного кода между всеми средами выполнения Java.