OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 23:40

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 06 Март, 2015 00:32 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Коллеги.
Был в свое время компилятор JOB С.З. Свердлова.
Вероятно, новые версии Java он уже не поддерживает.

Но было бы неплохо открыть исходный код и реанимировать этот проект,
чтобы на Oberon-2 писать приложения для Android.

Массы молодежи можно привлечь к программированию через разработку для Android.
А инструментарий, имеющийся в наличии, довольно сложен для освоения и эксплуатации
(java,scala и пр.)

python работает только на ARM устройствах и не работает в x86 android, запускаемом в в Virtual Box.

Так что у Oberon-2 хорошие шансы на Android.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Март, 2015 18:07 

Зарегистрирован: Воскресенье, 03 Февраль, 2008 12:50
Сообщения: 249
Kubanych писал(а):
Коллеги.
Был в свое время компилятор JOB С.З. Свердлова.
Вероятно, новые версии Java он уже не поддерживает.

А может и поддерживает. Это ж Java, там с backward compatibility всё не так плохо.

Kubanych писал(а):
Но было бы неплохо открыть исходный код и реанимировать этот проект,
чтобы на Oberon-2 писать приложения для Android.

А зачем, когда есть вполне себе открытый КП для Java?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 06 Март, 2015 21:46 

Зарегистрирован: Суббота, 04 Март, 2006 15:13
Сообщения: 674
Откуда: СССР
Спасибо за ссылку. Попробую.
Но он работает с jdk 1.6 . А андроидные инструменты с jdk 1.7.
Попробую опытным путем, можно ли этот gpcp использовать для разработки на Android.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 12 Март, 2015 02:18 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 520
Откуда: Украина, Днепропетровская обл.
GPCP однозначно проработаннее JOB'а.

Сергей Залманович мог открыть исходники JOB'а уже давно, тем более компилятор вроде как учебный. Но вовремя он этого не сделал, и сейчас GPCP обходит JOB практически по всем параметрам. Язык: КП вместо Оберона-2. Есть расширения языка для удобства интеграции в JVM, например, обработка исключений. Как работать с JVM без этого?

А у JOB есть недостатки. Например, не реализованы все возможности Оберона-2. Навскидку - нету указателей на процедурные типы. Не верите - потестируйте сами.

Когда я пробовал генерировать мидлеты для Java ME на JOB, у меня ничего не получилось. На GPCP (после исправления ошибки в утилите J2CPS) - вполне успешно:

http://zx.oberon2.ru/forum/viewtopic.php?f=27&t=27

Замечу ещё: ранее Джону Гофу (мною, в частности) в рассылке давались многие пожелания по усовершенствованию компилятора, ровно также как и по устранению косметических багов, я могу назвать парочку: например, при IMPORT A := B в модуле доступны оба идентификатора (A и B как синонимы) - хотя такого поведения я не наблюдал ни в одной реализации Оберона. Ещё косметическая (хотя не совсем) проблема с CONST A=INTEGER (пишу по памяти). Всё это не исправлено до сих пор. Компилятор иногда вылетает с ошибкой COMPILER PANIC вместо текстового сообщения. Хотя на практике это просто синтаксическая ошибке в исходнике.

Я сгенерировал не работающий HelloWorld на GPCP для Android, идучи путём автора статьи «Mirah — глоток свежего… кофе»:

http://zx.oberon2.ru/forum/viewtopic.php?f=87&t=244

Но в процессе генерации символьных файлов .cps из Андроид-классов утилита J2CPS вываливается с ошибкой на некоторых классах. А полученный HelloWorld при запуске даёт ошибку отсутствия вызова суперконструктора. Т.е. <init> главного класса приложения не может стартовать. Вот как об этой проблеме отзывается стандартный эмулятор из Android SDK:

Цитата:
I/ActivityManager( 61): Starting activity: Intent { act=android.intent.action.
MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=CP.Hello/.Hello_Main }
I/ActivityManager( 61): Start proc CP.Hello for activity CP.Hello/.Hello_Main:
pid=381 uid=10028 gids={}
D/dalvikvm( 381): newInstance failed: no <init>()
D/AndroidRuntime( 381): Shutting down VM
W/dalvikvm( 381): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
E/AndroidRuntime( 381): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime( 381): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{CP.Hello/CP.Hello.Hello_Main}: java.lang.InstantiationException: CP.Hello.Hello_Main

Я бы с удовольствием пробовал ковырять GPCP + Android и дальше, но вот эта проблема с J2CPS и проблема невызывания конструктора (которая может быть следствием) понижает запал. Желающим помочь в исправлении сих багов буду всячески содействовать.

Уверен, что разрабатывать на GPCP для Android можно. Проблема различия версий JVM не существенна, всё равно dx всё конвертирует в байт-код Dalvik. Скомпилированный GPCP и декомпилированный класс, а потом скомпилированный снова с помощью javac работает на Андроид-устройстве, проверено. Так что нужно только зафиксить вызов суперконструктора.

Есть ещё парочка трудностей. В GPCP несовместимы типы java_lang.CharSequence и ARRAY OF CHAR, поэтому вызов некоторых функций Android'а затруднён. Как решить - ещё не понял. Далее. Неудобно задавать юникодовые строки (кодировка исходников однобайтовая). Но в JOB'е символы вообще однобайтовые. Вобщем, есть над чем потрудиться.

Так что могу очень осторожно рекомендовать GPCP для JVM только людям, не боящимся трудностей. Рацпредложение №1: совместно скинуться Джону Гофу и попросить его ускорить правку багов, т.к. он лучше всех знает как устроен этот компилятор. №2: фиксить своими силами, но для этого нужна квалификация (знание внутреннего устройства JVM, .class- и .cps-файлов и т.п.).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 12 Март, 2015 22:58 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Спасибо за обзор.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 13 Март, 2015 02:49 

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Похоже, автор GPCP работает сейчас над Java.

https://vimeo.com/97945349 John Gough - Java 8, Under the Covers - QJVM - 2014-06-10


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 13 Март, 2015 11:25 

Зарегистрирован: Воскресенье, 03 Февраль, 2008 12:50
Сообщения: 249
Роман М. писал(а):
Похоже, автор GPCP работает сейчас над Java.

Да он в Oracle Labs сейчас трудоустроен, и, судя по последним публикациям, они там статический анализатор (PDF, 200 KB) Java-кода ваяют на предмет поиска уязвимостей системы безопасности (Security Vulnerabilities). Причём оно сначала транслирует код в промежуточное представление LLVM, а уже его анализирует.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 07 Апрель, 2015 18:31 

Зарегистрирован: Воскресенье, 04 Январь, 2009 12:00
Сообщения: 52
там релиз 2013 года.
а насколько он годен для продакшена.
interop с java библиотеками, например писать web-сервлеты можно?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB