В чем разница между JDK и JRE?
Каковы их роли и когда я должен использовать одну или другую?
В чем разница между JDK и JRE?
Каковы их роли и когда я должен использовать одну или другую?
Ответы:
JRE является Java Runtime Environment . Это пакет всего необходимого для запуска скомпилированной Java-программы, включая виртуальную машину Java (JVM), библиотеку классов Java, java
команду и другую инфраструктуру. Однако его нельзя использовать для создания новых программ.
JDK является набор Java Development , полнофункциональный SDK для Java. В нем есть все, что есть в JRE, а также компилятор ( javac
) и инструменты (например, javadoc
и jdb
). Он способен создавать и компилировать программы.
Обычно, если вы заботитесь только о запуске программ Java на компьютере, вы устанавливаете только JRE. Это все, что вам нужно. С другой стороны, если вы планируете заняться программированием на Java, вам нужно вместо этого установить JDK.
Иногда, даже если вы не планируете заниматься разработкой Java на компьютере, вам все равно нужен JDK. Например, если вы развертываете веб-приложение с JSP, технически вы просто запускаете программы Java на сервере приложений. Зачем вам тогда JDK? Потому что сервер приложений преобразует JSP в сервлеты Java и должен использовать JDK для компиляции сервлетов. Я уверен, что есть еще примеры.
Ответ выше (Пабло) очень правильный. Это просто дополнительная информация.
JRE , как следует из названия, в среду . Это в основном набор каталогов с файлами, относящимися к Java:
bin/
содержит исполняемые программы Java. Наиболее важным является java
(и для Windows, javaw
в том числе), который запускает JVM. Здесь также есть некоторые другие утилиты, такие как keytool
и policytool
.conf/
содержит редактируемые пользователем файлы конфигурации для экспертов по Java.lib/
имеет большое количество вспомогательных файлов: некоторые .jar
файлы конфигурации, файлы конфигурации, файлы свойств, шрифты, переводы, сертификаты и т. д. - все это «обрезки» Java. Наиболее важным является modules
файл, содержащий .class
файлы стандартной библиотеки Java..dll
(Windows) или .dylib
(macOS) или .so
(Linux) в соответствии с поддерживаемым системным двоичным кодом bin/
или lib/
вместе с ним.JDK также набор каталогов. Это расширенная версия JRE с некоторыми дополнениями:
bin/
был расширен с инструментами разработки. Наиболее важным из них является javac
; другие включают в себя jar
, javadoc
и jshell
.jmods/
, который содержит файлы JMOD для стандартной библиотеки, был добавлен. Эти файлы позволяют использовать стандартную библиотеку jlink
.JDK является расширенным набором JRE и содержит все, что есть в JRE, а также такие инструменты, как компиляторы и отладчики, необходимые для разработки апплетов и приложений. JRE предоставляет библиотеки, виртуальную машину Java (JVM) и другие компоненты для запуска апплетов и приложений, написанных на языке программирования Java.
С точки зрения непрофессионала: JDK - дедушка, JRE - отец, а JVM - их сын. [т.е. JDK> JRE> JVM]
JDK = JRE + Инструменты разработки / отладки
JRE = JVM + классы пакетов Java (например, util, math, lang, awt, swing и т. Д.) + Библиотеки времени выполнения.
JVM = система загрузчика классов + область данных времени выполнения + механизм выполнения.
Другими словами, если вы Java-программист, вам понадобится JDK в вашей системе, и этот пакет будет также включать JRE и JVM, но если вы обычный пользователь, который любит играть в онлайн-игры, то вам понадобится только JRE, и этот пакет не будет иметь JDK в этом.
JVM:
Java Virtual Machine (JVM) представляет собой виртуальную машину , которая запускать байткод Java. JVM не понимает исходный код Java, поэтому вы компилируете свои файлы * .java для получения файлов * .class, которые содержат байт-коды, понятные для JVM. Это также сущность, которая позволяет Java быть «переносимым языком» (писать один раз, запускать где угодно). Действительно, существуют конкретные реализации JVM для разных систем (Windows, Linux, MacOS, см. Список википедии ...), цель состоит в том, чтобы с одинаковыми байт-кодами все они давали одинаковые результаты.
JDK и JRE
Чтобы объяснить разницу между JDK и JRE, лучше всего прочитать документацию Oracle и обратиться к диаграмме:
Java Runtime Environment (JRE)
Java Runtime Environment (JRE) обеспечивает библиотеки, виртуальную машину Java и другие компоненты для запуска апплетов и приложений , написанных на языке программирования Java. Кроме того, в JRE входят две ключевые технологии развертывания: Java-плагин, который позволяет апплетам работать в популярных браузерах; и Java Web Start, который развертывает автономные приложения по сети. Это также основа для технологий в Java 2 Platform, Enterprise Edition (J2EE) для разработки и развертывания программного обеспечения для предприятий. JRE не содержит инструментов и утилит, таких как компиляторы или отладчики для разработки апплетов и приложений.
Java Development Kit (JDK)
JDK является расширенным набором JRE и содержит все, что есть в JRE, а также такие инструменты, как компиляторы и отладчики, необходимые для разработки апплетов и приложений.
Обратите внимание, что Oracle не единственный, кто предоставляет JDK.
С официального сайта Java ...
JRE (среда выполнения Java):
JDK (Java Development Kit)
Одно отличие с точки зрения отладки:
Для отладки в системных классах Java, таких как String и ArrayList, вам нужна специальная версия JRE, которая компилируется с «информацией отладки». JRE, включенная в JDK, предоставляет эту информацию, а обычная JRE - нет. Обычная JRE не включает эту информацию, чтобы обеспечить лучшую производительность.
Что такое отладочная информация? Вот краткое объяснение, взятое из этого поста в блоге :
Современные компиляторы делают довольно хорошую работу по преобразованию вашего высокоуровневого кода с его хорошо врезанными и вложенными управляющими структурами и произвольно типизированными переменными в большую кучу битов, называемых машинным кодом (или байт-кодом в случае Java), единственной целью которого является работать как можно быстрее на целевом процессоре (виртуальном процессоре вашей JVM). Java-код преобразуется в несколько инструкций машинного кода. Переменные помещаются повсюду - в стек, в регистры или полностью оптимизируются. Структуры и объекты даже не существуют в результирующем коде - они просто абстракция, которая преобразуется в жестко закодированные смещения в буферы памяти.
Так как же отладчик узнает, где остановиться, когда вы просите его прерваться при входе в какую-либо функцию? Как ему удается найти, что показывать, когда вы спрашиваете его о значении переменной? Ответ - отладочная информация.
Отладочная информация генерируется компилятором вместе с машинным кодом. Это представление о связи между исполняемой программой и исходным кодом. Эта информация кодируется в заранее определенный формат и сохраняется вместе с машинным кодом. Многие такие форматы были изобретены за многие годы для разных платформ и исполняемых файлов.
JVM, JRE, JDK - все это основа языка Java. Каждый компонент работает отдельно. JDK и JRE физически существуют, но JVM - это абстрактная машина, то есть физически не существует.
JVM - это подсистема JDK и JRE, которая используется для проверки промежуточного кода, известного как «байт-код». Сначала он загружает «файл класса» (с расширением .c), сгенерированный компилятором Java (javac) через загрузчик классов подсистемы JVM и классифицированную ячейку памяти (регистры области классов, стека, кучи и компьютера) в соответствии с их использованием. Затем он проверяет весь байт-код, чтобы убедиться, что он возвращается в Java, и доступ к памяти для всей сети. После этого начинается работа переводчика, где строка за строкой проверяется вся программа. Наконец, результаты отображаются в консоли / браузере / приложении через JRE (Java Runtime Environment), которая предоставляет средства выполнения.
JRE также является подсистемой JDK, которая предоставляет средства выполнения, такие как JVM, классы, исполняемые файлы, такие как .jar, и т. Д.
JDK расшифровывается как Java Development Kit. Он содержит все необходимые компоненты, используемые в Java-программировании, такие как класс, метод, свинг, AWT, пакет, Java (интерпретатор), javac (компилятор), appletviewer (просмотрщик приложений апплета) и т. Д. В заключение, он содержит каждый файл, необходимый для разработки приложения, будь то автономные или веб-приложения.
JRE
JRE - это аббревиатура от Java Runtime Environment. Он используется для предоставления среды выполнения. Это реализация JVM. Он существует физически. Он содержит набор библиотек + другие файлы, которые JVM использует во время выполнения.
JDK
JDK является аббревиатурой для Java Development Kit. Он существует физически. Он содержит инструменты разработки JRE +.
Ссылка: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
Обычно, когда вы заботитесь только о запуске программ Java на вашем браузере или компьютере, вы устанавливаете только JRE. Это все, что вам нужно. С другой стороны, если вы планируете программировать на Java, вам также понадобится JDK.
JVM, JRE и JDK зависят от платформы, потому что конфигурация каждой ОС отличается. Но Java не зависит от платформы.
Виртуальная машина Java (JVM) - это система времени выполнения, которая выполняет байт-код Java.
JRE - это среда (стандартные библиотеки и JVM), необходимая для запуска приложений Java.
JDK включает в себя инструменты разработки командной строки JRE plus, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.
Вот простой ответ прямо из Oracle http://docs.oracle.com/javase/7/docs/technotes/guides/
Java SE Runtime Environment (JRE)
JRE предоставляет библиотеки, виртуальную машину Java и другие компоненты, необходимые для запуска апплетов и приложений, написанных на языке программирования Java. Эта среда выполнения может быть перераспределена с приложениями, чтобы сделать их автономными.
Java SE Development Kit (JDK)
JDK включает в себя инструменты разработки командной строки JRE plus, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.
Если вы хотите запускать программы Java, но не разрабатывать их, загрузите среду выполнения Java или JRE. Если вы хотите их разработать, загрузите Java Development Kit или JDK
Давайте назовем JDK набором, который включает в себя то, что нужно для разработки и запуска Java-приложений.
JDK предоставляется как среда разработки для создания приложений, компонентов и апплетов.
Он содержит все необходимое для запуска приложений Java в скомпилированном виде. Вам не нужно никаких библиотек и прочего. Все, что вам нужно, скомпилировано.
JRE не может использоваться для разработки, используется только для запуска приложений.
JVM (виртуальная машина Java) - это абстрактная машина. Это спецификация, которая обеспечивает среду выполнения, в которой может быть выполнен байт-код Java.
JRE является аббревиатурой для Java Runtime Environment. Он используется для предоставления среды выполнения. Это реализация JVM. Он существует физически. Он содержит набор библиотек + другие файлы, которые JVM использует во время выполнения.
JDK - это аббревиатура для Java Development Kit. Он существует физически. Он содержит инструменты разработки JRE +.
Если вы Java-программист, вам понадобится JDK в вашей системе, и этот пакет будет также включать JRE и JVM, но если вы обычный пользователь, который любит играть в онлайн-игры, то вам понадобится только JRE, и в этом пакете не будет JDK. ,
JVM
JVM (виртуальная машина Java) - это абстрактная машина. Это спецификация, которая обеспечивает среду выполнения, в которой может быть выполнен байт-код Java.
JVM доступны для многих аппаратных и программных платформ. JVM, JRE и JDK зависят от платформы, потому что конфигурация каждой ОС отличается. Но Java не зависит от платформы.
JRE
Он содержит все необходимое для запуска приложений Java в скомпилированном виде. Вам не нужно никаких библиотек и прочего. Все, что вам нужно, скомпилировано.
JRE не может использоваться для разработки, используется только для запуска приложений.
Java SE Development Kit (JDK)
JDK включает в себя инструменты разработки командной строки JRE plus, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.
(Источники: GeeksForGeeks Q & A , Обзор платформы Java )
Четкое понимание этих терминов (JVM, JDK, JRE) необходимо для понимания их использования и различий.
JVM Java Virtual Machine (JVM) - это система времени выполнения, которая выполняет байт-код Java. JVM похожа на виртуальный компьютер, который может выполнять набор скомпилированных инструкций и манипулировать областями памяти. Когда компилятор Java компилирует исходный код, он генерирует высокооптимизированный набор инструкций, называемый байт-кодом, в файле .class. JVM интерпретирует эти инструкции байт-кода и преобразует их в машинный код для выполнения.
JDK Java Development Kit (JDK) - это среда разработки программного обеспечения, которую вы можете использовать для разработки и выполнения приложений Java. Он включает в себя JRE и набор инструментов программирования, таких как Java-компилятор, интерпретатор, appletviewer и просмотрщик документов. JDK реализуется через платформы Java SE, Java EE или Java ME.
JRE Java Runtime Environment (JRE) является частью JDK, которая включает в себя JVM, базовые классы и несколько библиотек, поддерживающих разработку приложений. Хотя JRE доступна как часть JDK, вы также можете скачать и использовать ее отдельно.
Для полного понимания вы можете увидеть мой блог: JDK JRE JVM и различия
JDK необходим для компиляции кода и преобразования Java-кода в байтовые коды, в то время как JRE необходим для выполнения байтовых кодов.
JDK включает в себя инструменты разработки командной строки JRE plus, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.
JRE - это в основном виртуальная машина Java, на которой работают ваши Java-программы. Он также включает в себя плагины браузера для запуска апплета.
JDK - это абстрактная машина. Это спецификация, которая обеспечивает среду выполнения, в которой может быть выполнен байт-код Java.
Итак, в основном JVM <JRE <JDK, как сказал @Jaimin Patel.
Разница между JDK и JRE заключается в том, что JDK - это комплект разработки программного обеспечения для Java, а JRE - это место, где вы запускаете свои программы.
Предположим, если вы разработчик, то ваша роль заключается в разработке программы, а также в ее выполнении. поэтому у вас должна быть среда для разработки и исполнения, предоставляемая JDK.
Предположим, что если вы клиент, то вам не нужно беспокоиться о разработке. Просто вам нужна среда для запуска программы и получения только результата, которая предоставляется JRE.
JRE выполняет приложение, но JVM читает инструкции построчно, так что это интерпретатор.
JDK = JRE + Инструменты разработки
JRE = JVM + Библиотечные классы
JRE
JRE является аббревиатурой для Java Runtime Environment. Он используется для предоставления среды выполнения. Это реализация JVM. Это физически существует. Он содержит набор библиотек + другие файлы, которые JVM использует во время выполнения.
Внедрение JVM также активно выпускается другими компаниями, помимо Sun Micro Systems.
JDK
JDK является аббревиатурой для Java Development Kit. Он существует физически. Он содержит инструменты разработки JRE +.