Java на Palm
Хороший праздник Новый Год. Хотя бы потому, что ваши родные и близкие могут подарить вам по такому поводу что-нибудь вроде PalmPilot. Меня в этот раз осчастливили машинкой Visor. Сам я его врядли бы купил, а теперь уже просто не могу представить, как можно без него обходиться. :-) Сейчас стало модным слово "buzzword". Трудно сказать что именно под этим подразумевается, но часто, произнося его, имеют ввиду Java и все, что с ней связано. В связи с тем, что джавой занимаются такие монстры как Sun, IBM и т.п., неудивительно, что сейчас она везде или как любит выражаться оппозиция - "пихают вовсюда" :-). Не минула сия участь и PalmOS. Эта статья не претендует на руководство для Java-девелопера по разработке софта для Palm на Java. Сам я по долгу службы давно и надолго имею дело только с Java и меня, конечно же, интересовало как с ней обстоят дела на платформе Palm. Возможно, что вместо последующей болтологии следовало просто привести ссылки и позволить читателю самому исследовать предмет разговора (например при помощи эмулятора Palm для Windows или Linux), но по ряду причин мне показалось, что интереснее будет сделать краткий обзор всего, что есть. Из-за того, что ресурсы PDA и особенно клонов Palm ограничены, понятно, что не может быть и речи о "большой" Java 2. Так и появилась J2ME (Java 2 Micro Edition). Спецификация была разработана примерно в начале 2000 года и рассчитана на пользовательские устройства (не только PDA). Да, да, та самая джава для чайников в прямом смысле этого слова. :-) Причем предоставляемый API может быть специализированным, чтобы с минимальными затратами (и потерями) удовлетворить потребности каждого конкретного типа устройств. При всем при том это остается тот же самый язык Java и практически та же самая JVM (разумеется с точки зрения языка и исполняемого байткода), то есть наработки для манипуляции данными в системах на базе "большой" Java работают (заметьте, не "легко переносятся", а именно работают) и в "маленькой" Java и разумеется здесь не идет речь о переносе GUI с рабочих станций на такие устройства (это просто не нужно). Впрочем я несколько отвлекся. Посмотрим что же у нас есть для PalmOS. KVM
Первым детищем этой волны наверное стала KVM. Виртуальная машина для устройств с ограниченной конфигурацией (Connected Limited Device Configuration или CDLC). Разработана Sun и не особо привередлива к памяти, как впрочем и к процессору, потому, как задачи, которые перед ней стоят, особой скорости не требуют. Здесь можно ознакомиться подробнее и бесплатно скачать тулкит для PalmOS:
Как я уже говорил, ограниченные ресурсы устройств не позволяют полностью
сохранить существующее API, поэтому AWT (низкоуровневый графический тулкит Java)
в состав KVM не входит. Однако умельцев это не остановило и kAWT весьма неплохо
работает на Palm.
J9Затем на рынке появилась виртуальная машина J9 от IBM. Она поставляется вместе с IBM Visual Age Micro Edition и имеет рантайм (целевую платформу) для процессоров 68000, x86, MIPS, PowerPC, ARM, StrongARM, SH-3, SH-4 и для операционных систем PalmOS, Linux, Windows CE, QNX, Neutrino. Для QNX, кстати, раздается и realtime расширение Java. Подробнее ознакомиться и бесплатно скачать все это (вместе с IDE) можно на сайте IBM Visual Age Micro Edition.
Интересной особенностью J9 является то, что она может исполнять как обычный
байткод (тот, который понимает "большая" Java), так и специализированный
предкомпиленый (нечто вроде статической nаtive компиляции).
Кстати сама оболочка-IDE IBM Visual Age Micro Edition запускается в J9.
Впрочем на Palm этого выбора уже не остается и .PRC делаются как раз из
предкомпиленых специально для Palm бинарников. Что-то вроде трехэтапной сборки -
компиляция исходников на Java в обычный Java bytecode, компиляция полученного
bytecode в нэйтив бинарник для конкретной целевой платформы и, наконец, сборка
финального файла для установки на устройство (в нашем случае Palm).
По субъективным ощущениям J9 работает несколько резвее KVM, и по
функциональности ничуть не уступает ей. так, например, kAWT работает в J9.
WabaСудя по всему авторы этой виртуальной машины
не были довольны производительностью существующих для PalmOS JVM и
разработали свою, но быструю. Я не случайно сказал "этой виртуальной машины",
так как Waba к джаве имеет весьма косвенное отношение. Да она использует
синтаксис Java для программ, но и только. Стандартные библиотеки классов у нее
свои, в языке, да и в виртуальной машине из простых числовых типов остался
только Integer, нет эксепшнов, тредов и синхронизации. То есть все по минимуму.
Вы резонно спросите зачем нужен такой обрубок? Хитрость в том, что "большая"
Java может исполнять программы для Waba (но не наоборот) и вы можете без
изменений поместить свою waba-программку в Java апплет и запустить из
веб-браузера с поддержкой Java, да и разрабатывать такую программу попроще, чем на
C или ассемблере (для отладки даже эмулятор палма не нужен).
Кстати, на PalmGear предприимчивые
буржуины во всю продают shareware софт, написанный на Waba.
JumpJump компилирует Java байткод в исходные тексты ассемблера 68000, которые потом могут быть скомпилированы обычным транслятором Pila. Эту вещь я сам не пробовал, но она, как это ни странно, и самая древняя. Последняя бэта датируется 1997 годом. Исходники открыты. Jump не позволяет работать с HTTP и писать Java аплеты для Palm. Скачать его можно здесь и здесь. Интересующимся могу так же порекомендовать ознакомиться со статьей на Earthweb.IDE'sКак и любой большой бизнес (мы ведь о buzzword говорим), разработка для Palm на Java просто не могла обойтись без IDE. А где есть IDE для Java, просто не может не быть таких грандов как IBM Visual Age for Java и JBuilder. Первый я уже упоминал, когда говорил о J9, а второй присутствует на этом рынке в виде дополнения к "большому" JBuilder 4. Не буду на них останавливаться подробно, просто привелу ссылки: Подробнее хочется остановиться на IDE, разработанном фирмой Data Representations - Simplicity for PalmOS Platform. Этот IDE предоставляет полный цикл разработки для PalmOS на Java, то есть ведение проектов, редактор исходных текстов, визуальный редактор экранных форм с поддержкой генерации стабов для обработки событий от контролов, отладчик, эмулятор Palm (тоже, кстати, написанный на Java) и линкер .PRC. Правда вся эта красота стоит $700, но это достойная цена за такие возможности. На сколько я знаю, аналогичного продукта для C или ассемблера не существует.Следует заметить, что все вышеупомянутые IDE тоже написаны на Java. JBuilderХочу добавить о JBuilder и Palm. Собственно палмом я обзавелся недавно (с неделю назад) но сразу захотелось написать софт на яве для него :) MIDPВключает в себя Java машину и тулсу для конверции jad , jar файлов в prc. теперь сотни игр с мобильников спецификации J2ME идут на палме, игры можно найти хотя бы на www.midlet.org Делать надо так, для начала надо установить jdk c
java.sun.com java среда собственно нужна для запуска конвертера
converter.jar, Lite XML parsersВ начале этой статьи я говорил о buzzword. Говоря о Java, нельзя не вспомнить XML. Какой же настоящий buzzword может обойтись без этой парочки? :-) А раз тема нашей беседы Java на PalmOS, то без XML на PalmOS нам ну никак не обойтись. Я совершенно серьезно. Возможно на автономных PDA такое и даром не нужно, но если вы в онлайне общаетесь с большой системой, то применение XML сразу себя оправдывает. Не буду приводить аргументов, просто взгляните на список реальных XML парсеров (в скобках приведены размеры байткода):LinksВ заключение приведу несколько ссылок по теме:
-- |
|||||