Показаны сообщения с ярлыком J2ME. Показать все сообщения
Показаны сообщения с ярлыком J2ME. Показать все сообщения

понедельник, 4 января 2010 г.

J2ME на FreeBSD 8.0 [amd64]

Вчера разбирался с J2ME на FreeBSD 8.0 [amd64] чисто из спортивного интереса.

В портах есть Sun WTK 2.2. Он ставится, но не работает под 64-битной Sun JDK 1.6: при запуске эмулятора телефона в KToolbar выводится ошибка работы графической библиотеки.

Проблему решил следующим образом.
Временно снёс нативный JDK1.6. Запустил линуксулатор (эмулятор Linux 2.6.16 + linux_base-f10); поставил 32-битный java/linux-sun-jdk16; установил java/sun-wtk с небольшой шлифовкой его конфигов (переименовал каталог wtklib/FreeBSD в wtklib/Linux); заново установил нативный JDK (64-битный). Оба JDK сосуществуют без проблем — при необходимости нужная JVM выбирается через панель управления настройками javaws. WTK 2.2 работает с собственными настройками: пути к линуксовой JVM автоматически прописаны в скрипты запуска его утилит при инсталляции.

Sun JavaME SDK 2.5.2 похожим образом запустить не удалось — KToolbar при запуске эмулятора пишет об ошибке в распределении памяти shm.

вторник, 14 октября 2008 г.

Eclipse Ganymede 3.4.1 и Sun WTK 2.2

Ну наконец-то оно собралось и заработало.


Встречаем: порт ports/java/eclipse-devel

вторник, 8 апреля 2008 г.

Sun WTK 2.2 в окружении JDK 1.6 на FreeBSD 7.0

Комплект разработчика Sun WTK портировался и тестировался для работы в Linux-окружении JDK версии 1.4.2 и выше. Его удавалось завести под Diablo JDK 1.5, нативной версией Sun J2SE SDK 1.5, но при этом нужно было обеспечить поддержку Linux ABI со стороны ядра FreeBSD — загружать модуль linux.ko и держать каталог /usr/compat/linux с так называемой linux_base.

Все компоненты, необходимые для работы эмулятора определены, осталось правильно их настроить.

Оказалось, что устаревшая версия Diablo JDK 1.5 в принципе заменима новой версией Sun J2SE SDK 1.6 из порта ports/java/jdk16 и не надо держать две версии JDK. Так что проблема запуска эмулятора Sun WTK упирается только в используемую linux_base, а с ней не так просто.

В дистрибутив FreeBSD 7.0-RELEASE входит бинарный пакет linux_base, который устанавливается по желанию. Я устанавливал систему с boot-only CD по сети, так что от пакета linux_base пришлось отказаться до последнего момента, когда понадобилось поработать с эмулятором Sun WTK. Выяснил, что из доступного набора дистрибутивов linux_base, которые можно поставить на FreeBSD из соответствующих портов ветки ports/emulators, оригинальным бинарным пакетом является сборка из порта ports/emulators/linux_base-fc4. Чтобы обеспечить работу графических Linux-приложений в Xorg под FreeBSD, нужно также инсталлировать набор библиотек из порта ports/x11/linux-xorg-libs.

Итак, последовательность шагов по установке ПО определена весьма чётко:
% cd /usr/ports/java/jdk16 && make install clean && rehash
% cd /usr/ports/java/sun-wtk && make install clean
% kldload linux.ko
% cd /usr/ports/emulators/linux_base-fc4 && make install clean && rehash
% cd /usr/ports/x11/linux-xorg-libs && make install clean && rehash
% mount -t linprocfs linprocfs /compat/linux/proc

После этого можно открыть ktoolbar и запустить демонстрационные j2me-приложения из поставки Sun WTK. Для создания и редактирования проектов в самом ktoolbar необходимо иметь соответствующие права доступа к подкаталогам /usr/local/sun-wtk.

Чтобы запускать поддержку Linux ABI при старте системы, необходимо в файл /etc/rc.conf добавить строчку:
linux_enable="YES"

В конец файла /etc/fstab добавить строчку автомонтирования файловой системы linuxprocfs:
...
linprocfs /compat/linux/proc linprocfs rw 0 0


В общем, на этом проблемы с запуском можно считать решёными.

четверг, 11 октября 2007 г.

Sun WTK в окружении JDK 1.6 на FreeBSD



Препосылки
Приложения из пакета Sun WTK 2.2, установленные из Коллекции портов FreeBSD, не работают должным образом. Так, например, при запуске любого тестового J2ME-приложения (из числа демонстрационных, входящих в комплект поставки Sun WTK) в KToolbar возможно одно из следующих сообщений об ошибке:
1) Ошибка обращения к нативной библиотеке libXpm;
2) Ошибка LIME номер такой-то;
3) Ошибка компиляции из-за неверной кодировки строк символов в исходниках.

С самого начала было ясно, что комплект разработчика Sun WTK портировался и тестировался для работы в Linux-окружении JDK версии 1.4.2 и выше. Странно, что ранее его удавалось завести под Diablo JDK 1.5, нативной версией Sun J2SE SDK 1.5. С недавних пор работа эмулятора Sun WTK вызывала серьёзные нарекания. Возможно, это как-то связано с существенными изменениями в ядре операционной системы и переходу на новую версию оконной системы Xorg 7.2, а затем и на Xorg 7.3. Кардинальные обновления Sun WTK 2.2 не наблюдались — по-прежнему использовался дистрибутив для Linux, зависимый по сборке от нативной Diablo JDK 1.5.

Пути решения
Путь решения оказался самым элементарным: очистить систему от установленных JDK, попробовать установить Sun WTK, заставив его запускаться в окружении Linux-версии Sun JDK из Коллекции портов. Далее накатить нативную версию Sun JDK для обеспечения эффективной работы остальных java-приложений в системе. Благо, FreeBSD позволяет работать нативным Linux-приложениям, используя режим трансляции API-вызовов через механизм ABI.

Сначала был установлен пакет linux-sun-jdk-1.4.2.13. В нём Sun WTK работал стабильно, но нагрузка на процессор была близка к 100% при подозрительно-большом числе (10-15 штук!) процессов java, которые не реагировали на команду killall java даже от имени root'а — очень странная и неоптимальная конфигурация для работы. От этого пришлось отказаться.

Снова очистка и перезагрузка системы.

Решение
Далее я описываю решение, которое найдено умозрительным путём.

1. Установить Linux Sun JDK 1.6:
% cd /usr/ports/java/linux-sun-jdk16
% make rmconfig clean install clean

В начале процесса установки появится просьба скачать необходимые файлы с сайта java.sun.com и скопировать их в каталог ports/distfiles, при этом ссылки на страницы загрузки будут даны.

2. Примонтировать файловую систему Linux ProcFS:
% mount -t linprocfs linprocfs /compat/linux/proc
Без этой команды пакет разработчика Sun WTK не соберётся.
Вообще же, строчку:
linprocfs /compat/linux/proc linprocfs rw 0 0
следует добавить в файл /etc/fstab, так как без этого эмулятор Sun WTK откажется запускаться и выбросит одну из вышеприведённых ошибок.

3. Собрать Sun WTK:
% cd /usr/ports/java/sun-wtk
% make rmconfig clean install clean

После этого надо обеспечить пакет Sun WTK конфигурацией для функционирования в окружении Linux JDK:
% mkdir /usr/local/sun-wtk/wtklib/Linux
% cp /usr/local/sun-wtk/wtklib/FreeBSD/* /usr/local/sun-wtk/wtklib/Linux/


4. Можно перезагрузить систему командой:
% shutdown -r now

5. Собрать и инсталлировать Diablo JDK 1.5 для сборки нативного Sun JDK 1.6:
% cd /usr/ports/java/diablo-jdk15
% make rmconfig clean install clean

В начале процесса установки появится просьба скачать необходимые файлы с соответствующих сайтов и скопировать их в каталог ports/distfiles, при этом ссылки на страницы загрузки будут даны. Впоследствии Diablo JDK 1.5 можно удалить, так как он нужен лишь на этапе сборки нативного Sun JDK 1.6 и офисного пакета OpenOffice.

6. Собрать и инсталлировать Sun JDK 1.6:
% cd /usr/ports/java/jdk16
% make rmconfig clean install

Опять же, в начале процесса установки появится просьба скачать необходимые файлы с соответствующих сайтов и скопировать их в каталог ports/distfiles, при этом ссылки на страницы загрузки будут даны. Здесь намеренно не используется команда make clean, так как при последующем удалении пакета Diablo JDK 1.5 последний уносит с собой в небытие некоторые нативные библиотеки, без которых невозможна работа сетевых Java-приложений и апплетов в Web-браузере, а значит необходимо будет либо собрать с нуля Sun JDK 1.6 (установленный Sun JDK 1.6 способен пересобрать сам себя), либо воспользоваться уже откомпилированным материалом.

7. Можно удалить пакет Diablo JDK 1.5, чтобы освободить место на диске:
% cd /usr/ports/java/diablo-jdk15
% make deinstall clean

и реинсталлировать Sun JDK 1.6:
% rehash
% cd /usr/ports/java/jdk16
% make deinstall install clean


9. Проверить версию рабочей JVM:
% java -version
Она должна быть:
java version "1.6.0_01-p1"
Java(TM) SE Runtime Environment (build 1.6.0_01-p1-root_11_oct_2007_02_04-b00)
Java HotSpot(TM) Client VM (build 1.6.0_01-p1-root_11_oct_2007_02_04-b00, mixed mode)


Итак, теперь в системе установлено две версии Sun JDK 1.6: одна для работы специфических Linux-приложений, нуждающихся в нативной поддержке Linux ABI; другая — нативный комплект разработчика для работы любых Java-приложений в окружении нативной JRE.

Собственно, на этом всё.