Мы давно хотели обеспечить в IBM Rational Rhapsody поддержку разработки Java-приложений для сотовых телефонов. В качестве основы для нового адаптера Java ME мы использовали существующий адаптер Rhapsody для разработки под Java SE. Для демонстрации результатов проделанной работы мы сгенерировали и собрали для J2ME приложение Stopwatch. Jar-файл выложили по ссылке
stopwatch.jar. Его можно скачать, установить у себя на телефоне и использовать для отсчета времени. Интерфейс приложения пока достаточно простой, в будущем мы планируем сделать его более привлекательным. Приложение Stopwatch рассматривается в учебном пособии
"Первые шаги в IBM Rational Rhapsody" Работу по интеграции Rhapsody c J2ME мы разделили на четыре этапа:
- Портирование библиотеки OXF с J2SE на J2ME
- Портирование библиотеки Animation Framework с J2SE на J2ME
- Генерация сборочных файлов для использования J2ME SDK
- Организация запуска из Rhapsody на сотовом телефоне
Для начала мы сделали возможность собирать приложение для J2ME, сгенерированное в Rhapsody на Java. Для этого мы сделали первый шаг, портировав библиотеку OXF на J2ME. Пока не сделаны 3 и 4 шаг, код генерировался из Rhapsody в каталог src проекта для NetBeans и собирался в NetBeans, а не в Rhapsody.
Библиотека OXF реализует всю необходимую инфраструктуру для реализации конечных автоматов UML. Вместо того чтобы каждый раз генерировать один и тот же код для инфраструктуры, этот код вынесен в отдельную библиотеку, API которой используется в генерируемом коде, а сама библиотека линкуется к собираемому приложению. В состав Rhapsody входят несколько различных реализаций данной библиотеки. Все они доступны в виде моделей Rhapsody и сгенерированных на основе них исходных кодах. Различные реализации библиотеки OXF позволяют приложениям, разрабатываемым в Rhapsody, собираться и работать на различных платформах: различных ОС, в условиях различных ресурсов железа (от микроконтроллеров до PC), в том числе на голом железе.
Размер собранной библиотеки OXF для J2ME составил около 48 кб. Это размер полной версии библиотеки, реализующей инфраструктуру как для асинхронной так и синхронной обработки сообщений в конечных автоматах. Часто в приложениях для телефона асинхронная обработка сообщений не нужна и хватит реализации библиотеки OXF только с синхронной обработкой. Я думаю, что она будет занимать не более 10-15 кб.
Так как мы сделали пока только первый шаг, для J2ME пока нельзя генерировать и собирать код в режиме анимации. Также пока нельзя собирать и запускать приложение из Rhapsody - только из IDE. Для этого нужно проделать следующие три этапа, описанные выше.
Напоследок несколько слов о назначение Animation Framework (ее предстоит портировать на втором шаге). Это еще одна библиотека, которая линкуется к приложению, код которого сгенерирован в режиме анимации. В этом режиме в код вставляются анимациионные вставки, реализующими взаимодействие между Rhapsody и приложением в процессе его отладки на уровне модели.
Изначально мы думали, что придется немного адаптировать библиотеку Animation Framework для реализации взаимодействия приложения с Rhapsody через Bluetooth. Но когда дошло до дела, мы сообразили, что можно использовать стандартные возможности анимационной библиотеки для организации взаимодействия по tcp/ip. Для этого нужно, чтобы телефон и компьютер с Rhapsody видели друг друга в одной локальной сети. Для этого проще всего будет воспользоваться WiFi. Мы запускаем на сотовом телефоне свободное приложение WiFi Joikuspot, которое превращает телефон в WiFi точку доступа. После этого подключаемся к этой точке доступа с ноутбука, тем самым телефон и ноутбук оказываются в одной локальной сети и могут взаимодействовать по tcp/ip.
Чуть более подробно о возможностях Rhapsody по отладке на уровне моделей можно узнать из моей презентации на QNX Russia
Разработка ПО в IBM Rational Rhapsody с использованием конечных автоматов.