В чем разница между JDK и JRE?
В чем разница между JDK и JRE?
Каковы их роли и когда я должен использовать одну или другую?
21 ответ
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 для компиляции сервлетов. Я уверен, что будет больше примеров.
Ответ выше (Пабло) очень правильный. Это просто дополнительная информация.
JRE, как следует из названия, является окружающей средой. Это в основном набор каталогов с файлами, относящимися к Java:
bin/
содержит исполняемые программы Java. Наиболее важным являетсяjava
(и для Windows,javaw
а также), которая запускает JVM. Здесь также есть некоторые другие утилиты, такие какkeytool
а такжеpolicytool
,conf/
содержит редактируемые пользователем файлы конфигурации для экспертов по Java.lib/
имеет большое количество вспомогательных файлов: некоторые.jar
s, файлы конфигурации, файлы свойств, шрифты, переводы, сертификаты и т. д. - все это "обрезки" Java. Наиболее важным являетсяmodules
файл, который содержит.class
файлы стандартной библиотеки Java.- На определенном уровне стандартная библиотека Java должна вызывать нативный код. Для этой цели JRE содержит некоторые
.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 (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, таких как String и ArrayList, вам нужна специальная версия JRE, которая компилируется с "информацией отладки". JRE, включенная в JDK, предоставляет эту информацию, а обычная JRE - нет. Обычная JRE не включает эту информацию, чтобы обеспечить лучшую производительность.
Что такое отладочная информация? Вот краткое объяснение, взятое из этого поста в блоге:
Современные компиляторы выполняют довольно хорошую работу по преобразованию вашего высокоуровневого кода с его хорошо врезанными и вложенными управляющими структурами и произвольно типизированными переменными в большую кучу битов, называемых машинным кодом (или байт-кодом в случае Java), единственной целью которого является работать как можно быстрее на целевом процессоре (виртуальном процессоре вашей JVM). Java-код преобразуется в несколько инструкций машинного кода. Переменные помещаются повсюду - в стек, в регистры или полностью оптимизируются. Структуры и объекты даже не существуют в результирующем коде - они просто абстракция, которая преобразуется в жестко закодированные смещения в буферы памяти.
Так как же отладчик узнает, где остановиться, когда вы просите его прерваться при входе в какую-либо функцию? Как ему удается найти, что показывать вам, когда вы спрашиваете его о значении переменной? Ответ - отладочная информация.
Отладочная информация генерируется компилятором вместе с машинным кодом. Это представление о связи между исполняемой программой и исходным исходным кодом. Эта информация кодируется в предварительно определенный формат и сохраняется вместе с машинным кодом. Многие такие форматы были изобретены за многие годы для разных платформ и исполняемых файлов.
С официального сайта 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.
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(просмотрщик приложений апплета) и т. Д. Итак, окончательный вывод заключается в том, что каждый контент файл, который полезен при разработке приложения, автономного или веб-приложения.
Вот простой ответ прямо из 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, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.
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, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.
JVM (виртуальная машина Java) - это абстрактная машина. Это спецификация, которая обеспечивает среду выполнения, в которой может быть выполнен байт-код Java.
JRE является аббревиатурой для Java Runtime Environment. Он используется для предоставления среды выполнения. Это реализация JVM. Он существует физически. Он содержит набор библиотек + другие файлы, которые JVM использует во время выполнения.
JDK - это аббревиатура для Java Development Kit. Он существует физически. Он содержит инструменты разработки JRE +.
Если вы хотите запускать программы Java, но не разрабатывать их, загрузите среду выполнения Java или JRE. Если вы хотите их разработать, загрузите Java Development Kit или JDK
JDK
Давайте назовем JDK набором, который включает в себя то, что нужно для разработки и запуска Java-приложений.
JDK предоставляется как среда разработки для создания приложений, компонентов и апплетов.
JRE
Он содержит все необходимое для запуска приложений Java в скомпилированном виде. Вам не нужно никаких библиотек и прочего. Все, что вам нужно, скомпилировано.
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 - это виртуальная машина, на которой выполняется Java-код
JRE - это среда (стандартные библиотеки и JVM), необходимая для запуска приложений Java
JDK - это JRE с инструментами разработчика и документацией
Четкое понимание этих терминов (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 включает в себя инструменты разработки командной строки JRE plus, такие как компиляторы и отладчики, которые необходимы или полезны для разработки апплетов и приложений.
JRE - это в основном виртуальная машина Java, на которой работают ваши Java-программы. Он также включает в себя плагины браузера для запуска апплета.
JDK - это абстрактная машина. Это спецификация, которая обеспечивает среду выполнения, в которой может быть выполнен байт-код Java.
Итак, в основном JVM
JDK необходим для компиляции кода и преобразования Java-кода в байтовые коды, в то время как JRE необходим для выполнения байтовых кодов.
Разница между 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 +.
Что такое среда выполнения Java (JRE)?
Java Runtime Environment, или JRE, представляет собой набор программных инструментов, отвечающих за выполнение Java-программы или приложения в вашей системе. Он используется для обеспечения среды выполнения. Это реализация JVM. Он физически существует. Он содержит набор библиотек + другие файлы, которые JVM использует во время выполнения. Он также может запускать те программы, которые написаны на других языках и скомпилированы в байт-код Java. JVM выполняет указанные задачи: загружает код, проверяет код, выполняет код, обеспечивает среду выполнения.
JRE использует пространство кучи для динамического выделения памяти для объектов Java. JRE также используется в JDB (отладка Java).
Роль JRE в Java
Если программист хочет выполнить программу Java с помощью команды Java, ему следует установить JRE. Если они только устанавливают (а не разрабатывают или компилируют код), то нужна только JRE.
JRE-компоненты
Помимо виртуальной машины Java, JRE состоит из множества других вспомогательных программных инструментов и функций, позволяющих получить максимальную отдачу от ваших приложений Java.
Решения для развертывания. В состав установки JRE входят такие технологии развертывания, как Java Web Start и Java Plugin, которые упрощают активацию приложений и обеспечивают расширенную поддержку будущих обновлений Java.
Наборы инструментов разработки: JRE также содержит инструменты разработки, призванные помочь разработчикам улучшить их пользовательский интерфейс. Некоторые из этих наборов инструментов включают следующее:
- Java 2D: интерфейс прикладного программирования (API), используемый для рисования двухмерной графики на языке Java. Разработчики могут создавать богатые пользовательские интерфейсы, специальные эффекты, игры и анимацию.
- Набор абстрактных окон (AWT): графический пользовательский интерфейс (GUI), используемый для создания объектов, кнопок, полос прокрутки и окон.
- Swing: еще один облегченный графический интерфейс, использующий богатый набор виджетов для гибкой и удобной настройки.
Библиотеки интеграции: Java Runtime Environment предоставляет несколько библиотек интеграции и библиотек классов, которые помогают разработчикам создавать бесшовные соединения данных между их приложениями и службами. Некоторые из этих библиотек включают следующее:
Java IDL: использует архитектуру Common Object Request Brokerage (CORBA) для поддержки распределенных объектов, написанных на языке программирования Java.
Java Database Connectivity (JDBC) API: Предоставляет разработчикам инструменты для написания приложений с доступом к удаленным базам данных взаимосвязей, плоским файлам и электронным таблицам.
Интерфейс именования и каталогов Java (JNDI): программный интерфейс и служба каталогов, которые позволяют клиентам создавать переносимые приложения, которые могут извлекать информацию из баз данных, используя соглашения об именах.
Языковые и служебные библиотеки. В состав JRE входит Java.lang. и Java.util. пакеты, лежащие в основе проектирования приложений Java, управления версиями пакетов и мониторинга. Некоторые из этих пакетов включают следующее:
- Структура коллекций: унифицированная архитектура, состоящая из набора интерфейсов, предназначенных для улучшения хранения и обработки данных приложения.
- Утилиты параллелизма: мощный пакет фреймворка с высокопроизводительными утилитами многопоточности.
- Preferences API: облегченный кросс-платформенный постоянный API, который позволяет нескольким пользователям на одном компьютере определять свою собственную группу настроек приложения.
- Ведение журнала: создает отчеты журнала, такие как сбои безопасности, ошибки конфигурации и проблемы с производительностью, для дальнейшего анализа.
- Архив Java (JAR): независимый от платформы формат файла, который позволяет объединять несколько файлов в формат файла JAR, значительно повышая скорость загрузки и уменьшая размер файла.
Что такое комплект для разработки Java (JDK)?
Java Development Kit, или JDK, — это комплект для разработки программного обеспечения, который часто называют надмножеством JRE. Это базовый компонент, который позволяет разрабатывать Java-приложения и Java-апплеты. Он зависит от платформы, поэтому для каждой операционной системы (например, Mac, Unix и Windows) требуются отдельные установщики.
Роль JDK в Java
JDK содержит все инструменты, необходимые для компиляции, отладки и запуска программы, разработанной с использованием платформы Java. (Стоит отметить, что Java-программы также можно запускать с помощью командной строки.)
Компоненты JDK
JDK включает в себя все инструменты Java, исполняемые и двоичные файлы, необходимые для запуска программ Java. Сюда входят JRE, компилятор, отладчик, архиватор и другие инструменты, которые используются при разработке Java.