Java Virtual Machine (JVM)
Java Virtual Machine (сокращенно Java VM, JVM) — виртуальная машина Java — основная часть исполняющей системы Java, так называемой Java Runtime Environment (JRE). Виртуальная машина Java интерпретирует и исполняет Байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java (javac). JVM может также использоваться для выполнения программ, написанных на других языках программирования. Например, исходный код на языке Ada может быть откомпилирован в байт-код Java, который затем может выполниться с помощью JVM.
JVM является ключевым компонентом платформы Java. Так как виртуальные машины Java доступны для многих аппаратных и программных платформ, Java может рассматриваться и как связующее программное обеспечение, и как самостоятельная платформа, отсюда принцип «написано однажды, запускается везде» (write once, run anywhere). Использование одного байт-кода для многих платформ позволяет описать Java как «скомпилировано однажды, запускается везде» (compile once, run anywhere).
5 лучших программ, которые интерпретируют байт-код Java, который вы можете получить сегодня

Вы разработчик программного обеспечения или программист? Вам нужен надежный интерпретатор байт-кода Java? Эта статья специально для вас.
В этой части мы рассмотрим некоторые из наиболее надежных программ, которые интерпретируют байт-код Java.
Очевидно, что Java является одним из наиболее важных аспектов программирования, так как большое количество программ / приложений написано на языке Java. Набор инструкций, составляющих Java, является так называемым байт-кодом, который представляет собой набор машинных кодов (обычно в форме файлов .class), предоставляемых виртуальной машине JVM-Java. Виртуальные машины Java обычно называются интерпретаторами байт-кода Java.
В качестве функции программирования трудно найти надежное программное обеспечение, которое интерпретирует байт-код Java. Тем не менее, мы провели некоторое исследование и составили для вас полный список лучших интерпретаторов байт-кода Java на рынке, особенно совместимых с операционной системой Windows.
Читайте дальше, поскольку мы представляем вам исчерпывающую схему 5 лучших программ, которые интерпретируют байт-код Java.
Лучшее программное обеспечение, которое интерпретирует байт-код Java
HotSpot
HotSpot от Oracle является ведущим выбором большинства разработчиков по всему миру. И это возглавляет наш список программного обеспечения, которое интерпретирует байт-код Java.
Программа, которая первоначально известна как Java HotSpot Performance Engine , написана на C ++ и языке ассемблера. Он также поддерживает кроссплатформенную поддержку операционных систем Windows, Mac, Linux и Solaris.
HotSpot обладает мощным набором функций, в частности, функциями «адаптивной оптимизации» и «своевременной компиляции».
Кроме того, HotSpot поддерживает только архитектуры набора команд (ISA), такие как x86-84, IA-32, VFP ARMv7, SPARC (эксклюзивно для компьютеров Solari) и ARMv8. Эта система поддержки ISA, как правило, лучшая на рынке.
Другие известные особенности HotSpot включают интерпретатор байт-кода Java, двойную виртуальную машину (компилятор клиента и сервера), многоуровневый компилятор, загрузчик классов Java, сборщики мусора, библиотеки времени выполнения, флаги JVM, кросс-платформенную совместимость и многие другие.
Интерпретатор байт-кода Java HotSpot и виртуальная машина лицензируются в соответствии с GNU General Public License (GPL). Как таковой, он доступен бесплатно.
OpenJ9
OpenJ9 от Eclipse Foundation IBM широко считается ближайшим конкурентом HotSpot. Как и HotSpot, это также универсальный интерпретатор байт-кода Java и виртуальная машина Java.
Программное обеспечение совместимо со всеми основными компьютерными операционными системами, в частности с Windows, AIX, macOS, Linux и многими другими. Существует специальная поддержка — встроенный двоичный файл OpenJDK — для трех известных компьютерных ОС, то есть Windows, Linux и macOS.
Этот программный интерпретатор предлагает оптимизированную настройку, которая адекватно оснащена, чтобы не только интерпретировать байт-код Java, но также повышает общую производительность вашей Java-программы.
Кроме того, программное обеспечение предлагает настраиваемую платформу, которая позволяет вам создавать OpenJDK самостоятельно, при условии, что у вас есть необходимый опыт.
Другие заслуживающие внимания особенности виртуальной машины OpenJ9 / интерпретатора байт-кода Java включают в себя объем памяти, быстрый запуск и время выполнения, расширенную конфигурацию, Eclipse OMR (встроенная программа), компиляторы Just-in-time (JIT) и Ahead of time (AOT), дампы Java , системные дампы, онлайн ресурсы и многое другое.
OpenJ9 — это приложение с открытым исходным кодом, которое финансируется за счет пожертвований со всего мира. Точно говоря, OpenJ9 доступен для бесплатной загрузки.
JRockit
JRockit является одной из наиболее широко используемых виртуальных машин Java и выделяется как одна из лучших программ, интерпретирующих байт-код Java. Программное обеспечение, которое изначально разрабатывалось виртуальной машиной Appeal, теперь принадлежит и управляется Oracle .
Он поддерживается в Windows и других известных операционных системах. Кроме того, программное обеспечение поддерживается только в системах со следующими ISA: SPARC (для Solaris), x86-64 и x86.
JRockit написан на кодах C и Java и служит универсальным решением JVM — виртуальная машина Java -, которое точно разработано для высокой производительности, мониторинга, интерпретации и диагностики программ Java.
Кроме того, JRockit оптимизирован для обеспечения быстрого выполнения приложений Java. Другие примечательные особенности Oracle JRockit включают интерпретацию байт-кода Java, сборку мусора, мягкую настройку, анализ программ, быстрое время отклика (в микросекундах) и многое другое.
JRockit стал свободным программным обеспечением в 2011 году, вскоре после его приобретения Oracle. И теперь вы можете скачать его бесплатно.
Squawk Виртуальная машина
Виртуальная машина Squawk является выдающейся JVM, которая предназначена для создания простых приложений Java. Это микро версия JVM, специально разработанная для простоты, с небольшим внешним вмешательством.
Следовательно, он лучше всего приспособлен для небольших устройств и встроенных систем. Интерпретатор байт-кода Java является кросс-совместимым со всеми известными операционными системами, в основном Windows, Linux и macOS.
Squawk, как и большинство интерпретаторов / виртуальных машин Java-байт-кода, написан на низкоуровневых языках программирования, таких как C ++ и Assembly. Тем не менее, основные аспекты программного обеспечения написаны на Java, что делает его «метакруглым интерпретатором».
Другие ключевые функции Squawk включают в себя низкий объем памяти, интерпретацию байт-кода, упрощенный интерфейс, простую отладку, межплатформенную поддержку, простую интеграцию и многое другое.
Squawk лицензируется в соответствии с GNU General Public License (GPL), и он доступен бесплатно.
Апач Гармония
Apache Harmony от Apache Software — еще одно популярное программное обеспечение, которое интерпретирует байт-код Java. Хотя разработка программного обеспечения остановилась в 2011 году, она все еще остается одним из лучших интерпретаторов байт-кода Java и виртуальных машин.
Apache Harmony поддерживается в Windows, Linux и macOS. Существует также мобильная поддержка Android, которая теперь работает в основном на библиотеках OpenJDK, а не в качестве полноценной виртуальной машины.
Гармония написана на C ++ и Java. А до официального выхода на пенсию в 2011 году программное обеспечение не дотягивало до 2%.
Следовательно, неполная библиотека привела к прекращению работы некоторых программ на Java, таких как Vuze, Geronimo (из Apache) и ArgoUML.
Тем не менее, несмотря на внезапное завершение и почти полноту, ряд приложений по-прежнему поддерживается в Harmony. Эти приложения включают в себя JUnit, Tomcat, Apache Velocity, Apache Ant и многие другие.
Другие функции Apache Harmony включают интерпретатор байт-кода Java, библиотеку классов, JIT-компилятор, ядро виртуальной машины, уровень портирования, диспетчер потоков, сборщик мусора и многие другие.
Apache Harmony был удален (его разработка остановлена) в ноябре 2011 года. Однако он все еще доступен для скачивания, хотя и без технической поддержки или чего-то подобного.
В заключение, интерпретаторы байт-кода Java являются важными компонентами при разработке программ на Java. И чтобы помочь вам в выборе, мы рассмотрели пять лучших интерпретаторов байт-кода Java на рынке.
Эти интерпретаторы байт-кода Java были выбраны и ранжированы на основе их относительной популярности и долговечности по сравнению с другими.
СВЯЗАННЫЕ ИСТОРИИ, КОТОРЫЕ ВЫ ДОЛЖНЫ УЗНАТЬ:
- Вот как скачать Java 10 на ПК с Windows
- 5 лучших программ для разработки карт для Windows 10 [2019 Список]
- Microsoft выпускает Code Builder для Minecraft Education Edition
В чем отличие байт кода от машинного?
Байт код — это упрощенный исходный код. Он переносим так же как и исходный, но создан не для чтения программистами, а для дальнейшей компиляции. Его плюс в том, что он меньше весит и быстрее компилируется.
Παν μέτρον άριστονМыслитель (9566) 4 года назад
То, что он компилируется быстрее и делает его широко используемым в интерпретируемых языках, которые компилятся на лету. Но далеко не все интерпретируемые языки являются языками, работающими на виртуальных машинах, как Java или C#.
Остальные ответы
Байткод требует трансформации в машинный (JIT- или AOT-компиляция) или интерпретации чтобы быть выполненым, т. к. процессоры, за редким исключением (ARM Jazelle, ThumbEE), ничего не знаю о байткоде и о том, как его выполнять. Поскольку байткод не привязан к аппаратной архитектуре он 100% переносим — нужно лишь реализовать компилятор/интерпретатор для целевой платформы. Зачастую байткод обладает более развитой системой типов и поддерживает высокоуровневые инструкции типа «создать объект», «вызвать виртуальный метод» и т. п.
Байт-код это промежуточный код. Он в свою очередь транслируется в машинный код виртуальной машиной.
Например, исходный код программы на C# компилируется в байт-код, после чего виртуальная машина-CLR интерпретирует и исполняет этот промежуточный код.
Байт-код — это промежуточный подход, при котором программа преобразуется в промежуточный двоичный вид, интерпретируемый некой «виртуальной машиной» во время исполнения. Причиной вновь вспыхнувшего интереса к компиляторам стало появление быстрых и сложных 64-разрядных микропроцессоров, типичным представителем которых можно считать Intel Itanium. Все усовершенствования в архитектуре процессоров, такие как
распараллеливание и предсказание ветвления, а также возможность резкого
увеличения производительности, окажутся бесполезны до тех пор, пока программисты
не начнут их реально использовать. .Байт-код Java преобразуется в машинный код с помощью специального
интерпретатора, называемого виртуальной машиной Java (Java Virtual Machine —
JVM). JVM формирует выделенное пространство в памяти, которое отделено от памяти
основной системы, для хранения байт-кода и порождаемых структур. Для программирования на языке Java или других JVM-совместимых языках, знание особенностей байт-кода не обязательно. Однако, как следует из публикации в журнале IBM developerWorks, «понимание байт-кода и понимание механизмов его генерации компилятором Java помогает Java-программисту так же, как и знание языка ассемблера помогает программисту, пишущему на Си или С++».
JVM интерпретирует байт-код в машинный код?

После того как байт-код попал в jvm, jvm интерпретирует код в машинный код или просто компилирует ? Что происходит непосредственно в JVM подскажите пожалуйста
- Вопрос задан более двух лет назад
- 244 просмотра
Комментировать
Решения вопроса 1

Орхан Гасанлы @azerphoenix
Java Software Engineer
Здравствуйте!
Будет ли JVM компилировать или интерпретировать байт-код зависит от платформы.
Прочитайте вот, этот ресурс — Ссылка
Вот, похожий вопрос — https://qna.habr.com/q/897579?e=10433021#comment_2.
Подводя итог, в зависимости от среды исполнения байт-код может быть:
— скомпилирован заранее и выполнен как родной код (похожий на большинство компиляторов С++)
— скомпилирован (JIT) и выполнен
— интерпретирован
— напрямую выполняется поддерживаемым процессором (байт-код — это собственный набор команд некоторых процессоров)
Ответ написан более двух лет назад
Нравится 2 2 комментария
Аркадий Виноградов @usov-dmitriy Автор вопроса
Я так понимаю что JVM использует JIT, где БАЙТ-КОД проходит некую верификацию в зависимости от железа и системы, после всех этих действий с выбором системы JIT определяет компилировать или интерпретировать БАЙТ-КОД в машинный код, все верно ?
