если мы реализуем java-интерпретатор в оборудовании, то как мы можем достичь нейтральности архитектуры java-байт-кода... использует ли java JIT (только во временном интерпретаторе)? и как все это связано с концепцией виртуальной машины операционной системы и виртуальной машины Java (JVM)
Можно ли реализовать java-интерпретатор на оборудовании, который выполняет Java-байт-коды изначально?
Ответ 1
Уже существует несколько аппаратных реализаций системы Java (то есть процессор, который может выполнять байт-коды), но они не стали мейнстримом. Это, скорее всего, потому, что реализация программного обеспечения также работает или даже лучше, поскольку процессор стал быстрее и быстрее.
Как вы узнаете при исследовании более подробно, детали реализации JVM не так важны (и варьируются довольно немного), но все они выполняют машинный язык JVM-java-байтового кода. Если вы остаетесь в мире Java и не ссылаетесь на "родной" материал, вы должны быть в порядке с любой версией, которую вы выберете.
Эта компания зарабатывает на предоставлении серверных систем, настроенных для программ Java, они могут вас заинтересовать: http://www.azulsystems.com/
Ответ 2
Да, вы можете. Хотя это похоже на то, что он застрял на стадии спецификации (или был оставлен), picoJava позволяет выполнять собственное исполнение байт-кода Java. picoJava имеет порт, доступный на FPGA. Существует Jazelle, а также для процессоров ARM.
Учитывая, что аппаратное обеспечение будет напрямую выполнять байт-код, все оптимизации также должны выполняться на аппаратном уровне. JIT не требуется, так как процессор будет запускать байт-код напрямую. Ведь всякая аппаратная реализация предполагает внедрение модели JVM, как определено в Спецификация виртуальной машины Java. Оптимизации, которые могут быть выполнены, будут на линии оптимизации аппаратного обеспечения - конвейерная обработка инструкций, использование кэшей и т.д.
Аппаратная нейтральность не теряется, так как исполняемый байт-код на аппаратной реализации будет продолжать работать и с программной реализацией. Это стандарт байт-кода, который позволяет Java быть аппаратно нейтральным.
Ответ 3
Да, существует несколько аппаратных реализаций Java. Однако они не всегда работают лучше, чем программное обеспечение, работающее на более универсальном кремнии.
Марк Лам написал несколько интересных записей в блогах по этому вопросу.
Ответ 4
- Реализация JVM в оборудовании игнорирует преимущество запуска управляемого кода. Тогда было бы иначе, чем из любого другого родного кода. И да, нейтральность платформы также затруднена. Независимо от того, есть такие реализации, посмотрите серии процессоров aJile и ARM Jazelle. Однако они ориентированы на встроенные платформы.
- Sun compiler, HotSpot использует JIT. Я лично не использовал других, но это должна быть очень используемая технология.
- JVM можно рассматривать как ограниченный ресурс VM, ориентированный только на одну конкретную платформу (байт-код Java).