В данной статье рассматривается виртуальная Java-машина CLDC HI с открытым исходным кодом компании Sun для встраиваемых и мобильных платформ, а также её построение для вычислительных машин с архитектурой ARM.
Connected Limited Device Configuration HotSpot Implementation Virtual Machine (CLDC HI VM) — высокопроизводительная виртуальная Java машина для устройств, ограниченных в ресурсах, разрабатываемая компанией Oracle (бывшей Sun). Это одна из виртуальных машин для «малых» устройств, позволяющая запускать J2ME-приложения на устройствах с ограниченным объемом памяти и вычислительной мощностью, например, на мобильных телефонах, КПК, платежных терминалах и т.д.
CLDC HI JVM является оптимизированной виртуальной машиной, которая обеспечивает более быстрое исполнение байт-кода и более эффективное использование ресурсов по сравнению с другими доступными виртуальными машинами, такими как Squawk, KVM, Maxine, CVM и пр. Стоит отметить, что данная Java-машина ориентирована главным образом на ARM процессоры.
Как отдельный продукт она не поставляется, но входит в несколько решений для производителей соответствующей аппаратуры. Одна из версий этой виртуальной машины разрабатывалась компанией Sun под лицензией GPLv2, т.е. с открытым исходным кодом (также проект носит имя PhoneME Feature). Однако документации по сборке и запуску этой виртуальной машины в публичном доступе практически нет, и её разработка и поддержка практически были остановлены Oracle'ом после поглощения компании Sun.
Поэтому в данной статье приводится краткое описание самой CLDC HI и её сборки + подробные инструкции сборки по ссылке ниже.
Устройства, на которых может работать J2ME-приложение, определяются поддерживаемой конфигурацией и профилем платформы. Конфигурация описывает только низкоуровневую часть платформы: возможности языка Java, его виртуальной машины, и базовые классы.
В настоящее время существуют две конфигурации для платформы Java ME:
Более высокоуровневой частью платформы является профиль. Предполагается, что профиль будет задаваться для каждого крупного класса устройств (мобильные телефоны, игровые автоматы, бытовые приборы). Т.е. профиль определяет тип устройств, поддерживаемых приложением. Профиль дополняет конфигурацию специфическими классами, определяющими область применения устройств.
В J2ME определено два профиля, построенных на основе CLDC: KJava и Mobile Information Device Profile (MIDP). Для CDC доступен шаблонный профиль, на котором можно строить свои собственные, Foundation Profile.
Платформа, состоящая из CLDC и MIDP, достаточно распространена на рынке мобильных телефонов. Стоит отметить, что CLDC HI также основывается на конфигурации CLDC 1.1(JSR 118) и профиле MIDP 2.1 (JSR 139).
Данная виртуальная машина оказывается очень полезной, когда необходимо перенести мобильное приложение на устройство, не поддерживающее Java платформу. Поэтому в данной статье приводится описание сборки Java-машины CLDC HI, включающее:
Собственно идем в репозиторий проекта PhoneME , структура которого отображена ниже, и берем необходимые базовые компоненты: cldc, midp, pscl, tools. Если нужно расширить функционал работы Java-машины, то берем из репозитория соответствующие JSR пакеты. Они будут собираться вместе с midp.
Основные этапы построения CLDC HI:
С более детальной инструкцией по сборке на Linux'е под ARM можете ознакомиться здесь: сборка CLDC HI
После успешной сборки имеем output, содержащий собранные компоненты, которые потом переносим на целевое устройство.
В качестве целевого устройства для проверки работоспособности использовался одноплатный компьютер Raspberry Pi с ARM процессором.
На вход JVM подается jar-файл, который в свою очередь обрабатывает установщик Midlet’ов и выдает индивидуальный номер для каждого приложения (подробнее см. сборка CLDC HI). После чего запускается CLDC HI JVM с номером приложения и создается frameBuffer, в который выводится изображение экрана устройства.
Далее продемонстрирована работа java-игры змейка с помощью CLDC HI на Raspberry Pi.
P.S.: статья написана по результатам курсовой работы на Математико-механическом факультете СПбГУ.
Выполнила Сарманова С.Г.
Научный руководитель Полозов В.С.
CLDC HI
Connected Limited Device Configuration HotSpot Implementation Virtual Machine (CLDC HI VM) — высокопроизводительная виртуальная Java машина для устройств, ограниченных в ресурсах, разрабатываемая компанией Oracle (бывшей Sun). Это одна из виртуальных машин для «малых» устройств, позволяющая запускать J2ME-приложения на устройствах с ограниченным объемом памяти и вычислительной мощностью, например, на мобильных телефонах, КПК, платежных терминалах и т.д.
CLDC HI JVM является оптимизированной виртуальной машиной, которая обеспечивает более быстрое исполнение байт-кода и более эффективное использование ресурсов по сравнению с другими доступными виртуальными машинами, такими как Squawk, KVM, Maxine, CVM и пр. Стоит отметить, что данная Java-машина ориентирована главным образом на ARM процессоры.
Как отдельный продукт она не поставляется, но входит в несколько решений для производителей соответствующей аппаратуры. Одна из версий этой виртуальной машины разрабатывалась компанией Sun под лицензией GPLv2, т.е. с открытым исходным кодом (также проект носит имя PhoneME Feature). Однако документации по сборке и запуску этой виртуальной машины в публичном доступе практически нет, и её разработка и поддержка практически были остановлены Oracle'ом после поглощения компании Sun.
Поэтому в данной статье приводится краткое описание самой CLDC HI и её сборки + подробные инструкции сборки по ссылке ниже.
О профилях и конфигурациях
Устройства, на которых может работать J2ME-приложение, определяются поддерживаемой конфигурацией и профилем платформы. Конфигурация описывает только низкоуровневую часть платформы: возможности языка Java, его виртуальной машины, и базовые классы.
В настоящее время существуют две конфигурации для платформы Java ME:
- CDC — Connected Device Configuration — используется с виртуальной машиной на устройствах с 32-разрядной архитектурой и требует более 2 Мб памяти. Она предусматривает больше возможностей для приложений по сравнению с CLDC, но и более жесткие требования к аппаратуре.
- CLDC — Connected Limited Device Configuration — используется для 16- и 32-разрядных устройств с ограниченным объемом памяти.
Приложения J2ME, созданные с учетом конфигурации CLDC, ориентированы на устройства со следующими характеристиками:- Минимальный объём ПЗУ: 128 килобайт для CLDC 1.0, 160 килобайт для CLDC 1.1
- Минимальный объём ОЗУ: 32 килобайта
- Процессор: 16- или 32-битный
- Низкое энергопотребление
- Подключение к сети, в том числе беспроводной, с нестабильным соединением и ограниченной скоростью передачи данных и пр.
Более высокоуровневой частью платформы является профиль. Предполагается, что профиль будет задаваться для каждого крупного класса устройств (мобильные телефоны, игровые автоматы, бытовые приборы). Т.е. профиль определяет тип устройств, поддерживаемых приложением. Профиль дополняет конфигурацию специфическими классами, определяющими область применения устройств.
В J2ME определено два профиля, построенных на основе CLDC: KJava и Mobile Information Device Profile (MIDP). Для CDC доступен шаблонный профиль, на котором можно строить свои собственные, Foundation Profile.
Платформа, состоящая из CLDC и MIDP, достаточно распространена на рынке мобильных телефонов. Стоит отметить, что CLDC HI также основывается на конфигурации CLDC 1.1(JSR 118) и профиле MIDP 2.1 (JSR 139).
Сборка CLDC HI
Данная виртуальная машина оказывается очень полезной, когда необходимо перенести мобильное приложение на устройство, не поддерживающее Java платформу. Поэтому в данной статье приводится описание сборки Java-машины CLDC HI, включающее:
- Минимальный набор продуктов, необходимых для сборки и компиляции;
- Настройка среды кросс-компиляции на основе gcc и binutils;
- Локализованные и исправленные ошибки в исходном коде, связанные с неполной обратной совместимостью инструментов сборки;
- Ключи компиляции для запуска на платформе с ARM архитектурой.
Собственно идем в репозиторий проекта PhoneME , структура которого отображена ниже, и берем необходимые базовые компоненты: cldc, midp, pscl, tools. Если нужно расширить функционал работы Java-машины, то берем из репозитория соответствующие JSR пакеты. Они будут собираться вместе с midp.
Основные этапы построения CLDC HI:
- Настройки среды кросс-компиляции (инструментарий, переменные окружения);
- Сборка PCSL библиотек;
- Сборка CLDC конфигурации;
- Сборка профиля MIDP (при необходимости сборка JSR пакетов).
С более детальной инструкцией по сборке на Linux'е под ARM можете ознакомиться здесь: сборка CLDC HI
После успешной сборки имеем output, содержащий собранные компоненты, которые потом переносим на целевое устройство.
Запуск на Paspberry Pi
В качестве целевого устройства для проверки работоспособности использовался одноплатный компьютер Raspberry Pi с ARM процессором.
На вход JVM подается jar-файл, который в свою очередь обрабатывает установщик Midlet’ов и выдает индивидуальный номер для каждого приложения (подробнее см. сборка CLDC HI). После чего запускается CLDC HI JVM с номером приложения и создается frameBuffer, в который выводится изображение экрана устройства.
Далее продемонстрирована работа java-игры змейка с помощью CLDC HI на Raspberry Pi.
P.S.: статья написана по результатам курсовой работы на Математико-механическом факультете СПбГУ.
Выполнила Сарманова С.Г.
Научный руководитель Полозов В.С.