В чем разница между JDK и JRE?
В чем разница между JDK и JRE?
Каковы их роли и когда я должен использовать одну или другую?
Ответы
Ответ 1
JRE - это среда выполнения Java. Это пакет всего необходимого для запуска скомпилированной Java-программы, включая виртуальную машину Java (JVM), библиотеку классов Java, команду java
и другую инфраструктуру. Однако его нельзя использовать для создания новых программ.
JDK - это Java Development Kit, полнофункциональный SDK для Java. В нем есть все, что есть в JRE, а также компилятор (javac
) и инструменты (такие как javadoc
и jdb
). Он способен создавать и компилировать программы.
Обычно, если вы заботитесь только о запуске программ Java на компьютере, вы устанавливаете только JRE. Это все, что вам нужно. С другой стороны, если вы планируете заняться программированием на Java, вам нужно вместо этого установить JDK.
Иногда, даже если вы не планируете заниматься разработкой Java на компьютере, вам все равно нужно установить JDK. Например, если вы развертываете веб-приложение с JSP, технически вы просто запускаете Java-программы на сервере приложений. Зачем вам тогда JDK? Потому что сервер приложений преобразует JSP в сервлеты Java и должен использовать JDK для компиляции сервлетов. Я уверен, что будет больше примеров.
Ответ 2
Ответ выше (Пабло) очень правильный. Это просто дополнительная информация.
JRE, как следует из названия, является окружающей средой. Это в основном набор каталогов с Java файлами, например:
-
bin/
содержит исполняемые программы Java. Наиболее важным является java
(и для Windows, а также javaw
), который запускает JVM. Есть некоторые другие утилиты здесь, а также, например, keytool
и policytool
. -
conf/
содержит редактируемые пользователем файлы конфигурации для экспертов по Java. -
lib/
имеет большое количество вспомогательных файлов: некоторые файлы .jar
, файлы конфигурации, файлы свойств, шрифты, переводы, сертификаты и т.д. - все это "обрезки" Java. Наиболее важными являются modules
, файл, который содержит .class
стандартной библиотеки Java. - На определенном уровне стандартная библиотека Java должна вызывать нативный код. Для этой цели JRE содержит некоторые
.dll
(Windows) или .dylib
(macOS) или .so
(Linux) в bin/
или lib/
с поддерживаемым системным двоичным кодом.
JDK также представляет собой набор каталогов. Это расширенная версия JRE с некоторыми дополнениями:
-
bin/
был дополнен инструментами разработки. Наиболее важным из них является javac
; другие включают jar
, javadoc
и jshell
. -
jmods/
, который содержит файлы JMOD для стандартной библиотеки. Эти файлы позволяют использовать стандартную библиотеку с jlink
.
Ответ 3
JDK является надмножеством JRE и содержит все, что есть в JRE, а также такие инструменты, как компиляторы и отладчики, необходимые для разработки апплетов и приложений. JRE предоставляет библиотеки, виртуальную машину Java (JVM) и другие компоненты для запуска апплетов и приложений, написанных на языке программирования Java.
Ответ 4
С точки зрения непрофессионала: JDK - дедушка, JRE - отец, а JVM - их сын.
[т.е. JDK> JRE> JVM]
JDK = JRE + Development/debugging tools
JRE = JVM + Java Packages Classes(like util, math, lang, awt,swing etc)+runtime libraries.
JVM = Class loader system + runtime data area + Execution Engine.
Другими словами, если вы Java-программист, вам понадобится JDK в вашей системе, и этот пакет будет также включать JRE и JVM, но если вы обычный пользователь, который любит играть в онлайн-игры, то вам понадобится только JRE, и этот пакет не будет иметь JDK в этом.
JVM:
Виртуальная машина Java (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.
JIT Compile Process (Предоставлено: документация Oracle)
Ответ 5
От официального веб-сайта java...
JRE (среда выполнения Java):
- Это реализация виртуальной машины Java *, которая фактически выполняет Java-программы.
- Java Runtime Environment - это плагин, необходимый для запуска Java-программ.
- JRE меньше JDK, поэтому ему требуется меньше места на диске.
- JRE можно свободно скачивать/поддерживать
https://www.java.com
- Он включает библиотеки JVM, Core и другие дополнительные компоненты для запуска приложений и апплетов, написанных на Java.
JDK (Java Development Kit)
- Это пакет программного обеспечения, который вы можете использовать для разработки приложений на основе Java.
- Java Development Kit необходим для разработки Java-приложений.
- JDK требуется больше дискового пространства, так как оно содержит JRE вместе с различными инструментами разработки.
- JDK можно свободно скачивать/поддерживать
https://www.oracle.com/technetwork/java/javase/downloads/
- Он включает JRE, набор классов API, компилятор Java, Webstart и дополнительные файлы, необходимые для написания апплетов и приложений Java.
Ответ 6
Одно отличие от перспективы отладки:
Для отладки в системных классах Java, таких как String и ArrayList, вам нужна специальная версия JRE, которая скомпилирована с "отладочной информацией". JRE, включенный в JDK, предоставляет эту информацию, но обычный JRE этого не делает. Регулярная JRE не включает эту информацию, чтобы обеспечить лучшую производительность.
Что такое отладочная информация? Вот краткое объяснение, взятое из этого сообщения в блоге:
Современные компиляторы делают довольно хорошую работу, преобразуя ваш высокоуровневый код, с его красивыми отложенными и вложенными структурами управления и произвольно типизированными переменными в большую кучу бит, называемых машинным кодом (или байт-кодом в случае Java), единственной целью из которых следует запускать как можно быстрее на целевом CPU (виртуальный процессор вашего JVM). Код Java преобразуется в несколько инструкций машинного кода. Переменные перемещаются по всему месту - в стек, в регистры или полностью оптимизированы. Структуры и объекты даже не существуют в полученном коде - они просто абстракция который переводится в жестко закодированные смещения в буферы памяти.
Итак, как отладчик знает, где остановиться, когда вы просите его разбить на запись на какую-то функцию? Как вам удается найти, что вам показать, когда вы задаете ему значение переменной? Ответ - отладка информации.
Отладочная информация генерируется компилятором вместе с машинным кодом. Это представление отношения между исполняемой программой и исходным исходным кодом. Эта информация кодируется в заранее определенный формат и сохраняется вместе с машинным кодом. Многие из таких форматов были изобретены на протяжении многих лет для разных платформ и исполняемых файлов.
Ответ 7
JRE
JRE является аббревиатурой для Java Runtime Environment.It используется для обеспечения среды выполнения. Это реализация JVM.It физически существует. Она содержит набор библиотек и других файлов, которые JVM использует во время выполнения.
JDK
JDK является акронимом для Java Development Kit. Он физически существует. Он содержит инструменты разработки JRE +.
Ссылка: - http://www.javatpoint.com/difference-between-jdk-jre-and-jvm
Обычно, когда вы только заботитесь о запуске программ Java в своем браузере или компьютере, вы будете устанавливать только JRE. Это все, что вам нужно. С другой стороны, если вы планируете выполнять некоторые Java-программирования, вам также понадобится JDK.
Ответ 8
JVM, JRE и JDK зависят от платформы, поскольку конфигурация каждой ОС отличается. Но Java не зависит от платформы.
Java Virtual Machine (JVM) - это система времени выполнения, которая выполняет байт-код Java.
JRE - это среда (стандартные библиотеки и JVM), необходимые для запуска приложений Java.
JDK включает инструменты разработки командной строки JRE plus, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.
Ответ 9
Здесь простой ответ прямо из Oracle
http://docs.oracle.com/javase/7/docs/technotes/guides/
Java R Runtime Environment (JRE)
JRE предоставляет библиотеки, виртуальную машину Java и другие компоненты, необходимые для запуска апплетов и приложений, написанных на языке программирования Java. Эта среда выполнения может быть перераспределена с помощью приложений, чтобы сделать их независимыми.
Java Development Development Kit (JDK)
JDK включает инструменты разработки командной строки JRE plus, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.
Ответ 10
Если вы хотите запускать Java-программы, но не разрабатывать их, загрузите среду выполнения Java или JRE. Если вы хотите их развить, загрузите Java Development Kit или JDK
JDK
Пусть называемый JDK - это набор, который включает в себя то, что нужно для разработки и запуска приложений Java.
JDK предоставляется как среда разработки для создания приложений, компонентов и апплетов.
JRE
Он содержит все необходимое для запуска приложений Java в скомпилированной форме. Вам не нужны библиотеки и другие материалы. Все, что вам нужно, составлено.
JRE не может использоваться для разработки, используется только для запуска приложений.
Ответ 11
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, он содержит все необходимые компоненты, которые используются в программировании, такие как класс, методы, Swing, AWT, пакет, Java (интерпретатор), Javac (компилятор), appletviewer (средство просмотра приложений апплета) и т.д. Итак, окончательный вывод он содержит каждый файл, который полезен при разработке приложения, независимо от того, является ли он автономным или веб-ориентированным.
Ответ 12
JVM (виртуальная машина Java) - абстрактная машина. Это спецификация, которая обеспечивает среду выполнения, в которой может быть запущен java-байт-код.
JRE является аббревиатурой для Java Runtime Environment.It используется для обеспечения среды выполнения. Это реализация JVM.It физически существует. Она содержит набор библиотек и других файлов, которые JVM использует во время выполнения
JDK является акронимом для Java Development Kit. Он физически существует. Он содержит инструменты разработки JRE +
Ответ 13
Четкое понимание этих терминов (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 и различия
Ответ 14
Если вы 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)
Ответ 15
jdk необходим для компиляции кода и преобразования java-кода в байтовые коды, в то время как jre необходим для выполнения байтовых кодов.
Ответ 16
JDK включает средства разработки командной строки JRE plus, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.
JRE - это в основном виртуальная машина Java, на которой работают ваши Java-программы. Он также включает плагины браузера для выполнения Applet.
JDK - абстрактная машина. Это спецификация, которая обеспечивает среду выполнения, в которой может быть запущен java-байт-код.
Итак, в основном JVM < JRE < JDK согласно @Jaimin Patel сказал.
Ответ 17
Просто:
JVM - это Java-код виртуальной машины, выполняемый на
JRE - это среда (стандартные библиотеки и JVM), необходимые для запуска приложений Java
JDK - это JRE с инструментами и документацией разработчика
Ответ 18
Разница между JDK и JRE заключается в том, что JDK является комплектом разработки программного обеспечения для Java, тогда как JRE - это место, где вы запускаете свои программы.
Ответ 19
предположим, что если вы являетесь разработчиком, ваша роль заключается в разработке программы, а также для выполнения программы. поэтому у вас должна быть среда для разработки и выполнения, предоставляемая JDK.
Предположим, что если вы клиент, вам не нужно беспокоиться о разработке. Просто вам нужно создать среду для запуска программы и получить результат только, предоставляемый JRE.
JRE выполняет приложение, но JVM читает инструкции по строкам так, чтобы он интерпретировал.
JDK = JRE + Средства разработки
JRE = JVM + Библиотечные классы
Ответ 20
JRE
JRE - это акроним для среды выполнения Java Runtime Environment. Он используется для обеспечения среды выполнения. Это реализация JVM. Это физически существует. Он содержит набор библиотек + другие файлы, которые JVM использует во время выполнения.
Внедрение JVM также активно распространяется другими компаниями, помимо Sun Micro Systems.
JDK
JDK является акронимом для Java Development Kit. Он физически существует. Он содержит инструменты разработки JRE +.