motofan logo
       
> 

Перекомпиляция J2ME в Native, Теорию обсудили. Кто-бы еще реализовал.

DmT
сообщение 19.3.2010, 13:45


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Для чего перекомпилировать Java в Elf:
Как работают большинство виртуальных машин на стадии выполнения кода: загружают код методов класса, и затем из него создают новый код, машинный(нативный). Это называется JIT(Just in time) компиляция. То есть байт-код переводится в нативный код. Ну а нативный код уже выполняется процессором реальной машины.
Но есть и другой вариант: байт-код НЕ переводится в машинный код. Вместо этого при выполнении каждой инструкции байт-кода вызывается функция-обработчик. Это называется интерпритацией.
Интерпритация намного медленнее JIT компиляции, но при этом требует намного меньше памяти, что актуально во встраиваемых системах, типа телефона.

Смысл java to elf в том, что ресурсоемкий процесс JIT компиляции будет производиться ЗАРАНЕЕ, то есть на компьютере. Ну и по сути это уже не "JIT" а "перекомпиляция".

Если до сих пор не поняли... Речь не идет о языках программирования, в частности Java или С. То есть для того о чем мы говорим нам не нужны исходные коды приложения, которое мы будем перекомпилировать. Нам нужен конечный продукт - архив jar, внитри которого набор классов.
JAR -> j2elf -> ELF

Одноко конкретно мало кто представляет, что же из себу представляет перекомпиляция. Даже про себя могу сказать, что хоть я и неплохо ориентируюсь в этом, до конца не представляю весь механизм перекомпиляции.
Уважаемые разработчики, предлагаю это обсудить. А может быть даже кто-то возьмется реализовывать.

У JVM инструкций около 200.
JVM - стек-ориентированная, ARM - регистр-ориентированная.
Ну с этим я полагаю справиться можно.
Далее зоны с вероятными исключениями: на яве указываются ввиде таблицы. На ARM вот уж не знаю как.(?)
Все поля класса вынесены в отдельную область class файла. Методы - соответственно тоже, причем методы разделены, а это частично избавляет нас от гемора с импортами/экспортами.
Еще одна проблема - сборщик мусора(далее GC). Он должен проверять все ссылки на объекты и сверять с множеством изначальных объектов. Если на какой-либо объект более не существует ссылки в памяти - удалять этот объект. На словах просто, а на деле не очень. Не могу четко представить механизм перебора и отсеивания ссылок в стеке (отсеивание нужно, чтобы не перепутать объекты и примитивы(ведь значение ссылки объекта запросто может совпасть со значением примитива)). То есть тут либо как то по особенному организовывать сам стек(вводит идентификатор типа перед значением), либо хранить в GC множество указателей на ссылки на объекты, либо ...?
Еще есть такая вещь как наследование(в купе с полиморфизмом и т.д. Жду ваших предложений.

Обратить внимание на красные вопросы.

Сообщение отредактировал DmT - 25.4.2010, 8:14
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 19.3.2010, 15:43


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(DmT @ Сегодня, 19:45)

На ARM вот уж не знаю как
*


Применительно к ARM - даже примерно не понимаю, о чём речь
Цитата(DmT @ Сегодня, 19:45)

ведь значение ссылки объекта запросто может совпасть со значением примитива
*


Очень надеюсь, что стек JVM мы будем эмулировать не машинным стеком, а стек JVM требует выделения в нём не только типа каждого элемента, но и разделения кадров стека, принадлежащих разным выполняемым функциям, так что проблема отпадает
В итоге сборщик мусора, если примерно, строит орграф, узлами которого являются кадры стека, объекты JVM и статический контекст классов, а дугами - все ссылки (от узла, в котором расположена ссылка, до объекта, на который он ссылается), связи между родительским и дочерним кадрами стека, связь между статическим контекстом и корневыми кадрами стека всех потоков. При завершении функции из графа удаляется её кадр стека, при разрыве ссылки удаляется ребро, при завершении потока удаляется его корневой кадр стека. Всё, что в итоге оказалось недостижимым из статического контекста, со спокойной совестью можно удалить.
Но подобный алгоритм, реализованный по определению, будет работать недостаточно эффективно. Существует достаточно готовых алгоритмов и реализаций сборщика мусора.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 19.3.2010, 16:00


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Цитата(motoprogger @ Сегодня, 20:43)

Применительно к ARM - даже примерно не понимаю, о чём речь
*


Речь о том, как будет выглядеть на ARM конструкция
Код
try
{
    ...
}
catch(...)
{
    ...
}

Цитата(motoprogger @ Сегодня, 20:43)

Очень надеюсь, что стек JVM мы будем эмулировать не машинным стеком
*


А в чем собственно причина нежелания натифицировать стек? После генерирования нативных инструкций зачем нам придерживаться стандарта JVM?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 19.3.2010, 16:42


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(DmT @ Сегодня, 22:00)

как будет выглядеть на ARM конструкция
*


По входу в try в отдельный стек - стек исключений - будет записываться информация о текущем try-блоке, блоках перехвата исключений и finally-блоках, а при явной или неявной генерации исключений по этому стеку будет находиться блок-обработчик и точка входа в следующий блок-обработчик.
Цитата(DmT @ Сегодня, 22:00)

А в чем собственно причина нежелания натифицировать стек?
*


В том, что машинный стек процессора рассчитан исключительно на один тип данных и не имеет собственного деления на кадры стека
Цитата(DmT @ Сегодня, 22:00)

После генерирования нативных инструкций зачем нам придерживаться стандарта JVM?
*


Хорошо, если отказаться от возможности загрузки внешних классов, мы получаем возможность:
1) Представить каждый Java-объект в виде структуры, содержащий ссылку на таблицу методов класса, все примитивы объекта и ссылки на другие объекты
2) Представить каждый кадр стека в виде структуры, содержащей примитивы и ссылки на объекты
При этом заранее известно множество таких структур и смещения, по которым в них располагаются ссылки на объекты, далее имхо очевидно... а если отказаться от Reflection API, то можно из классов поудалять ещё и имена методов и полей, оставить только структуру со статическими членами и таблицы методов (собственная таблица класса и по одной для каждого реализуемого интерфейса)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 19.3.2010, 20:05


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255
Модель телефона: E398, Milestone 2
Прошивка: 49R w/ElfPack2


Настроение:
^^,



Рейтинг: 1224



DmT, закончил бы ты сначала эмуль эльфов..
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 19.3.2010, 21:32


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



Andy51, зачем меня цитировать? :)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Fenja
сообщение 20.3.2010, 7:25


Авторитет
********

Группа: Модераторы
Сообщений: 5 564
Регистрация: 25.8.2008
Из: г. Пенза
Пользователь №: 179 851
Модель телефона: MotoRazr v3i
Прошивка: MotoUpdate v1.1

Рейтинг: 1756



Цитата(DmT @ Вчера, 16:45)

Думаю никому не надо объяснять, для чего перекомпилировать Java в Elf.
*


Думаю надо. Ява ООП, а С функциональное?
И получиться в каждом эльфе будет ява приложение + мини ява машина?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 20.3.2010, 8:25


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Цитата(Andy51 @ Сегодня, 1:05)

DmT, закончил бы ты сначала эмуль эльфов..
*


Так, чтобы прояснить ситуацию: Я (я - это такой человек, который сейчас пишет это сообщение. Который скрывается под ником DmT) НЕ собираюсь в ближайшее время переключаться на Java2Elf. Я просто вдруг вспомнил про небезызвестного om2804, которому и принадлежала идея, которую он высказал еще год назад:
Цитата
om2804 (23:21:55 23/02/2009)
я тут начал формат class потихоньку ковырять
om2804 (23:22:07 23/02/2009)
class to elf бы сделать :)

Вспомнил, и решил просто подготовить информационную базу на будующее.

Я по прежнему ковыряюсь с эмулем эльфов, и у меня есть определенные проблемы, в частности с загрузкой самих эльфов.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 20.3.2010, 8:28


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



Fenja, ну на еп2 so есть допустим, не обязательно в каждый пхать, единственное, что большество кода будет на асме, поєтому хз... может в патче, вроди отдельного єльфпака проще будет, с отдельным типом файлов...

п.с. интересно как там тулбар, и вин-первоопрельский розыгрыш))) надеюсь java->jelf очередным не станет)))
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 20.3.2010, 8:50


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Цитата(Fenja @ Сегодня, 12:25)

Думаю надо. Ява ООП, а С функциональное?
И получиться в каждом эльфе будет ява приложение + мини ява машина?
*


А. Хорошо. Раз уже не перввый человек введен в заблуждение,
Если говорить просто и в двух словах:
Речь не идет о языках программирования, в частности Java и С. То есть для того о чем мы говорим нам не нужны исходные коды приложения, которое мы будем перекомпилировать. Нам нужен конечный продукт - архив jar, внитри которого набор классов.

Как работают большинство виртуальных машин на стадии выполнения кода: загружают код методов класса, и затем из него создают новый код, машинный(нативный). Это называется JIT(Just in time) компиляция. То есть байт-код переводится в нативный код. Ну а нативный код уже выполняется процессором реальной машины.
Но есть и другой вариант: байт-код НЕ переводится в машинный код. Вместо этого при выполнении каждой инструкции байт-кода вызывается функция-обработчик. Это называется интерпритацией.
Интерпритация намного медленнее JIT компиляции, но при этом требует намного меньше памяти, что актуально во встраиваемых системах, типа телефона.

Смысл java to elf в том, что ресурсоемкий процесс JIT компиляции будет производиться ЗАРАНЕЕ, то есть на компьютере. Ну и по сути это уже не JIT- а перекомпиляция.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 20.3.2010, 16:54


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(DmT @ Сегодня, 14:50)

Ну и по сути это уже не JIT- а перекомпиляция.
*


По сути это не JIT, а AOT wink.gif
Предположим, само приложение не так уж и сложно перекомпилировать в исполняемый код. На самом деле. А как быть со стандартными классами - где ты столько исполняемого кода разместишь? А как быть с JNI - ему практически полностью структуры данных класса нужны, плюс структуры, связывающие байткод с нативным.
У меня есть несколько иное предложение. В качестве первой стадии - это будет загрузка явой so-файлов из jar-архива приложения и подгрузка JNI-функций из них. В качестве второй стадии - перекомпиляция каждого класса в отдельный so (или всего приложения в один so, не столь важно), а затем - перекомпиляция всех классов таким образом, что все методы в них объявлены как нативные (и размещены в этом so, активно обращающемся к функциям JVM). Исполняемого байткода в классах в итоге не останется. У кого-нибудь есть желание реализовать нормальный JNI на P2K?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 22.3.2010, 7:17


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Цитата(motoprogger @ 20.3.2010, 21:54)

По сути это не JIT, а AOT
*


Пожалуй да.
Цитата(motoprogger @ 20.3.2010, 21:54)

А как быть со стандартными классами - где ты столько исполняемого кода разместишь?
*


Конкретнее в чем проблема?
Цитата(motoprogger @ 20.3.2010, 21:54)

У меня есть несколько иное предложение.
*


Интересно, но только там где в JVM JNI реализован. На встраиваемых система с JVM - очень сомневаюсь.
А не на встаиваемых - и так весело работает JIT.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 16.5.2010, 17:40


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Спасибо motoprogger за находку:
http://gcc.gnu.org/java/
GCJ is a portable, optimizing, ahead-of-time compiler for the Java Programming Language. It can compile Java source code to Java bytecode (class files) or directly to native machine code, and Java bytecode to native machine code.
Compiled applications are linked with the GCJ runtime, libgcj, which provides the core class libraries, a garbage collector, and a bytecode interpreter. libgcj can dynamically load and interpret class files, resulting in mixed compiled/interpreted applications. It has been merged with GNU Classpath and supports most of the 1.4 libraries plus some 1.5 additions.

GCJ работает с arm, cобирает в ELF формат.

Посути большую часть того, что необходимо сделать уже реализовано в этом проекте. Нам осталось только собрать libgcj для нашей платформы. И добавить в EP2 совместимость с этими эльфами.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 16.5.2010, 19:00


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255
Модель телефона: E398, Milestone 2
Прошивка: 49R w/ElfPack2


Настроение:
^^,



Рейтинг: 1224



DmT, я так полагаю, что проблема "всего лишь" в том, чтобы переписать ВЕСЬ J2ME API в C++ и слинковать со ВСЕМИ нативными функциями в прошивке, так? laugh.gif
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 16.5.2010, 19:06


Мастер
****

Группа: Разработчики
Сообщений: 171
Регистрация: 6.11.2007
Из: Donetsk City / Ukraine
Пользователь №: 153 083
Модель телефона: E1, k810
Прошивка: r373_g_0e.30.79r

Рейтинг: 323



Перечитал первый пост, но так и не нашел ответа на вопрос "Зачем перекомпилировать j2me приложения в эльф?"
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 16.5.2010, 19:20


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



G-XaD, скорость и многозадачность...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 16.5.2010, 19:20


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(Andy51 @ Сегодня, 2:00)

DmT, я так полагаю, что проблема "всего лишь" в том, чтобы переписать ВЕСЬ J2ME API в C++
*


Не надо его туда переписывать. При чём здесь вообще C++?
Нужно извлечь весь байткод из прошивки, скомпилировать gcj в нативный, связать с нативными методами классов J2ME, имеющимися в прошивке, и собрать из всего этого свою версию libgcj. Ну и подправить функцию инита приложения из libgcj под другую ОС )
Цитата(G-XaD @ Сегодня, 2:06)

Перечитал первый пост, но так и не нашел ответа на вопрос "Зачем перекомпилировать j2me приложения в эльф?"
*


Перепиши пару-тройку эльфов на J2ME - поймёшь ценность обратного преобразования laugh.gif

Добавлено позже (17.5.2010, 2:23):
Цитата(DmT @ Сегодня, 0:40)

И добавить в EP2 совместимость с этими эльфами.
*


Насколько я понял, EP2 уже поддерживает shared-либы, а больше ничего не надо
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
G-XaD
сообщение 16.5.2010, 19:37


Мастер
****

Группа: Разработчики
Сообщений: 171
Регистрация: 6.11.2007
Из: Donetsk City / Ukraine
Пользователь №: 153 083
Модель телефона: E1, k810
Прошивка: r373_g_0e.30.79r

Рейтинг: 323



Цитата(baat @ Сегодня, 22:20)
G-XaD, скорость и многозадачность...
*

Думаю, размер эльфа + libgcj на выходе будет слишком большим чтобы вообще запускаться.

Цитата(motoprogger @ Сегодня, 22:20)
Перепиши пару-тройку эльфов на J2ME - поймёшь ценность обратного преобразования
*

Зачем писать на яве если можно на Си/С++? Явы я толком то и не знаю, точнее никогда не писал :)

Цитата(motoprogger @ Сегодня, 22:20)
Насколько я понял, EP2 уже поддерживает shared-либы, а больше ничего не надо
*

ЕП2 переваривает только эльфы обработанные постлинкером, там вроде особый формат (по крайней мере переделан вызов импортируемых функций)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 16.5.2010, 19:56


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(G-XaD @ Сегодня, 2:37)

Зачем писать на яве если можно на Си/С++? Явы я толком то и не знаю, точнее никогда не писал :)
*


Я именно про различие в работе эльфов и Java-приложений - вышеупомянутые
Цитата(baat @ Сегодня, 2:20)

скорость и многозадачность...
*



Цитата(G-XaD @ Сегодня, 2:37)

Думаю, размер эльфа + libgcj на выходе будет слишком большим чтобы вообще запускаться.
*


Размер эльфа большим точно не будет. Размер libgcj определяется тем, какие классы мы в неё включаем. В прошивку же помещаются классы J2ME и интерпретирующая JVM? А из libgcj мы можем исключить интерпретацию за ненадобностью
Цитата(G-XaD @ Сегодня, 2:37)

ЕП2 переваривает только эльфы обработанные постлинкером, там вроде особый формат (по крайней мере переделан вызов импортируемых функций)
*


Тогда больше склонен думать, что придётся libgcj доводить под такое дело. Кстати, импорт из либ функций, находящихся в основном эльфе, у нас, я так понимаю, не только не поддерживается, но и не ожидается?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
baat
сообщение 16.5.2010, 20:23


Самый Наглый
******

Группа: В отставке
Сообщений: 1 282
Регистрация: 18.5.2006
Из: Дом, милый дом...
Пользователь №: 83 674
Модель телефона: старая модель...
Прошивка: какая уж есть...
Победитель конкурса 2008


Настроение:
...



Рейтинг: 1535



motoprogger, вопрос, а смогут ли два таких эльфа-явы получить доступ к одному и тому же классу или методу ж2ме? и возможно ли к ним без написание собсвенной машины использовать готовую явовскую?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 16.5.2010, 20:24


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255
Модель телефона: E398, Milestone 2
Прошивка: 49R w/ElfPack2


Настроение:
^^,



Рейтинг: 1224



Цитата(motoprogger @ Вчера, 23:20)

При чём здесь вообще C++
*


Я подозреваю, что результирующий код строится по сипипишным конвенциям, наименования как минимум.

Цитата(motoprogger @ Вчера, 23:20)

Нужно извлечь весь байткод из прошивки, скомпилировать gcj в нативный, связать с нативными методами классов J2ME, имеющимися в прошивке, и собрать из всего этого свою версию libgcj.
*


Опять же, "всего лишь". Удачи wink.gif Безумству храбрых поём мы славу...

Цитата(motoprogger @ Вчера, 23:56)

Кстати, импорт из либ функций, находящихся в основном эльфе, у нас, я так понимаю, не только не поддерживается, но и не ожидается?
*


Да, EP2 подразумевает исключительно иерархическую схему организации объектов, сверху-вниз.

Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 16.5.2010, 20:35


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Цитата(Andy51 @ Сегодня, 2:24)

Да, EP2 подразумевает исключительно иерархическую схему организации объектов, сверху-вниз.
*


Да не так уж трудно и добавить поддержку импортов в иерархически-независимой системе объектов.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 16.5.2010, 20:50


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(baat @ Сегодня, 3:23)

а смогут ли два таких эльфа-явы получить доступ к одному и тому же классу или методу ж2ме?
*


Проблема со статическими объектами, подозреваю, будет. С динамическими - не должно быть.
Цитата(baat @ Сегодня, 3:23)

и возможно ли к ним без написание собсвенной машины использовать готовую явовскую?
*


Ни собственная, ни готовая не понадобится, всё будет откомпилировано в нативный
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
CrayZor
сообщение 18.5.2010, 14:43


Мастер
****

Группа: Пользователи
Сообщений: 168
Регистрация: 22.3.2008
Пользователь №: 167 295
Модель телефона: E398, ROKR E1, X2, G100
Прошивка: In development

Рейтинг: 70



Портировал кто бы qt либы чем думат как перегонят яву в натив код...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DarkCoder
сообщение 18.5.2010, 15:02


Интересующийся
**

Группа: Пользователи
Сообщений: 70
Регистрация: 26.9.2009
Пользователь №: 206 965
Модель телефона: Motorola V3i

Рейтинг: 34.5



У нас же на телефоне ОС основана на событиях. И как java код будет работать на событиях, ведь он вроде не предназначен к такому извращению.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Fenja
сообщение 18.5.2010, 15:19


Авторитет
********

Группа: Модераторы
Сообщений: 5 564
Регистрация: 25.8.2008
Из: г. Пенза
Пользователь №: 179 851
Модель телефона: MotoRazr v3i
Прошивка: MotoUpdate v1.1

Рейтинг: 1756



Цитата(CrayZor @ Сегодня, 18:43)

Портировал кто бы qt либы
*


shok.gif зачем?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
CrayZor
сообщение 18.5.2010, 15:37


Мастер
****

Группа: Пользователи
Сообщений: 168
Регистрация: 22.3.2008
Пользователь №: 167 295
Модель телефона: E398, ROKR E1, X2, G100
Прошивка: In development

Рейтинг: 70



Портироват проги просто под эту либы...
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 18.5.2010, 15:41


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(DarkCoder @ Сегодня, 22:02)

И как java код будет работать на событиях, ведь он вроде не предназначен к такому извращению.
*


Я, конечно, не очень в теме, но вроде у нас пробегали эльфы с поточным выполнением, нет?
И вроде у родной JVM телефона отдельная задача ОС, так что, я так понимаю, можно в рамках этой задачи сделать поточное выполение нашего кода. Насчёт работы на событиях - для интерпретируемой Java, конечно, не проблема (у AFW есть событие типа "простой (idle)"?), а для компилируемой - потребовала бы серьёзных изменений в компиляторе
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DarkCoder
сообщение 18.5.2010, 17:44


Интересующийся
**

Группа: Пользователи
Сообщений: 70
Регистрация: 26.9.2009
Пользователь №: 206 965
Модель телефона: Motorola V3i

Рейтинг: 34.5



Цитата
Я, конечно, не очень в теме, но вроде у нас пробегали эльфы с поточным выполнением, нет?


Я таких в живую не видел, но ...
В проекте Andy51 Aegis есть т.н. task'и. Вот это то что нужно. Ждёмс релиз.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 18.5.2010, 22:45


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255
Модель телефона: E398, Milestone 2
Прошивка: 49R w/ElfPack2


Настроение:
^^,



Рейтинг: 1224



CrayZor, poster_offtopic.gif
Цитата(motoprogger @ Вчера, 19:41)

можно в рамках этой задачи сделать поточное выполение нашего кода
*


Тогда это уже задача для патчинга, а не для эльфов
Цитата(motoprogger @ Вчера, 19:41)

у AFW есть событие типа "простой (idle)"?
*


Нет
Цитата(DarkCoder @ Вчера, 21:44)

Я таких в живую не видел
*


Есть 1) Matrix 2) Aegis 3) vNES
Сейчас вообще не до ковыряний, но работаю над подготовкой релиза патча на таски как появляется немного времени
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 23.5.2010, 14:57


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Кстати, нашёл ещё одну интересную вещь: http://jcvm.sourceforge.net/
Пока не тестировал, в отличие от gcj (который на i386 работает очень даже успешно, по крайней мере, с теми классами, для работы с которыми не предполагается использовать Reflection API. Если включать информацию Reflection API в исполняемый файл, по объёму её получается чуть ли не больше, чем кода. Насколько помню, в J2ME нет Reflection)
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DarkCoder
сообщение 23.5.2010, 15:35


Интересующийся
**

Группа: Пользователи
Сообщений: 70
Регистрация: 26.9.2009
Пользователь №: 206 965
Модель телефона: Motorola V3i

Рейтинг: 34.5



Цитата
который на i386 работает очень даже успешно, по крайней мере, с теми классами, для работы с которыми не предполагается использовать Reflection API

Это что уже схема испытывалась на телефоне?
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 23.5.2010, 15:49


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Цитата(DarkCoder @ Сегодня, 21:35)

Это что уже схема испытывалась на телефоне?
*


Ты абсолютно не разбираешься в предметнойй области. Тебе русским языком написали i386.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 23.5.2010, 15:53


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(baat @ Сегодня, 22:50)

все классы из явы
*


Эм, в яве есть какой-то фиксированный набор классов? Во новость ))
Вот конкретная реализация Java уже связана с набором стандартных классов, которые нам нужно извлечь и "тупо" откомпилировать )
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 23.5.2010, 15:56


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Цитата(motoprogger @ Сегодня, 21:53)

которые нам нужно извлечь
*


это можно сделать из эльфа прошивки E1
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DarkCoder
сообщение 23.5.2010, 16:32


Интересующийся
**

Группа: Пользователи
Сообщений: 70
Регистрация: 26.9.2009
Пользователь №: 206 965
Модель телефона: Motorola V3i

Рейтинг: 34.5



Цитата
Ты абсолютно не разбираешься в предметнойй области.

Конечно не разбираюсь. просто я i386 попутал с E398.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
motoprogger
сообщение 23.5.2010, 16:38


Гуру
******

Группа: Разработчики
Сообщений: 1 327
Регистрация: 20.7.2006
Из: Г. Омск
Пользователь №: 92 049
Модель телефона: C380 и Talkabout
Прошивка: разные

Рейтинг: 510



Цитата(DmT @ Сегодня, 22:56)

это можно сделать из эльфа прошивки E1
*


Там J2ME классы могут быть немного иначе, по сравнению с целевым телефоном, привязаны к нативным методам, да и нативные методы могут не найтись по сигнатурам. Так что ещё вопрос )
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 23.5.2010, 16:54


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Цитата(motoprogger @ Сегодня, 22:38)

Там J2ME классы могут быть немного иначе, по сравнению с целевым телефоном, привязаны к нативным методам, да и нативные методы могут не найтись по сигнатурам. Так что ещё вопрос )
*


Сомневаюсь, но даже если это так, можно попробовать найти способ поиска классов в прошивке. наверное там что-нибудь примитивное, например, таблица указателей.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Andy51
сообщение 23.5.2010, 22:57


0xFFFF
******

Группа: Разработчики
Сообщений: 832
Регистрация: 28.3.2006
Из: Нижний Новгород
Пользователь №: 76 255
Модель телефона: E398, Milestone 2
Прошивка: 49R w/ElfPack2


Настроение:
^^,



Рейтинг: 1224



DmT, ау, а про Медузу уже забыли?
Проект Медуза
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
DmT
сообщение 1.6.2010, 17:31


Мото-Портной
******

Группа: Разработчики
Сообщений: 1 175
Регистрация: 31.3.2007
Пользователь №: 129 181
Модель телефона: LG GW620, L7e и др.
Победитель конкурса 2008

Рейтинг: 680



Andy51,
Ну, мое последнее сообщение там смотри. Как раз об этом и написано.
Юзер вышелВ друзьяВизиткаП/Я
К началу страницы
+Ответить
Перекомпиляция J2ME в Native, Теорию обсудили. Кто-бы еще реализовал. · Эльфы, их разработка и портирование · Forum
 

Ответ в темуСоздание новой темы
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 7.7.2025, 15:21

Форум живёт: