что такое jvm jdk jre

Различия между JDK, JRE и JVM

JAVA DEVELOPMENT KIT

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

JAVA RUNTIME ENVIRONMENT

Разница между JDK, JRE и JVM

Чтобы понять разницу между этими тремя, давайте рассмотрим следующую диаграмму.
что такое jvm jdk jre. Смотреть фото что такое jvm jdk jre. Смотреть картинку что такое jvm jdk jre. Картинка про что такое jvm jdk jre. Фото что такое jvm jdk jre

Примечание: JDK используется только разработчиками Java.

Как работает JRE и JDK?

Из чего состоит JRE?
JRE состоит из следующих компонентов:

Загрузчик классов загружает все необходимые классы, необходимые для выполнения программы. Он обеспечивает безопасность, отделяя пространства имен локальной файловой системы от импортированной через сеть. Эти файлы загружаются либо с жесткого диска, сети или из других источников.

JVM пропускает код с помощью Byte Code Verifier, который проверяет формат и проверяет наличие недопустимого кода. Например, незаконный код — это код, который нарушает права доступа к объектам или нарушает реализацию указателей.

Верификатор байт-кода гарантирует, что код соответствует спецификации JVM и не нарушает целостность системы.
что такое jvm jdk jre. Смотреть фото что такое jvm jdk jre. Смотреть картинку что такое jvm jdk jre. Картинка про что такое jvm jdk jre. Фото что такое jvm jdk jre

Во время выполнения Байт-код загружается, проверяется и запускается интерпретатором. Переводчик имеет следующие две функции:

Обе операции могут быть показаны как:
что такое jvm jdk jre. Смотреть фото что такое jvm jdk jre. Смотреть картинку что такое jvm jdk jre. Картинка про что такое jvm jdk jre. Фото что такое jvm jdk jre
Чтобы понять взаимодействие между JDK и JRE, рассмотрите следующую диаграмму.
что такое jvm jdk jre. Смотреть фото что такое jvm jdk jre. Смотреть картинку что такое jvm jdk jre. Картинка про что такое jvm jdk jre. Фото что такое jvm jdk jre

Как работает JVM?

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

Источник

Вопросы по Java на собеседовании (5)

1. JRE, JVM и JDK
2. Загрузчики классов, динамическая загрузка классов
3. Области памяти Heap и Stack
4. Сборщик мусора Garbage Collector
5. Рефлексия кода, reflection
6. Определение свойств класса в run-time
7. Определение интерфейсов и конструкторов класса в режиме run-time
8. Определение полей класса в режиме run-time
9. Определение методов класса в режиме run-time
10. Вызов метода класса в режиме run-time

1. JRE, JVM и JDK

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

2. Загрузчики классов, динамическая загрузка классов

Если в программе создаются пользовательские загрузчики, то они должны быть унаследованы от класса java.lang.ClassLoader.

Статическая и динамическая загрузка класса

Статическая загрузка класса происходит при использовании оператора «new». Динамическая загрузка происходит в режиме «run-time» с помощью статического метода класса Class.forName(className).

Подробное описание загрузчиков класса представлено здесь.

3. Области памяти Heap и Stack

4. Сборщик мусора Garbage Collector

Сборщик мусора имеет несколько алгоритмов очистки памяти. В первую очередь, он может быть вызван, когда объем свободной памяти в области Eden Space становится критичным. В этом случае, Garbage Collector просто переносит объекты, имеющие ссылки, из области Eden Space в область Survivor Space, а объекты без ссылок удаляет. Эта, так называемая minor’ная очистка, выполняется быстро.

Если при очистке мусора памяти в области Survivor Space недостаточно, то долгоживущие объекты переносятся в область Tenured Generation, где они могут хранится до конца работы приложения. Вся остальная куча очищается от мусора.

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

Более подробное описание распределения памяти в виртуальной машине JVM и о Garbage Collector’e представлено здесь.

5. Рефлексия кода, reflection

Интерфейс Java Reflection API состоит из классов пакетов java.lang и java.lang.reflect.

6. Определение свойств класса в режиме run-time

В работающем приложении для получения класса используется метод forName (String className) :

Наименование класса, включающего пакет (package), извлекается методом getName() объекта Class :

Для получения значения модификатора класса используется метод getModifiers(). Класс java.lang.reflect.Modifier содержит статические методы, возвращающие логическое значения проверки модификатора класса :

Для получения суперкласса рефлексированного объекта (класса) необходимо использовать метод getSuperclass () :

Поскольку в Java отсутствет множественное наследование, то для получения всех предков следует рекурсивно вызвать метод getSuperclass () в цикле, пока не будет достигнут Object, являющийся родителем всех классов. Object не имеет родителей, поэтому вызов его метода getSuperclass () вернет null.

7. Определение интерфейсов и конструкторов класса в режиме run-time

Для получения в режиме run-time списка интерфейсов, реализующих классом, необходимо получить Class и использовать его метод getInterfaces(). Следующий пример демонстрирует получение списка интерфейсов класса ArrayList :

Чтобы IDE (Eclipse) не предупреждала о необходимости определения типа класса

Class is a raw type. References to generic type Class should be parameterized

в коде используются generic’и. В консоль будут выведены следующие интерфейсы, реализуемые классом ArrayList :

Метод класса getConstructors () позволяет получить массив открытых конструкторов типа java.lang.reflect.Constructor. После этого, можно извлекать информацию о типах параметров конструктора и генерируемых исключениях. Пример :

8. Определение полей класса в режиме run-time

Метод getFields() объекта Class возвращает массив открытых полей типа java.lang.reflect.Field. Эти поля могут быть определены не только в классе, но также и в его родителях (суперклассе), либо интерфейсах, реализованных классом или его родителями. Класс Field позволяет получить имя поля, тип и модификаторы.

Если известно наименование поля, то можно получить о нем информацию с помощью метода getField() объекта Class.

Методы getField() и getFields() возвращают только открытые члены данных класса. Чтобы получить все поля класса необходимо использовать методы getDeclaredField() и getDeclaredFields(). Данные методы работают точно также, как и их аналоги getField() и getFields(), за исключением того, что они возвращают все поля, включая закрытые и защищенные.

Определение значение полей класса

Класс Field содержит специализированные методы для получения значений примитивных типов: getInt(), getFloat(), getByte() и др. Для установки значения поля, используется метод set(). Для примитивных типов имеются методы setInt(), setFloat(), setByte() и др.

9. Определение методов класса в режиме run-time

Метод getMethods() объекта Class возвращает массив открытых методов типа java.lang.reflect.Method. Эти методы могут быть определены не только в классе, но также и в его родителях (суперклассе), либо интерфейсах, реализованных классом или его родителями. Класс Method позволяет получить имя метода, тип возвращаемого им значения, типы параметров метода, модификаторы и генерируемые исключения.

Если известно имя метода и типы его параметров, то можно получить отдельный метод класса :

10. Вызов метода класса в режиме run-time

Допустим, что имеется класс Reflect, включающий два закрытых поля id и name и несколько методов для определения значений этих полей. Нас будут интересовать только метод setData для определения значений и метод toString для печати значений.

Сначала получаем метод класса. Для этого формируем массив типов параметров метода и вызываем getMethod с наименованием метода класса и списком его параметров params. После этого формируем массив новых значение полей класса args и вызываем метод invoke объекта Method с указанием объекта класса и аргументами. В заключение получаем ссылку на метод toString и распечатываем значения.

Источник

В чем разница между JVM, JDK, JRE & OpenJDK?

в чем разница между JVM, JDK, JRE & OpenJDK?

я программировал на Java, и я столкнулся с этими фразами, в чем разница между ними?

18 ответов

JDK и JRE

чтобы объяснить разницу между JDK и JRE, лучше всего прочитать документация Oracle и обратитесь к диаграмме:

среда выполнения Java (JRE)

среда выполнения Java (JRE) предоставляет библиотеки, виртуальную машину Java и другие компоненты для запуска апплетов и приложений, написанных на языке программирования Java. Кроме того, две ключевые технологии развертывания являются частью JRE: Java Plug-in, который позволяет апплетам работать в популярных браузерах; и Java Web Start, который развертывает автономные приложения по сети. Это также основа для технологий в платформе Java 2, Enterprise Edition (J2EE) для разработки и развертывания корпоративного программного обеспечения. JRE не содержит таких инструментов и утилит, как компиляторы и отладчики для разработки апплетов и приложений.

Java Development Kit (JDK)

JDK является надмножеством JRE и содержит все, что находится в JRE, а также такие инструменты, как компиляторы и отладчики, необходимые для разработки апплетов и приложений.

обратите внимание, что Oracle не единственный, кто предоставляет JDKs.

OpenJDK

в OpenJDK является реализацией Java SE 7 JSR с открытым исходным кодом (JSR 336). Теперь почти нет разницы между Oracle JDK и OpenJDK. В прошлом году Oracle приняла это решение : переход к OpenJDK в качестве официальной реализации ссылки Java SE 7

различия изложены в этом блог :

Q: в чем разница между исходным кодом, найденным в Репозиторий OpenJDK и код, который вы используете для создания Oracle JDK?

в зависимости от используемой версии VM может отличаться:соответствие между Sun / Oracle JDK, OpenJDK и HotSpot VM версии

OpenJDK-это конкретная реализация JDK.

пакета JDK (комплект разработки Java)

Java Developer Kit содержит инструменты, необходимые для разработки программ Java, и JRE для запуска программ. Инструменты включают компилятор (javac.exe), Java application launcher (java.exe), Appletviewer, etc.

компилятор преобразует код Java в байт-код. Java application launcher открывает JRE, загружает класс и вызывает его основной метод.

вам нужен JDK, если вы вообще хотите писать свои собственные программы и компилировать их. Для запуска java-программ достаточно JRE.

JRE предназначен для выполнения Java-файлов

то есть JRE = jvm + java Packages Classes (например, util, math, lang,awt, swing и т. д.)+библиотеки времени выполнения.

JDK в основном предназначен для разработки java. Т. е. Вы можете создать файл Java (с помощью пакетов Java), скомпилировать файл Java и запустить файл java.

JRE (среда выполнения Java Среды)

среда выполнения Java содержит JVM, библиотеки классов и другие вспомогательные файлы. Он не содержит никаких средств разработки, таких как компилятор, отладчик и т. д. На самом деле JVM запускает программу, и она использует библиотеки классов и другие вспомогательные файлы, предоставленные в JRE. Если вы хотите запустить любую программу java, вам нужно установить JRE в системе

виртуальная машина Java предоставляет независимый от платформы способ выполнения кода; Это значит скомпилируйте один раз на любой машине и запустите ее где угодно(на любой машине).

JVM (виртуальная машина Java)

Как мы все знаем, когда мы компилируем файл Java, вывод не является «exe», но это».файл класса. ‘.файл class ‘ состоит из Java byte codes, которые понятны JVM. Виртуальная машина Java интерпретирует байт-код в машинный код в зависимости от базовой операционной системы и оборудования. Он отвечает за все такие вещи, как сбор мусора, проверка границ массива и т. д. JVM зависит от платформы.

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

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

Среда Выполнения Java, также упоминается как Java Среда Выполнения, Среда Выполнения

просто:

JDK (Java Development Kit):

JRE (Среда Выполнения Java)

среда выполнения Java содержит JVM, библиотеки классов и другие файлы поддержки. JRE предназначен для выполнения файлов Java.

JVM (Виртуальная Машина Java)

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

JVM является ли код Java виртуальной машины выполняется на

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

JDK является JRE с инструментами разработчика и документацией

OpenJDK является версией JDK с открытым исходным кодом, в отличие от обычного JDK, принадлежащего Oracle

еще один аспект, о котором стоит упомянуть:

пакета JDK (комплект разработки Java)

Он понадобится вам для целей разработки, таких как имя suggest.

например: компания программного обеспечения будет иметь установку JDK на своем компьютере, потому что им нужно будет разработать новое программное обеспечение, которое включает в себя компиляцию и запуск своих программ Java.

поэтому мы можем сказать, что JDK = JRE + JVM.

JRE (время выполнения java среды)

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

JVM (виртуальная машина java)

открыть JDK

однако все они могут показаться одинаковыми для общего пользователя.

вывод

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

другими словами, JDK-это дедушка, JRE-отец, а JVM-их сын.

что такое jvm jdk jre. Смотреть фото что такое jvm jdk jre. Смотреть картинку что такое jvm jdk jre. Картинка про что такое jvm jdk jre. Фото что такое jvm jdk jre

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

платформа Java 2, Standard Edition, также известная как J2SE, относится к платформе и включает классы в java.Lang и Java.Ио пакетов, среди других. Это был строительный блок Java-приложений, построенных на.

виртуальная машина Java, или JVM, является виртуальной машиной программного обеспечения, которая выполняет скомпилированный код Java. Потому что скомпилированная Java код-это просто байт-код, JVM отвечает за компиляцию этого байт-кода в машинный код перед его запуском. (Это часто называют компилятором Just In Time или компилятором JIT.), То JVM также заботится об управлении памятью, так что код приложения не должен.

Java Development Kit, или JDK, был и остается частью программного обеспечения, которое разработчики Java используют для создания приложений Java. Содержит компилятор языка Java, генератор документации, инструменты для работы с родным языком код и (как правило) исходный код Java для платформы для включения отладки классов платформы.

среда выполнения Java, или JRE, была и остается частью программного обеспечения, загружаемого конечными пользователями для запуска скомпилированных приложений Java. Он включает JVM, но не содержит никаких инструментов разработки, включенных в JDK. Однако JDK содержит JRE.

JVM: спецификация, которая описывает способ / ресурсы для запуска программы java. Фактически выполняет байтовый код и делает платформу java независимой. При этом он отличается для разных платформ. JVM для windows не может работать как JVM для UNIX.

JRE: реализация JVM. (JVM + библиотеки времени выполнения)

JDK: JRE + Java компилятор и другие необходимые инструменты для создания java программа с нуля

JDK: это инструментарий, содержащий необходимые библиотеки и утилиты для разработки и выполнения java-программы/приложения

JRE: является средой выполнения для приложения java.ie, он поддерживает только время выполнения зависимости, включая jvm для скомпилированной программы. Если мы хотим скомпилировать java-программу, нам нужен jdk.

JVM: виртуальная машина java. говорит машине, что делать с кодом Java. Вы не можете загрузить JVM как есть. Он поставляется упакованным в какой-то другой компонент.

JRE: какой-то другой компонент, упомянутый выше, является JRE. Это для JVM+ баночки для создания среды выполнения environmeny

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

JRE-это аббревиатура для среды выполнения Java.Он используется для обеспечения среды выполнения.Это реализация СПМ.Она физически существует.Он содержит набор библиотек + другие файлы что JVM использует во время выполнения.

JDK является аббревиатурой для Java Development Kit.Она физически существует.Он содержит инструменты разработки JRE+.

JRE выполняет приложение, но JVM читает инструкции строка за строкой, поэтому это интерпретатор.

JDK=JRE + инструменты разработки

JRE=JVM + классы библиотеки

JVM виртуальная машина Java исполняет байт-код Java. Это блок выполнения на платформе JAVA. Он преобразует байт-код в машинный код.

JRE среда выполнения Java предоставляет минимальные требования для выполнения приложения Java; она состоит из виртуальной машины Java (JVM), основных классов и поддерживающих файлов.

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

JDK: полный пакет, который вам нужно написать и запустить java code

OpenJDK: независимая реализация JDK для того, чтобы сделать его намного лучше

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

JRE: реализация JVM, с которой некоторые библиотеки Java используются для запуска программы

Источник

68) JDK против JRE против JVM

Что такое JDK?

JDK — это среда разработки программного обеспечения, используемая для создания апплетов и приложений Java. Полная форма JDK — Java Development Kit. Разработчики Java могут использовать его в Windows, macOS, Solaris и Linux. JDK помогает им кодировать и запускать программы на Java. На одном компьютере можно установить более одной версии JDK.

В этом уроке вы узнаете:

Что такое JRE?

JRE — это часть программного обеспечения, предназначенная для запуска другого программного обеспечения. Он содержит библиотеки классов, класс загрузчика и JVM. Проще говоря, если вы хотите запустить Java-программу, вам нужна JRE. Если вы не программист, вам не нужно устанавливать JDK, а просто JRE для запуска программ на Java. Тем не менее, все версии JDK поставляются в комплекте с Java Runtime Environment, поэтому вам не нужно загружать и устанавливать JRE отдельно на вашем ПК. Полная форма JRE — Java Runtime Environment.

Что такое JVM?

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

Во многих других языках программирования компилятор создает машинный код для конкретной системы. Однако компилятор Java создает код для виртуальной машины, которая называется JVM.

Зачем использовать JDK?

Вот важные причины использования JDK:

Зачем использовать JRE?

Вот важные причины использования JRE:

Why JVM?

Here are the important reasons of using JVM:

Features of JDK

Here are the important features of JDK:

Features of JRE

Here are the important features of JRE:

Features of JVM

Here are the important features of JVM:

How JDK Functions?

Here are the important components of JDK:

Как функционирует JRE?

что такое jvm jdk jre. Смотреть фото что такое jvm jdk jre. Смотреть картинку что такое jvm jdk jre. Картинка про что такое jvm jdk jre. Фото что такое jvm jdk jre JRE Функциональность

JRE имеет экземпляр JVM с ним, библиотечные классы и инструменты разработки. Как только вы пишете и компилируете код Java, компилятор генерирует файл класса с байтовым кодом.

Вот важные компоненты JRE:

Таким образом, Java-программа работает в JRE.

Как функционирует JVM?

что такое jvm jdk jre. Смотреть фото что такое jvm jdk jre. Смотреть картинку что такое jvm jdk jre. Картинка про что такое jvm jdk jre. Фото что такое jvm jdk jre Функциональность JVM

Вот важные компоненты JVM:

1) Класс Loader

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

2) Область метода

Область методов JVM хранит структуру класса, такую ​​как метаданные, код для методов Java и постоянный пул времени выполнения.

3) куча

Все объекты, массивы и переменные экземпляра хранятся в куче. Эта память распределяется между несколькими потоками.

4) Языковые стеки JVM

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

5) ПК Регистры

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

6) Стеки родного метода

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

7) Исполнение двигателя

Это тип программного обеспечения, который используется для тестирования программного обеспечения, оборудования или комплектных систем. Механизм выполнения теста никогда не несет никакой информации о тестируемом продукте.

8) интерфейс родного метода

Интерфейс Native Method представляет собой среду программирования. Он позволяет коду Java, который выполняется в JVM, вызываться библиотеками и собственными приложениями.

9) Библиотеки нативных методов

Собственные библиотеки — это коллекция Собственных библиотек (C, C ++), которые необходимы для механизма исполнения.

Разница между JDK, JRE и JVM

Вот основные различия между JDK против JRE и JVM:

Источник

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

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