Статья-черновик. В конечном итоге напишу несколько вики-подобных статей, по схеме:
Тема : Где и как работает Ява
-Об устройстве Явы
-О железе
-Как этот софт работает на железе
Статья была об проблемах, с которыми я столкнулся. Изучив инфу, дополнил её ответами.
Представляет из себя кашу-малашу из тем сверху.
Доброго!
Предисловие.(Оффтоп)
Было и есть у меня нарастающее желание сконструировать кое-какой, вполне физический агрегат.
Агрегат,в основе которого лежит одна простая, но поглотившая меня целиком идея.
Идея, задавшая мне направления развития на ближайшие десять лет.
В теории уже полу-готова конструкция устройства, реализующего кроху возможностей той запланированной махины.
Именно сейчас, при доработке полу-готовой конструкции, погрузившись более детально в компоненты, я столкнулся с необходимостью управления сервомоторами и, соответственно, программированием каких-то "мозгов".
Здесь и подходит череда вопросов, обьеденить которые можно в "Можно ли, и как, заставить МК выполнять java-код ?".
Тело. Детально о вопросах.
Мы помним, что java-код, который мы пишем, преобразуется в byte-код, который, уже в свою очередь, интерпретируется JVM в машинный код, код, состоящий из команд, понимаемых железом. Всем понятна причина именно такого расклада событий - портируемость/переносимость в купе с бОльшей скоростью (по сравнению с просто интерпретируемыми языками).
После того, как я узнал это, у меня возникли вопросы, оставшиеся неотвеченными, всплывшие и дополненные новыми вот сейчас.
1. Можно ли стандартными средствами JVM полностью прогнать весь byte-код в машинный, единовременно / Скомпилировать его ?
if false.Есть сторонние средства ? Хоть как-то ?
2. Поддерживает ли JVM работу с микроконтроллерами/контроллерами ? (мало знаю о железных "мозгах", если есть знающие - расскажите).
if true.Есть отличия\особенности от работы на привычных нам ПК ?
Обновлено! 09.04
Об 1. Стандартным средством ( подразумевалась JVM ) прогнать код до машинного возможности нет, по крайней мере так нам говорит вики, но, оттуда же, стало ясно, что есть сторонне средство - GCJ. Является альтернативой JVM и имеет в своём арсенале вот такую приятную плюшку. Точной информации об платформах(аппаратных), под которые поддерживается компиляция, не нашел - "многих".
Разница byte-code и native-code:
1)native быстрее запускается
2)Нет никаких гарантий, что native будет работать быстрее
3)Как я полагаю, native не будет тащить на себе ОС и JVM, что существенно отражается на кол-ве необходимой для работы программы ROM.
Возможно, это решение может выступить альтернативой ME-версии.
(Под здоровенным вопросом, ибо :
1) Не известно, поддерживает ли GCJ такие низкопроизводительные аппаратные платформы.
2) Нет информации о производительности этого кода.
Обновлено. 11.04
Об 2. Любая версия языка Java, будь то ME,SE или Embedded, работает в паре с JRE, интерпретируясь. Кроме случая выше и двух, будущих описанными ниже.
Во-первых, были попытки выщемить из цепи ОС, заменив её своим, исключительно Ява-ориентированным средством. О том, что это такое, тут.
Во-вторых, оказалось, что существуют Ява-ориентированные процессоры, их особенностью является встроенный сопроцессор, который аппаратно интерпретирует byte-code(!не программно) и уже его отдаёт на исполнение.
Подробнее о Jazelle.
Богато тут.
Оффтоп
Идея, о которой шла речь - "обратная связь", конкретно реализуемый тип в будущем прототипе - давление/сопротивление давлению.
Пользуясь случаем. Читающий народ уровней 15-25, давайте бахнем маленькое комьюнити для общения/тэт-а-тэт. Ибо одному - вообще не гут, и даже больше - жуть полнейшая.
Тема : Где и как работает Ява
-Об устройстве Явы
-О железе
-Как этот софт работает на железе
Статья была об проблемах, с которыми я столкнулся. Изучив инфу, дополнил её ответами.
Представляет из себя кашу-малашу из тем сверху.
Доброго!
Было и есть у меня нарастающее желание сконструировать кое-какой, вполне физический агрегат.
Агрегат,в основе которого лежит одна простая, но поглотившая меня целиком идея.
Идея, задавшая мне направления развития на ближайшие десять лет.
В теории уже полу-готова конструкция устройства, реализующего кроху возможностей той запланированной махины.
Именно сейчас, при доработке полу-готовой конструкции, погрузившись более детально в компоненты, я столкнулся с необходимостью управления сервомоторами и, соответственно, программированием каких-то "мозгов".
Здесь и подходит череда вопросов, обьеденить которые можно в "Можно ли, и как, заставить МК выполнять java-код ?".
Тело. Детально о вопросах.
Мы помним, что java-код, который мы пишем, преобразуется в byte-код, который, уже в свою очередь, интерпретируется JVM в машинный код, код, состоящий из команд, понимаемых железом. Всем понятна причина именно такого расклада событий - портируемость/переносимость в купе с бОльшей скоростью (по сравнению с просто интерпретируемыми языками).
После того, как я узнал это, у меня возникли вопросы, оставшиеся неотвеченными, всплывшие и дополненные новыми вот сейчас.
1. Можно ли стандартными средствами JVM полностью прогнать весь byte-код в машинный, единовременно / Скомпилировать его ?
2. Поддерживает ли JVM работу с микроконтроллерами/контроллерами ? (мало знаю о железных "мозгах", если есть знающие - расскажите).
Обновлено! 09.04
Об 1. Стандартным средством ( подразумевалась JVM ) прогнать код до машинного возможности нет, по крайней мере так нам говорит вики, но, оттуда же, стало ясно, что есть сторонне средство - GCJ. Является альтернативой JVM и имеет в своём арсенале вот такую приятную плюшку. Точной информации об платформах(аппаратных), под которые поддерживается компиляция, не нашел - "многих".
Разница byte-code и native-code:
1)native быстрее запускается
2)Нет никаких гарантий, что native будет работать быстрее
3)Как я полагаю, native не будет тащить на себе ОС и JVM, что существенно отражается на кол-ве необходимой для работы программы ROM.
Возможно, это решение может выступить альтернативой ME-версии.
(Под здоровенным вопросом, ибо :
1) Не известно, поддерживает ли GCJ такие низкопроизводительные аппаратные платформы.
2) Нет информации о производительности этого кода.
Обновлено. 11.04
Об 2. Любая версия языка Java, будь то ME,SE или Embedded, работает в паре с JRE, интерпретируясь. Кроме случая выше и двух, будущих описанными ниже.
Во-первых, были попытки выщемить из цепи ОС, заменив её своим, исключительно Ява-ориентированным средством. О том, что это такое, тут.
Во-вторых, оказалось, что существуют Ява-ориентированные процессоры, их особенностью является встроенный сопроцессор, который аппаратно интерпретирует byte-code(!не программно) и уже его отдаёт на исполнение.
Подробнее о Jazelle.
Богато тут.
Идея, о которой шла речь - "обратная связь", конкретно реализуемый тип в будущем прототипе - давление/сопротивление давлению.
Пользуясь случаем. Читающий народ уровней 15-25, давайте бахнем маленькое комьюнити для общения/тэт-а-тэт. Ибо одному - вообще не гут, и даже больше - жуть полнейшая.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Для AVR микроконтролеров:
NanoVM www.harbaum.org/till/nanovm/index.shtml
HaikuVM haiku-vm.sourceforge.net/
Bajos code.google.com/p/bajos/
Для STM32:
MicroEJ www.is2t.com/products/ (платная)
Для PIC:
uJ dmitry.gr/index.php?r=05.Projects&proj=12.%20uJ%20-%20a%20micro%20JVM