Что относительно физической машины Java?

Java - это самый важный язык для мобильных устройств, поскольку он позволяет выполнять один и тот же двоичный/байтовый код на каждом компьютере, вставляя виртуальный уровень JVM между байтовым кодом и машиной.

Можно ли построить физическую машину Java, которая будет принимать байтовый код вместо традиционного кода операции и операнда для X86/arm? поэтому реальная операционная система может быть построена с использованием Java, и она будет эффективной/быстрой, чем установка JVM поверх текущей операционной системы.

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

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

Ответы

Ответ 1

Аналогичная вещь была сделана с Forth многими лунами назад (Novix, я думаю, это было вызвано). Я подозреваю, что это не удастся по ряду причин.

  • Стоимость создания Java-процессора намного перевешивает затраты на создание интерпретатора Java. Вот почему нет миллиона различных производителей процессоров, но есть миллион разных компьютерных языков (ну, может быть, не так много, но это много).
  • JIT-компиляторы полностью избавляют от необходимости использовать Java-in-silicon, поскольку они все равно компилируются на язык ассемблера.
  • В связи с пунктом 1 представьте, сколько стоит исправление ошибки в вашем процессоре, а не один в вашем интерпретаторе.
  • Огромное количество людей уже используют машины с Java. Вы столкнетесь с большим сопротивлением рынку, двигающимся к вашему решению.

Ответ 2

Это уже существует. Первой попыткой была спецификация Sun PicoJava, из которой в какой-то момент была выпущена реализация с открытым исходным кодом.

Текущие примеры процессоров, которые могут напрямую запускать байт-код Java:

Ответ 3

AFAIK, это уже сделано (см. справочное руководство микропроцессора PSC 1000). Цитата:

Архитектуры стека микропроцессора PSC1000 и виртуальная машина Java очень аналогичный. Это приводит лишь к относительно простому байту переводчик кода (20K), необходимый для производства исполняемый собственный код из байт-кода Java, скорее чем полный компилятор Just-in-Time (JIT) (200-400K). результат намного быстрее начального выполнения программ Java и значительно меньшие требования к памяти. Кроме того, большинство современных языков модель стека. Функции, которые позволяют PSC1000 для запуска Java эффективно применяются аналогично другим языкам таких как C, Forth и Postscript..

Ответ 4

Проблема заключается в том, что у вас нет эффекта масштаба.

Процессоры Intel/AMD намного дешевле и быстрее, чем вы можете получить с ними, пока они не будут работать в каждом процессоре повсюду. Существующие программные JVM-устройства просто намного быстрее, чем то, что можно было получить на аппаратном уровне, и по мере того, как процессор все время становился быстрее, стимулов для продвижения не было.

Времена изменились. Процессор не работает быстрее с текущей архитектурой, поэтому, возможно, это имеет больше смысла, поскольку Java хорошо подходит для многоядерных приложений.

Ответ 5

Sun выпустила несколько чипов java (picoJava, ultraJava), и этот.