Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
Gardens Point Component Pascal и J2ME https://zx.oberon.org/forum/viewtopic.php?f=27&t=27 |
Страница 1 из 1 |
Автор: | Zorko [ 20 июл 2012, 17:44 ] | ||
Заголовок сообщения: | Gardens Point Component Pascal и J2ME | ||
Код: "OBERON"
С разрешения Piligrim'а переношу топик форума www.Boolean.Name с тестовой программой на GPCP (Gardens Point Component Pascal) для J2ME на наш форум. Биндинги для GPCP к MIDP2 у Piligrim'а к сожалению не сохранились, всё что осталось — этот архив. Что ж, будет здорово, если наш форум даст толчок для новых экспериментов по использованию Оберон-технологий для разработки для J2ME, а, возможно, и Android'а. Первый этап видится мне просто попыткой повторить сделанное Пилигримом, добиться компиляции и работы данного кода. Потом безусловно можно продолжить. Делитесь, пожалуйста, достижениями. До этого я экспериментировал с компилятором JOB, пытаясь собирать мидлеты с его помощью, но не очень удачно. Были выяснены ограничения данного компилятора, сводящие на нет его пользу для разработки собственных проектов. В этом свете компиляторы GPCP и Canterbury Oberon-2 for JVM выглядят более привлекательно для практического применения. Дело по разработке для платформы Java на языках, отличных от Java, которым мы можем заняться, весьма нетривиально, но тем слаще плоды. Piligrim показал нам направление, в котором можно двигаться, за что я ему благодарен.
|
Автор: | Zorko [ 23 июл 2012, 16:23 ] | ||
Заголовок сообщения: | Gardens Point Component Pascal и J2ME | ||
Не то чтобы я был любителем платформы или языка Java. Но высокая доступность устройств с платформой Java на борту и языком Java для программирования под неё, причём практически без приемлемой альтернативы для разработчиков, пробуждают интерес к этому направлению. Поэтому я по мере освоения GPCP и получения успехов на этом поприще буду описывать свои шаги в данном направлении, в надежде, что кому-то это сэкономит время, а может и добавит энтузиазма для освоения GPCP как языка для разработки программ для интересующих меня платформ J2ME и Android. Установка GPCP сводится к распаковке архива и прописывании двух переменных, нужных для его работы. У вас должна быть установлена среда поддержки JRE (Java Runtime Environment). Скачиваем дистрибутив Gardens Point Component Pascal v1.3.12 for JVM и распаковываем в подходящую папку. У меня это будет D:\Archive\Projects\XDev\ Мой компьютер -> Свойства -> Дополнительно -> Переменные среды Там надо создать переменную PATH со значением %PATH%; D:\Archive\Projects\XDev\gpcp-JVM\bin и переменную JROOT со значением D:\Archive\Projects\XDev\gpcp-JVM Исправьте пути под свою папку с GPCP. После прописывания переменных попытка запуска GPCP может привести к такому: Цитата: "cprun" не является внутренней или внешней Значит нужна перезагрузка, чтобы переменные окружения вступили в силу.командой, исполняемой программой или пакетным файлом. На этом установка завершена. Примеры из поставки компилируются, всё работает. В принципе, процесс установки достаточно хорошо освещён в документации. Упомяну, что GPCP работает и под Linux. Благодарю Rafi за помощь в освоении GPCP.
|
Автор: | Zorko [ 24 июл 2012, 16:39 ] | ||
Заголовок сообщения: | Gardens Point Component Pascal и J2ME | ||
Попробую сделать биндинги нужных для сборки Hello.cp модулей lcdui и midlet. В более ранних версиях GPCP, как я понял, биндинги нужно было делать вручную, что-то вроде такого: Код: "OBERON"
Компилируем в midlet.cps командой: @CALL cprun gpcp -special midlet.cp Этот способ производства биндингов безусловно очень полезен, но какова же была моя радость, когда я увидел в поставке GPCP утилиту J2CPS, которая генерирует символьные файлы .cps прямо из готовых .class — её-то мы и будем использовать. Для начала я взял из установленного Sun Java Wireless Toolkit 2.5.2_01 for CLDC архив midpapi10.jar (по идее первая версия MIDP проще и с ней меньше потенциальных проблем) и распаковал оттуда папки com и javax прямо в корень gpcp-JVM. Запускаем команду: j2cps -v javax.microedition.midlet (-v — это ключик verbose для расширенного вывода информации) Reading Symbol File <D:\Archive\Projects\XDev\gpcp-JVM\libs\JvmSystem\sun_reflec t_generics_factory.cps> INFO: Reading symbol file sun_reflect_generics_factory.cps Bad symbol file format. 1 Что же мы видим! Я имел с этим много непоняток, но в итоге оказалось, что это ошибка в дистрибутиве GPCP. Файл libs\JvmSystem\sun_reflect_generics_factory.cps действительно повреждён, и, как выяснилось дальше, не только он один. Почесав тыковку, я придумал как сгенерировать корректный файл. Для этого из установленной у меня Java берём папку: d:\Program Files\Java\jre6\lib\rt.jar\sun\ и распаковываем её в папку с GPCP. После чего можно подать команду: j2cps -v sun.reflect.generics.factory и... убедиться, что файл sun_java2d_pipe.cps тоже повреждён: Reading Symbol File <D:\Archive\Projects\XDev\gpcp-JVM\libs\JvmSystem\sun_java2d _pipe.cps> INFO: Reading symbol file sun_java2d_pipe.cps Bad symbol file format. 1 Вот так потеха. Попытки починки файлов привели к тому, что эти битые файлы завязаны друг на друге и друг друга требуют. Такой, мягко говоря, непростой случай. Требует шаманского подхода. В итоге выяснилось, что битых файла там 4: sun_java2d_loops.cps sun_java2d_pipe.cps sun_nio_cs_ext.cps sun_reflect_generics_factory.cps Займёмся грязным хаком. Поскольку в дистрибутиве GPCP v1.3.12 символьные файлы данных классов повреждены, достанем из более ранней версии GPCP 1.3.4 файлы libs\JvmSystem\sun_java2d_loops.cps и libs\JvmSystem\sun_java2d_pipe.cps, нужные нам для раскрутки, и запишем их поверх битых. Пусть нас пока не смущает, что каждый новый (битый) и старый файлы отличаются по размеру. Со спокойной душой запускаем следующую команду: j2cps sun.reflect.generics.factory и получаем в текущей папке красивый (и главное корректный!) файлик sun_reflect_generics_factory.cps после чего можно сгенерировать для него и html-представление: cprun Browse -html -sort sun_reflect_generics_factory Как мы видим, файл sun_reflect_generics_factory.html сгенерирован правильно и содержит осмысленную информацию. После сопоставления ошибочного и корректного файла sun_reflect_generics_factory.cps мы можем видеть, что они отличаются всего одним байтом 00 и FF по смещению 758H. Тем не менее, битый файл действительно ошибочен, на него ругается компилятор (“Bad symbol file format. 1”) и утилита для генерации html-представления символьных файлов Browse: Expected $ got Error in Parse() java.lang.Exception: Bad symbol file format Error in Parse() java.lang.NullPointerException И, кстати, генерирует html-файл с нулевым размером. Вот откуда и хвосты. Что ж. Запишем sun_reflect_generics_factory.cps и sun_reflect_generics_factory.html ВМЕСТО испорченных файлов. Теперь, обладая здоровым файлом sun_reflect_generics_factory.cps, попробуем починить другие файлы таким же способом. j2cps sun.java2d.pipe Не знаю радоваться или плакать, но генерация завершилась не так уж и успешно. INFO: Creating symbol file sun_java2d_pipe Exception in thread "main" java.lang.NullPointerException at J2CPS.ClassDesc.writeType(ClassDesc.java:464) at J2CPS.SymbolFile.WriteSymbolFile(SymbolFile.java:293) at J2CPS.PackageDesc.WriteSymbolFiles(PackageDesc.java:172) at J2CPS.J2CPS.main(J2CPS.java:66) Попытка восстановить файл sun_java2d_loops.cps заканчивается примерно также. На этом пока завершим эксперименты и свяжемся с авторами проекта GPCP, ибо уже видно, что не всё там хорошо. Прикладываю архив с починенным sun_reflect_generics_factory.
|
Автор: | Zorko [ 02 авг 2012, 09:47 ] | ||
Заголовок сообщения: | Gardens Point Component Pascal и J2ME | ||
Наши усилия и багрепорт поспособствовали скорейшему релизу новой версии GPCP, а именно v1.3.13. Замечу, что в рассылке по GPCP мне ответил профессор K John Gough. Человек компетентный, ответил быстро и чутко отреагировал на багрепорт. Ещё плюс в пользу GPCP. Проект жив, развивается. Ещё что немаловажно — исходники открыты. Что же касается багов, то пользователей и бета-тестеров у GPCP пока не так уж и много, отсюда и они. Ничего, постепенно выловим. Зато их поиск занимает мало времени — GPCP даёт массу информации о баге. Итак, обновимся до новой версии и посмотрим что изменилось. Заодно замечу, что зарепортил ещё один баг, выявленный в процессе генерации символьных файлов для MIDP 1.0, и профессор K John Gough снова очень оперативно выслал мне фикс. Обновление дистрибутива будет в ближайшие дни. Напомню, что наша цель сейчас — сгенерировать биндинги MIDP 1.0 для компиляции Hello.cp. И начатая нами последовательность действий для этого. Мы скопировали внутрь папки /gpcp-JVM взятые из Sun Java Wireless Toolkit 2.5.2_01 for CLDC (архив midpapi10.jar) папки com и javax. Подаём команду: j2cps javax.microedition.midlet и наконец видим результат её правильной работы в виде сгенерированных файлов: com_sun_midp_lcdui.cps com_sun_midp_midlet.cps javax_microedition_lcdui.cps javax_microedition_midlet.cps Исходник Пилигрима в самом начале темы придётся слегка модифицировать, чтобы он собрался с полученными биндингами (прикладываю). Подадим команду: cprun gpcp Hello.cp Порядок. Hello.cp скомпилировался без ошибок и появилась подпапка /CP/Hello с результирующими файлами Hello.class и Hello_Main.class, а также символьный файл Hello.cps. Посмотрим какое html-представление он имеет: cprun Browse -html -sort Hello Код: "OBERON"
Всё отлично получилось. В следующий раз попробуем, следуя опыту Пилигрима и пользуясь утилитами Ant и ProGuard, собрать из набора .class-ов готовый сверифицированный JAR, который можно будет открыть в эмуляторе и загрузить в телефон.
|
Автор: | Rafi [ 02 дек 2012, 23:50 ] |
Заголовок сообщения: | Re: Gardens Point Component Pascal и J2ME |
Роясь во внутренностях джаров свеженькой J2ME SDK (а именно за версией 3.2) обнаружил в midp_2.1 вкуснейшую вещь под магическим названием javax.microedition.lcdui.game. И в этой самой game не что иное, как классы для игрокодинга. Там и спрайты, и тайлы, и слои в придачу. Не терпится сваять биндинги к этому добру и поюзать. Тут вот краткое описание http://vantage.ko3.ru/opisanie_paketa_j ... lcdui_game |
Автор: | Kubanych [ 07 мар 2015, 08:44 ] |
Заголовок сообщения: | Re: Gardens Point Component Pascal и J2ME |
Здравствуйте, коллеги. Что-то не получилось запустить gcpc для jvm. Вот скриншот, может будет из него ясно, ято я не так делаю. Код: "OBERON"
|
Автор: | Zorko [ 07 мар 2015, 16:27 ] | ||
Заголовок сообщения: | Re: Gardens Point Component Pascal и J2ME | ||
Не ясно. Вот что у меня: Код: "OBERON"
|
Автор: | Kubanych [ 07 мар 2015, 16:48 ] |
Заголовок сообщения: | Re: Gardens Point Component Pascal и J2ME |
Спасибо. С oberoncore подсказали, что в инструкции gpcp.jvm не написали, что в Windows надо установить переменную окружения JROOT. После этого все заработало. |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |