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

741

В чем разница между JDK и JRE?
Каковы их роли и когда я должен использовать один или другой?

  • 9
    Хороший и краткий ответ на этот вопрос можно найти по адресу: java.com/en/download/faq/techinfo.xml
  • 7
    Возможный дубликат В чем разница между JVM, JDK, JRE и OpenJDK?
Показать ещё 1 комментарий
Теги:

20 ответов

938
Лучший ответ

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 для компиляции сервлетов. Я уверен, что будет больше примеров.

  • 4
    Затем, когда мы используем внешние банки, мы развертываем эти банки в jre / lib / ext / .. Так почему это ??
  • 2
    Есть несколько jar-файлов, специально предназначенных для расширения Java; те могут и должны быть помещены в lib / ext. Но установка любых старых jar-файлов приложений - не то, для чего предназначен этот каталог; это злоупотребление механизмом расширения и может вызвать проблемы позже.
Показать ещё 8 комментариев
116

Изображение 1389

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

  • 2
    Классная схема! Я немного запутался, что команда java изображена вне JRE, что не правильно. Я не понимаю, почему существуют отдельные файлы для команды java при установке JDK, которые идентичны по крайней мере по размеру. В каком случае приложение будет работать с использованием JRE и не работать с JDK? Пережил это недавно и, вероятно, должен вернуться, чтобы повторить и докопаться до сути ...
114

Ответ выше (Пабло) очень правильный. Это просто дополнительная информация.

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.
  • 1
    Значит ли это, что я могу установить свои переменные пути в JDK и все?
  • 3
    @Brady: Да, я так думаю. Это прекрасно работает для меня, по крайней мере. Как разработчик, я по сути игнорирую JRE. Если есть особые случаи, когда вы конкретно хотите JRE, я не знаю о них.
Показать ещё 6 комментариев
76

С точки зрения непрофессионала: JDK - дедушка, JRE - отец, а JVM - их сын. [т.е. JDK> JRE> JVM]

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

JRE = JVM + Java Packages Классы (например, util, math, lang, awt, swing и т.д.) Библиотеки +runtime.

JVM = система загрузчика классов + область данных времени выполнения + механизм выполнения.

Другими словами, если вы 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)

Изображение 1390

  • 0
    Когда вы говорите «компилировать» или «компилятор», в этом контексте крайне запутано то, на что вы ссылаетесь: превращение исходного кода Java в байтовый код Java или превращение байтового кода Java в машинный код.
26

От официального веб-сайта 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.
21

Одно отличие от перспективы отладки:

Для отладки в системных классах Java, таких как String и ArrayList, вам нужна специальная версия JRE, которая скомпилирована с "отладочной информацией". JRE, включенный в JDK, предоставляет эту информацию, но обычный JRE этого не делает. Регулярная JRE не включает эту информацию, чтобы обеспечить лучшую производительность.

Что такое отладочная информация? Вот краткое объяснение, взятое из этого сообщения в блоге:

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

Итак, как отладчик знает, где остановиться, когда вы просите его разбить на запись на какую-то функцию? Как вам удается найти, что вам показать, когда вы задаете ему значение переменной? Ответ - отладка информации.

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

8

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

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

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

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

8

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.

7

Если вы хотите запускать Java-программы, но не разрабатывать их, загрузите среду выполнения Java или JRE. Если вы хотите их развить, загрузите Java Development Kit или JDK

JDK

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

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

JRE

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

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

7

Здесь простой ответ прямо из 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, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.

6

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 (просмотрщик приложений апплета) и т.д. Итак, окончательный вывод - это содержание каждого файл, который полезен при разработке приложения, автономного или веб-приложения.

6

Если вы 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)

  • 0
    Был плагиат с нескольких сайтов (для разделов JVM и JDK). В следующий раз, пожалуйста, приведите свои источники - это не ваша оригинальная работа.
6

Четкое понимание этих терминов (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 и различия

5

Просто:

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

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

JDK - это JRE с инструментами и документацией разработчика

5

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

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

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

Итак, в основном JVM < JRE < JDK согласно @Jaimin Patel сказал.

5

jdk необходим для компиляции кода и преобразования java-кода в байтовые коды, в то время как jre необходим для выполнения байтовых кодов.

  • 3
    Немного больше информации здесь бы прошло долгий путь ...
  • 5
    @Noy: Мало того, что это очень мало информации, она также не содержит ничего, чего нет в других ответах.
5

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

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

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

4

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

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

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

JDK = JRE + Средства разработки

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

4

Разница между JDK и JRE заключается в том, что JDK является комплектом разработки программного обеспечения для Java, тогда как JRE - это место, где вы запускаете свои программы.

2

JRE

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

Внедрение JVM также активно распространяется другими компаниями, помимо Sun Micro Systems.

Изображение 1391

JDK

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

Изображение 1392

  • 0
    И информация в тексте, и графика были предоставлены в других, более ранних ответах.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню