JavaRush /Java блог /Random UA /У теорії про байт-код, JVM і мікроконтролери | Java-код д...
Gro
19 рівень
Минск

У теорії про байт-код, JVM і мікроконтролери | Java-код для МК

Стаття з групи Random UA
Стаття-чернетка. Зрештою напишу кілька вікі-подібних статей, за схемою:

Тема: Де і як працює Ява
- Про пристрій Яви
- Про залізо
- Як цей софт працює на залізі

Стаття була про проблеми, з якими я зіткнувся. Вивчивши інфу, доповнив її відповідями.
Уявляє собою кашу-малашу з тем зверху.

Доброго!

Передмова. (Оффтоп)
Було і є в мене наростаюче бажання сконструювати такий собі, цілком фізичний агрегат.
Агрегат, в основі якого лежить одна проста, але поглинула мене цілком ідея.
Ідея, що поставила мені напрямки розвитку на найближчі десять років.
Теоретично вже напівготова конструкція пристрою, що реалізує дитину можливостей тієї запланованої махини.

Саме зараз, при доопрацюванні напівготової конструкції, поринувши більш детально в компоненти, я зіткнувся з необхідністю управління сервомоторами і, відповідно, програмування якихось "мозків".

Тут і підходить низка питань, об'єднати які можна в "Чи можна, і як, змусити МК виконувати 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, давайте бахнем маленьке комьюніті для спілкування/тет-а-тет. Бо одному – взагалі не гут, і навіть більше – жах повна.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ