2009-09-05 3 views
19

Если мы реализуем java-интерпретатор в оборудовании, то как мы можем достичь нейтральности архитектуры java-байт-кода ... делает ли Java JIT (только во временном интерпретаторе)? и как все это связано с виртуальной концепции машины операционной системы и виртуальной машины Java (JVM)Можем ли мы реализовать java-интерпретатор на оборудовании, который выполняет Java-байт-коды изначально?

+1

Список реализации: https://en.wikipedia.org/wiki/Java_processor –

ответ

10

Существует уже несколько аппаратных реализаций системы Java (то есть процессор, который может выполнять байт-коды), но они не стали мейнстримом. Это, скорее всего, потому, что реализация программного обеспечения также работает или даже лучше, поскольку процессоры становятся все быстрее и быстрее.

Как вы узнаете, когда вы изучаете более подробно, детали реализации JVM не так важны (и варьируются довольно немного), но все они выполняют машинный язык JVM-java-байтового кода. Если вы остаетесь в мире Java и не ссылаетесь на «родной» материал, вы должны быть в порядке с любой выбранной вами реализацией.

Эта компания делает жизнь предоставления серверных систем, настроенные для программ Java, они могут вас заинтересовать: http://www.azulsystems.com/

+0

один быстрый вопрос, однако, какая конфигурация должна иметь устройство для запуска версии программного обеспечения jvm? – inquisitive

+1

@Inquisitive Кто-то должен был сделать JVM доступным для этого устройства. Затем конфигурация должна удовлетворять требованиям для JVM. –

+1

Здесь, в 2017 году, CPU перестали становиться все быстрее и быстрее. Вместо этого программное обеспечение JVM использует гораздо больше памяти для хранения профилирующей информации, которую JIT может использовать для создания чрезвычайно оптимизированного машинного кода, где это имеет значение. У аппаратных реализаций обычно нет такой опции, поэтому они не могут оптимизировать столько. Таким образом, при идентичном оборудовании программное решение выигрывает. –

3
  • Реализация JVM в аппаратных средствах игнорирует преимущество запуска управляемого кода. Тогда было бы иначе, чем из любого другого родного кода. И да, нейтральность платформы также затруднена. Независимо от того, есть такие реализации, посмотрите серию процессоров aJile и Jazelle ARM. Тем не менее, они ориентированы на встроенные платформы.
  • Компилятор Sun, HotSpot использует JIT. Я лично не использовал других, но это должна быть высокотехнологичная технология.
  • JVM можно рассматривать как ограниченный ресурс VM, ориентированный только на одну конкретную платформу (байт-код Java).
+0

, что означает, что виртуализация java (или мы можем назвать ее jre?) Отличается от виртуализации операционной системы ... Я прав? – paragjain

+0

Виртуализация, как я понял, это симуляция аппаратного обеспечения с помощью программного обеспечения. Приложение-гость (java-приложения или операционные системы) видит VM как просто другой компьютер и использует собственный код для взаимодействия с ним.VM с другой стороны понимает собственный машинный код, интерпретирует то, что приложение запрашивает, а затем выполняет сами действия при условии наличия необходимых разрешений и разрешений. Таким образом, благодаря этому определению, виртуализация приложений Java или ОС аналогична, его диапазон операций, предоставляемых гостевой и мощности виртуальной машины, который отличается. – Chintan

+0

Виртуализация означает изменение полной физической машины на программу, запущенную на другой физической машине. –

6

Да, вы можете. Хотя это похоже на то, что он застрял на этапе спецификации (или был оставлен), picoJava допускает собственное выполнение байт-кода Java. picoJava has a port available on a FPGA. Существует Jazelle, а также для процессоров ARM.

Учитывая, что аппаратное обеспечение будет напрямую выполнять байт-код, все оптимизации также должны выполняться на аппаратном уровне. JIT не требуется, так как процессор будет запускать байт-код напрямую. Ведь всякая аппаратная реализация предполагает внедрение модели JVM, как определено в Java Virtual Machine Specification. Оптимизации, которые могут быть выполнены, будут на линии оптимизации аппаратного обеспечения - конвейерная обработка инструкций, использование кешей и т. Д.

Аппаратный нейтралитет не теряется, поскольку байт-код, выполняющийся на аппаратной реализации, будет продолжать работать над реализацией программного обеспечения как Что ж. Это стандарт байт-кода, который позволяет Java быть аппаратно нейтральным.

+0

Приятно отметить, что «нейтральность оборудования не потеряна, поскольку байт-код, выполняемый на аппаратной реализации, будет продолжать работать и с программной реализацией. Это стандарт байт-кода, который позволяет Java быть аппаратно нейтральным». –

6

Да, есть несколько аппаратных реализаций Java. Однако они не всегда работают лучше, чем программное обеспечение, работающее на более мощном кремнии общего назначения.

Марк Лам написал several interesting blogs entries по этой теме.

+0

Одна из основных проблем заключается в том, что оптимизация программного обеспечения может быть «исправлена». Аппаратное обеспечение не может. –

+1

Даже если выполнение происходит в аппаратном обеспечении, ничего не мешает аппаратной JVM делать любые оптимизации, которые она хочет. У машины есть ОЗУ и все :) –

+4

На самом деле, это практически невозможно для программного обеспечения быстрее, чем аппаратное обеспечение. Если оборудование работает медленнее, значит, оно недостаточно развито. Например, если Hotspot JIT быстрее, чем какая-то аппаратная реализация Java, вы можете просто переместить Hotspot JIT на аппаратное обеспечение, которое, несомненно, будет быстрее, чем существующее. Но в любом случае я сомневаюсь, что JIT - это самый быстрый способ реализовать JVM в оборудовании. @Vineet: 1. Все, что можно сделать в программном обеспечении, можно выполнить на аппаратном уровне. 2. x86 выполняет строгие оптимизации на аппаратном уровне. –