Главная страница » Это программное обеспечение которое интерпретирует байт код java

Это программное обеспечение которое интерпретирует байт код java

  • автор:

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

программное обеспечение, которое интерпретирует Java-байт-код

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

В этой части мы рассмотрим некоторые из наиболее надежных программ, которые интерпретируют байт-код Java.

Очевидно, что Java является одним из наиболее важных аспектов программирования, так как большое количество программ / приложений написано на языке Java. Набор инструкций, составляющих Java, является так называемым байт-кодом, который представляет собой набор машинных кодов (обычно в форме файлов .class), предоставляемых виртуальной машине JVM-Java. Виртуальные машины Java обычно называются интерпретаторами байт-кода Java.

В качестве функции программирования трудно найти надежное программное обеспечение, которое интерпретирует байт-код Java. Тем не менее, мы провели некоторое исследование и составили для вас полный список лучших интерпретаторов байт-кода Java на рынке, особенно совместимых с операционной системой Windows.

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

Лучшее программное обеспечение, которое интерпретирует байт-код Java

HotSpot

HotSpot программное обеспечение, которое интерпретирует Java-байт-код

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 программное обеспечение, которое интерпретирует Java-байт-код

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-байт-код

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 Virtual Machine, которое интерпретирует байт-код Java

Виртуальная машина Squawk является выдающейся JVM, которая предназначена для создания простых приложений Java. Это микро версия JVM, специально разработанная для простоты, с небольшим внешним вмешательством.

Следовательно, он лучше всего приспособлен для небольших устройств и встроенных систем. Интерпретатор байт-кода Java является кросс-совместимым со всеми известными операционными системами, в основном Windows, Linux и macOS.

Squawk, как и большинство интерпретаторов / виртуальных машин Java-байт-кода, написан на низкоуровневых языках программирования, таких как C ++ и Assembly. Тем не менее, основные аспекты программного обеспечения написаны на Java, что делает его «метакруглым интерпретатором».

Другие ключевые функции Squawk включают в себя низкий объем памяти, интерпретацию байт-кода, упрощенный интерфейс, простую отладку, межплатформенную поддержку, простую интеграцию и многое другое.

Squawk лицензируется в соответствии с GNU General Public License (GPL), и он доступен бесплатно.

Апач Гармония

Программное обеспечение Apache Harmony, которое интерпретирует байт-код Java

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 Virtual Machine

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).

Содержание

Спецификация JVM

В 1996-м году компания Sun выпустила первую версию документа «Голубая книга JVM», в котором описана спецификация виртуальной машины Java, ставшего де-факто отраслевым стандартом платформы Java. Благодаря этому документу появились альтернативные реализации JVM, являющиеся «разработками с чистого листа» (англ.  clean room design ). В качестве примера можно привести Kaffe.

Начиная с версии J2SE 5.0 изменения в спецификации JVM вырабатываются в соответствии с формализованными пожеланиями заинтересованных сторон. Процесс внесения изменений в спецификации JVM называется Java Community Process.

JVM, доступная в исходных текстах на Си от фирмы Sun называется KVM (Kilo Virtual Machine) и доступна на их сайте.

Конкуренция между Sun и Microsoft

В начале развития платформы Java существовали две конкурирующие реализации Java VM — одна от фирмы Sun Microsystems, создателя языка Java, для различных платформ (Windows, Mac OS, Unix), и другая — от фирмы Microsoft, ориентированная только на платформу Windows и, по утверждениям Microsoft, «специально оптимизированная для быстрого выполнения Java-кода на платформе Microsoft Windows».

Однако, Microsoft JVM была не полностью совместима со спецификацией, описанной Sun в голубой книге JVM, а также имела существенные проблемы с производительностью при работе под большими нагрузками (при большом числе одновременно выполняемых потоков) и с безопасностью. Компания Sun посчитала такую ситуацию недопустимой и решила, что Microsoft занимается намеренной дискредитацией и профанацией платформы Java путем распространения своей версии виртуальной машины Java, обладающей вышеперечисленными недостатками. На этом основании Sun неоднократно подавала в суд на Microsoft и добилась сначала того, что Microsoft потеряла право называть свою реализацию JVM Java VM. С этого момента Microsoft стала называть свой продукт просто Microsoft VM. Затем Microsoft потеряла право встраивать свою VM в браузеры и операционные системы. После этого Microsoft вынуждена была изъять свою VM из поставки Windows и из пакета IE, но могла, согласно решению суда, предлагать её отдельно для скачивания на сайте. Затем Sun добилась прекращения разработки новых версий Microsoft VM и прекращения выпуска обновлений к ней, а затем и снятия Microsoft VM из списка доступных для скачивания программ на сайте Microsoft.

Некоторые обозреватели компьютерных изданий полагают, что жесткая позиция, занятая Sun по вопросу Java, могла послужить дополнительным стимулом для разработки компанией Microsoft собственного Windows-платформенного решения — «.NET Framework».

Разногласия между Sun и IBM

В 2001 году, с целью разработки стандарта кросс-платформенных Desktop-приложений, IBM стартовала открытый проект Eclipse.

Фреймворк Eclipse был основан на предыдущей закрытой разработке IBM VisualAge. IBM удалось сбалансировать интересы свободного сообщества и интересы бизнеса (свои интересы) в лицензии Eclipse Public License, признанной организацией FSF.

Проект успешно развивается, используется в индустрии, в значительной степени отделился от IBM в самостоятельный (см. Eclipse Foundation).

Sun остаётся в оппозиции к Eclipse Foundation, также как и Microsoft. Формально основной причиной противоречий остается библиотека SWT, которая противоречит Sun-концепции виртуальной машины и переносимости Java-приложений.

Среда исполнения

Программы, предназначенные для запуска на JVM должны быть скомпилированы в стандартизированном переносимом двоичном формате, который обычно представляется в виде файлов .class. Программа может состоять из множества классов, размещенных в различных файлах. Для облегчения размещения больших программ, часть файлов вида .class могут быть упакованы вместе в так называемый .jar файл (сокращение от Java Archive).

Виртуальная машина JVM исполняет файлы .class или .jar, эмулируя инструкции, написанные для JVM, путем интерпретирования или использования just-in-time компилятора (JIT), такого, как HotSpot от Sun microsystems. В наши дни JIT компиляция используется в большинстве JVM в целях достижения большей скорости. Существуют также ahead-of-time компиляторы, позволяющие разработчикам приложений прекомпилировать файлы классов в родной для конкретной платформы код.

Как и большинство виртуальных машин, Java Virtual Machine имеет stack-ориентированную архитектуру, свойственную микроконтроллерам и микропроцессорам.

JVM, которая является экземпляром JRE (Java Runtime Environment), вступает в действие при исполнении программ Java. После завершения исполнения, этот экземпляр удаляется сборщиком мусора. JIT является частью виртуальной машины Java, которая используется для ускорения времени выполнения приложений. JIT одновременно компилирует части байт-кода, которые имеют аналогичную функциональность, и, следовательно, уменьшает количество времени, необходимого для компиляции.

Name already in use

job4j / interview_questions / Core.md

  • Go to file T
  • Go to line L
  • Copy path
  • Copy permalink
  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

1. Что такое виртуальная машина?

Виртуальная машина — это программная и/или аппаратная система, эмулирующая аппаратное обеспечение гостевой (target) платформы и исполняющая программы для target-платформы на host-платформе (платформа-хозяин) или виртуализирующая некоторую платформу и создающая на ней среды, изолирующие друг от друга программы и даже операционные системы.

т.е. по-простому VM — это программная копия физического компьютера, которая выполняет ПО написанное под конкретную платформу, переводя скомпилированный байт-код в машинные операции.

например Java VM исполняет байт-код java, созданный из исходного кода java-программы компилятором javac.

2. К какому типа языка программирование относиться Java?

Java — строго типизированный объектно-ориентированный язык программирования, разработанный компанией Sun Microsystems (далее приобретённой Oracle). Каждая переменная и константа представляет определенный тип, который строго определен. Тип данных определен диапазоном значений, которые может хранить переменная или константа. Все выражения и параметры javac проверяет на соответствие типов.

Java — интерпретируемый язык, т.е. написанный код компилируется в байт-код Java, который передается в интерпретатор (JVM)

Т.е. следует принципу «Писать один раз, запускать где угодно» — скомпилированный код Java может работать на всех платформах, поддерживающих Java, без необходимости перекомпиляции.

3. Из каких компонентов состоит Java JDK JRE JVM?

Java состоит из компилятора языка javac, виртуальной машины, различных библиотек и утилит.

img

Java Development Kit (JDK) является одним из трех основных пакетов, используемых в программировании на языке Java. К ним также относятся JVM (Java Virtual Machine) и JRE (Java Runtime Environment).

img

JVM — это часть платформы Java, которая исполняет программы;

JRE — это элемент Java, расположенный на диске, создающий и запускающий JVM;

JDK — позволяет разработчикам создавать Java-программы, которые могут выполняться и запускаться посредством JVM и JRE. JDK = JRE + компилятор

4. Для чего используется JDK?

JDK (Java Development Kit) — это комплект разработчика приложений Java, включающий компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE).

Техническое определение: JDK — это реализация спецификации платформы Java, включающая в себя компилятор и библиотеки классов.

Обобщенное определение: JDK — это программный пакет, который вы загружаете для создания Java приложений.

5. Для чего используется JRE?

JRE (Java Runtime Environment) представляет минимальную реализацию виртуальной машины, необходимую для исполнения Java-приложений.

JRE состоит из виртуальной машины JVM (Java Virtual Machine) и библиотек Java-классов.

6. Для чего используется VM?

JVM (Java Virtual Machine) — это виртуальная машина Java, предназначенная для исполнения Java программ и являющаяся основной частью JRE.

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

Для повышения производительности во многих JVM дополнительно применяется JIT-компиляция, предназначенная для преобразования часто исполняемых фрагментов байт-кода в машинный код.

7. Расскажите про примитивные типы?

1. Примитивные:

  • byte (целые числа, 1 байт или 8 бит, интервал значений [-128, 127] т.е. 2^7, т.к. отрицательные, ноль и положительные)
  • short (целые числа, 2 байта или 16 бит, [-32768, 32767])
  • int (целые числа, 4 байта, [-2147483648, 2147483647])
  • long (целые числа, 8 байт, [-9223372036854775808, 9223372036854775807])
  • float (вещественные числа, 4 байта)
  • double (вещественные числа, 8 байт)
  • char (символ Unicode , 2 байта, [0, 65536])
  • boolean (значение истина/ложь, используется int , зависит от JVM)

Примитивы передаются по значению.

2. Ссылочные — типы, которые содержат адреса в местах памяти, где хранятся данные. Т.е. хранят дескрипторы объектов в кучном пространстве.

Это все остальные типы: классы, перечисления и интерфейсы, например, объявленные в стандартной библиотеке Java, а также массивы.

String предназначен для хранения строк текста. Объекты класса String являются неизменяемыми (immutable). Поэтому, когда вам кажется, что вы меняете строку, то на самом деле вы создаёте новую строку.

Классы-обертки — соответствуют примитивным типам, однако являются ссылочными, содержат методы для преобразования типов, а также другие константы и методы полезные при работе с примитивами.

  • Byte
  • Short
  • Integer
  • Long
  • Float
  • Double
  • Character
  • Boolean

Классы-обертки позволяют нивелировать недостатки, которые есть у примитивных типов. Самый очевидный из них — примитивы не имеют методов.

Пример 1. у примитивов нет метода toString() , поэтому, например, нельзя преобразовать число типа int в строку. А вот с классом-оберткой Integer — запросто.

Пример 2. сложности с обратным преобразованием. Допустим, у нас есть строка, которая содержит число.
В случае с примитивным типом int это число из строки нельзя достать и превратить, собственно, в число. Но благодаря классам-оберткам такая возможность имеется.

Автобоксинг — помещение примитивного типа в класс-обертку.

Анбоксинг — присвоение значения класса-обертки примитивному типу.

8. Описать шаги для компиляции и запуска приложения в консоли javac java?

Создаем класс — файл с расширением *.java Main.java

Переходим в каталог, где лежит данный файл, и запускаем компилятор javac, где указываем что компилируем и куда складываем javac -d куда Main.java

На выходе получаем файл Main.class — это байт-код.

Далее запускаем байт-код, расширение можно не указывать java -cp откуда Main arg0 arg1 arg2

9. Что такое оператор условия?

Оператор условия — это операторы (ключевые слова языка), которые создают ветвление алгоритма программы.

JVM транслятор или интерпретатор?

JVM транслирует или интерпретирует байт-код в машинный код, который откомпилировал компилятор javac?

JVM содержит внутри себя и интерпретатор, и транслятор (just-in-time translator, JIT). Сначала программа исполняется интерпретатором, и для каждого метод накапливается статистика, сколько раз он вызывался. Как только обнаружатся часто исполняемые методы, они транслируются в машинный код, а редко исполняемые продолжают интерпретироваться. Этот процесс идет постоянно, самые часто исполняемые методы подвергаются перекомпиляции с многоуровневой оптимизацией, чтобы сделать код максимально эффективным.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *