Введение

Спецификация для использования Java

Mobile Information Device Profile (MIDP) – это спецификация, опубликованная для использования Java на встраиваемых устройствах, таких как мобильные телефоны и карманные компьютеры (PDA). MIDP является частью платформы Java Platform, Micro Edition (Java ME) и базируется на Connected Limited Device Configuration (CLDC) – наборе низкоуровневых программных интерфейсов. MIDP был разработан в рамках Java Community Process. Первые устройства, поддерживающие MIDP, появились в апреле 2001 года.

Общие API

Основные интерфейсы прикладного программирования определяются базовой системой Connected Limited Device Configuration.

javax.microedition.io (всего лишь для пользователей)

Содержит классы, специфичные для Java ME, используемые для операций ввода-вывода.

javax.microedition.lcdui (всего лишь для пользователей)

Содержит классы, специфичные для Java ME, используемые для графического пользовательского интерфейса. LCDUI использует простой экранный подход, при котором в пользовательском интерфейсе приложения одновременно активен только один Displayable. API LCDUI предоставляет небольшой набор Displayable, часто встречающихся в пользовательских интерфейсах мобильных устройств: List (Список), Alert (Оповещение), TextBox (Текстовое поле), Form (Форма) и Canvas (Холст). Для всех Displayable реализация MIDP на устройстве контролирует представление и макет элемента. Canvas – это графическая поверхность низкого уровня, содержимое которой полностью контролируется приложением, хотя обычно часть пространства резервируется для системных областей, таких как заголовок экрана и индикаторы, типичные для пользовательских интерфейсов мобильных устройств. Начиная с MIDP 2.0, Canvas также поддерживает полноэкранный режим, позволяющий использовать полноэкранную графику, что особенно полезно для игр. LCDUI также использует довольно уникальный подход к абстрактным операциям, называемым Commands (Команды). Размещение команд, добавленных к Displayable, полностью зависит от реализации этого инструментария на устройстве. Программист приложения использует типы команд, определенные API, для указания назначения или цели команды в пользовательском интерфейсе приложения. Наиболее распространенные типы: BACK (Назад), EXIT (Выход), ITEM (Элемент), SCREEN (Экран). Идея абстракции команд заключается в повышении переносимости приложений между различными мобильными устройствами. Разработчикам приложений следует правильно использовать типы команд, чтобы указать назначение операции, а реализация на устройстве затем размещает операцию в стандартном месте для данного типа в соответствии со стилем пользовательского интерфейса устройства. Это может быть, например, определенная клавиша, такая как "клавиша навигации назад" для команд BACK, или кнопка на экране.

Сокращение LCDUI

Акроним LCDUI изначально был внутренней шуткой в экспертной группе JCP. Хотя он и не определен в спецификациях MIDP, он обозначает пользовательский интерфейс устройства с ограниченными возможностями. (Шутка заключалась в том, что никто, кроме членов группы, толком не знал, что он означает). Позже в книге "Программирование беспроводных устройств с использованием платформы Java 2, Micro Edition" было приведено это определение. Появились и другие распространенные неофициальные определения. "Пользовательский интерфейс с жидкокристаллическим дисплеем" отражает тот факт, что мобильные телефоны обычно используют ЖК-дисплеи, однако API не адаптирован специально под эту технологию отображения. Также утверждается, что "LCD UI" расшифровывается как "наименьший общий знаменатель", поскольку данный интерфейс имеет максимально простую конструкцию.

javax.microedition.rms (в переводе с английского)

Система управления записями предоставляет возможность постоянного хранения данных для Java ME, функционируя как база данных на мобильном устройстве.

javax.microedition.midlet (полное издание)

Содержит базовые классы для приложений Java ME и позволяет приложениям получать уведомления об изменениях их состояния.

Факультативные СОП

Следующие запросы спецификаций Java представляют собой подборку необязательных JSR, которые можно добавить к реализации MIDP для расширения функциональности. Поскольку эти JSR являются необязательными, нет гарантии, что мобильное устройство MIDP будет поддерживать соответствующие API.

javax.microedition.messaging (микроиздание. сообщения)

API для обмена беспроводными сообщениями (необязательно), для отправки SMS и MMS сообщений.

javax.microedition.pim (продолжение)

Управление личной информацией API (опционально), доступ к адресной книге устройства, списку задач и календарю.

javax.microedition.io.file (проект)

Факультативный пакет File Connection (FCOP) — один из двух дополнительных пакетов, определенных спецификацией JSR 75 в рамках Java Community Process. API FileConnection, определенный в JSR 75, обеспечивает доступ к локальным файловым системам на устройствах, таких как КПК. Для решения проблем безопасности MIDlet должен включать запрошенные разрешения на работу с файлами в свой JAD-файл в свойстве MIDlet Permission.

Инструменты развития

Существует несколько различных способов создания приложений MIDP: код можно писать в обычном текстовом редакторе, либо использовать более продвинутую интегрированную среду разработки (IDE), такую как NetBeans, IntelliJ (с предустановленным плагином Java ME) или Eclipse (с плагинами, например, EclipseME), которая предоставляет графический интерфейс для визуального создания форм, а также множество других расширенных функций, недоступных в простом текстовом редакторе.

Ограничения MIDP 1.0

В MIDP 1.0 отсутствуют API для активного рендеринга.
В MIDP 1.0 отсутствует поддержка прямого доступа к пикселям изображения (данные RGB).
В MIDP 1.0 отсутствует поддержка полноэкранного режима.
В MIDP 1.0 отсутствует поддержка аудио. MIDP 1.0 требует только поддержки HTTP. MIDP 1.0 не может запросить состояние клавиши (хотя события нажатия клавиш поддерживаются).
Спецификации не всегда четкие, что приводит к различиям в реализациях. Некоторые ограничения можно обойти, используя API, специфичный для производителя, или MIDP 2.0, что снижает переносимость приложения.

История

MIDP был разработан в рамках Java Community Process. MIDP 1.0 (JSR 37) – утвержден 19 сентября 2000 года. MIDP 2.0 (JSR 118) – утвержден 20 ноября 2002 года. MIDP 3.0 (JSR 271) – утвержден 9 декабря 2009 года.

Начиная с Java ME 8, MIDP был заменен профилем ME Embedded.