Открыть сервис

Java MIDP 2.0

Java MIDP 2.0 — это спецификация платформы для разработки приложений (MIDlets) на мобильных устройствах, вторая версия профиля Mobile Information Device Profile (MIDP), входящего в состав платформы Java 2 Platform, Micro Edition (J2ME). MIDP 2.0, принятый в рамках Java Community Process (JCP) как JSR 118, определил стандартизированную среду выполнения для мобильных телефонов, коммуникаторов и других устройств с ограниченными ресурсами, расширив возможности первой версии (MIDP 1.0) в области графики, мультимедиа, сетевого взаимодействия и безопасности.

История

Первая версия MIDP (MIDP 1.0, JSR 37) была выпущена в 2000 году и обеспечивала базовый набор API для создания простых игр и приложений на мобильных телефонах. Однако к началу 2000-х годов рынок мобильных устройств стремительно развивался: появлялись цветные экраны, встроенные камеры, поддержка звука и более сложные пользовательские сценарии. Это потребовало обновления спецификации.

Спецификация MIDP 2.0 была разработана под руководством таких компаний, как Nokia, Motorola, Siemens и Sun Microsystems, и официально принята в ноябре 2002 года. Она стала обязательным стандартом для большинства мобильных телефонов, выпускавшихся в середине 2000-х годов, и оставалась основной платформой для Java-приложений на телефонах вплоть до массового распространения смартфонов на iOS и Android в конце 2000-х — начале 2010-х годов.

Основные отличия от MIDP 1.0

MIDP 2.0 ввёл ряд ключевых улучшений по сравнению с предшественником:

  • Расширенная графика: появилась поддержка прозрачности (альфа-канал), вращения и масштабирования изображений, а также класса GameCanvas для игр с двойной буферизацией.
  • Мультимедиа: встроен поднабор Mobile Media API (MMAPI, JSR 135), позволяющий воспроизводить звук (тоны, WAV, MIDI, а позднее — MP3) и видео.
  • Сеть: добавлена поддержка HTTPS (безопасные HTTP-соединения), а также возможность работы с сокетами (TCP) и датаграммами (UDP) через Generic Connection Framework (GCF).
  • Безопасность: введена модель защиты на основе доменов (trusted/untrusted MIDlets), позволяющая пользователю контролировать доступ приложений к ресурсам (сеть, файловая система, вызовы).
  • Пользовательский интерфейс: добавлены новые компоненты (например, CustomItem для создания собственных элементов интерфейса), улучшена работа с формами и списками.
  • Push-уведомления: появилась возможность запуска MIDlet’а по внешнему событию (например, по таймеру или при получении сетевого пакета).

Архитектура и компоненты

MIDP 2.0, как и предыдущая версия, опирается на Configuration (CLDC — Connected Limited Device Configuration). CLDC определяет минимальный набор библиотек Java (например, java.lang, java.util, java.io), а MIDP добавляет специфичные для мобильных устройств API.

Основные пакеты MIDP 2.0

  • javax.microedition.lcdui — библиотека для создания пользовательского интерфейса (экраны, формы, списки, текстовые поля, изображения).
  • javax.microedition.midlet — базовый класс MIDlet, управляющий жизненным циклом приложения.
  • javax.microedition.io — Generic Connection Framework (GCF) для работы с сетью (HTTP, HTTPS, сокеты, датаграммы, COM-порты).
  • javax.microedition.media — интерфейсы для воспроизведения аудио и видео (MMAPI).
  • javax.microedition.rms — Record Management System (RMS) для хранения небольших объёмов данных в постоянной памяти устройства.
  • javax.microedition.pki — поддержка сертификатов и безопасных соединений.

Жизненный цикл MIDlet’а

Приложение на MIDP 2.0 (MIDlet) проходит через три основных состояния:

  1. Paused — приостановлено, не использует ресурсы.
  2. Active — активно, отображается на экране.
  3. Destroyed — уничтожено, все ресурсы освобождены.

Управление состояниями осуществляется методами startApp(), pauseApp() и destroyApp(boolean unconditional).

Графика и игры

Одним из важнейших нововведений MIDP 2.0 стал класс GameCanvas, который значительно упростил разработку игр. Он предоставляет:

  • Двойную буферизацию (рисование происходит в фоновом буфере, затем буфер выводится на экран без мерцания).
  • Прямой доступ к состоянию клавиш (без обработки событий).
  • Возможность рисовать спрайты, анимированные объекты и управлять слоями.

Кроме того, MIDP 2.0 ввёл класс TiledLayer для создания тайловых карт (например, для платформеров или RPG) и Sprite для управления анимированными изображениями.

Мультимедиа

Благодаря включению MMAPI (Mobile Media API), MIDP 2.0 позволил воспроизводить звуковые файлы и видео. Поддерживались форматы:

  • Аудио: тоны (DTMF), WAV, MIDI, а в некоторых реализациях — MP3, AMR.
  • Видео: 3GP, MPEG-4 (зависит от реализации производителя телефона).

Управление воспроизведением осуществлялось через интерфейс Player, который можно было получить через Manager.createPlayer().

Сетевое взаимодействие

Generic Connection Framework (GCF) в MIDP 2.0 был расширен поддержкой HTTPS, что позволило создавать защищённые соединения. Также были добавлены:

  • SocketConnection — для TCP-соединений.
  • DatagramConnection — для UDP-соединений.
  • ServerSocketConnection — для создания серверных сокетов (в некоторых реализациях).

Это дало возможность разрабатывать не только клиентские приложения, но и простые серверные компоненты, работающие на мобильных устройствах.

Безопасность

MIDP 2.0 ввёл модель безопасности, основанную на доверенных и недоверенных приложениях. MIDlet’ы могли быть подписаны цифровым сертификатом, что позволяло им получать доступ к критическим функциям (например, отправка SMS, доступ к файловой системе, сетевое взаимодействие) без запроса у пользователя. Неподписанные MIDlet’ы работали в «песочнице» и запрашивали разрешение у пользователя при каждом обращении к защищённому ресурсу.

Применение

MIDP 2.0 стал стандартом де-факто для мобильных Java-приложений в 2003–2010 годах. На нём были разработаны:

  • Игры (например, серии «Веселый фермер», «Сапёр», «Тетрис», «Змейка»).
  • Мобильные версии социальных сетей и мессенджеров (например, Opera Mini, ICQ, Jimm).
  • Банковские и финансовые приложения (мобильный банкинг).
  • Навигационные и картографические приложения (например, Java-версии 2ГИС).
  • Проигрыватели мультимедиа и ридеры.

Критика и ограничения

Несмотря на значительный прогресс, MIDP 2.0 имел ряд недостатков:

  • Фрагментация: производители телефонов по-разному реализовывали спецификацию, что приводило к несовместимости приложений на разных моделях.
  • Ограниченная производительность: устройства с процессорами 50–200 МГц и 1–8 МБ ОЗУ не позволяли запускать сложные приложения.
  • Отсутствие поддержки сенсорного ввода: MIDP 2.0 был ориентирован на кнопочные телефоны; поддержка сенсорных экранов появилась только в более поздних расширениях (например, в MIDP 3.0).
  • Слабая поддержка многопоточности: хотя потоковая модель Java была доступна, многие устройства не могли эффективно выполнять несколько потоков одновременно.

Наследие

MIDP 2.0 сыграл ключевую роль в популяризации мобильных приложений до эры смартфонов. Он позволил миллионам пользователей по всему миру устанавливать игры и программы на свои телефоны, что стало предшественником современных магазинов приложений. Спецификация MIDP 2.0 была заменена на MIDP 3.0 (JSR 271) в 2009 году, но к тому времени рынок уже активно переходил на iOS и Android. Тем не менее, многие устройства на Java ME продолжали выпускаться вплоть до середины 2010-х годов, особенно в развивающихся странах.

Источники

  • JSR 118: Mobile Information Device Profile 2.0 (Java Community Process)
  • Sun Microsystems. «Mobile Information Device Profile (MIDP) 2.0 Specification», 2002
  • Nokia. «Forum Nokia: MIDP 2.0 Developer's Guide», 2003
  • Книга: «Java 2 Micro Edition. Разработка мобильных приложений» (Дж. Кнутсен, 2004)
  • Документация Java ME Platform SDK (Oracle)

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →