11

Какова разница между JDK и JRE?

14

Заметка редактора: Этот вопрос был задан в 2009 году, когда мир был другим. В 2022 году стандартный открытый OpenJDK состоит только из JDK.


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

5 ответ(ов)

14

JRE — это Java Runtime Environment. Это пакет, содержащий всё необходимое для выполнения скомпилированной Java-программы, включая Java Virtual Machine (JVM), библиотеки Java Class Library, команду java и другую инфраструктуру. Однако JRE нельзя использовать для создания новых программ.

JDK — это Java Development Kit, полнофункциональный SDK для Java. В нём есть всё, что есть в JRE, но также включены компилятор (javac) и инструменты (такие как javadoc и jdb). Он способен создавать и компилировать программы.

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

Иногда, даже если вы не планируете заниматься разработкой на Java на своём компьютере, вам всё равно может понадобиться установить JDK. Например, если вы разворачиваете веб-приложение с использованием JSP, технически вы просто запускаете Java-программы внутри сервера приложений. Почему тогда вам нужен JDK? Потому что сервер приложений будет преобразовывать JSP в Java-сервлеты и нуждается в JDK для компиляции этих сервлетов. Уверен, что есть и другие примеры.

1

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

JRE (Java Runtime Environment) — это, как следует из названия, среда. Это на самом деле набор директорий с файлами, связанными с 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 (Java Development Kit) также представляет собой набор директорий. Это надмножество JRE с некоторыми дополнениями:

  • Директория bin/ расширена за счет инструментов разработки. Наиболее важный из них — javac; другие включают jar, javadoc и jshell.
  • Добавлена директория jmods/, которая содержит файлы JMOD для стандартной библиотеки. Эти файлы позволяют использовать стандартную библиотеку с jlink.
0

JRE (Java Runtime Environment):

  • JRE — это реализация Java Virtual Machine, которая фактически выполняет Java-программы.
  • Java Runtime Environment является необходимым плагином для запуска Java-программ.
  • JRE занимает меньше места на диске по сравнению с JDK.
  • JRE можно бесплатно скачать с сайта https://www.java.com.
  • В JRE включены JVM, основные библиотеки и другие дополнительные компоненты для запуска приложений и апплетов, написанных на Java.

JDK (Java Development Kit):

  • JDK — это набор программных средств, которые вы можете использовать для разработки приложений на Java.
  • Java Development Kit необходим для разработки Java-приложений.
  • JDK требует больше места на диске, так как включает в себя JRE, а также различные инструменты разработки.
  • JDK можно бесплатно скачать с сайта https://www.oracle.com/technetwork/java/javase/downloads/.
  • В JDK входят JRE, набор классов API, компилятор Java, Webstart и дополнительные файлы, необходимые для написания Java-апплетов и приложений.
0

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

JVM (Java Virtual Machine) — это подсистема JDK и JRE, отвечающая за выполнение промежуточного кода, известного как "байт-код". Первый шаг — это загрузка "файла класса" (с расширением .class), который был сгенерирован компилятором Java (javac) с помощью загрузчика классов JVM. Затем JVM классифицирует выделение памяти (классная область, стек, куча и регистры программного счетчика) в зависимости от их назначения. После этого выполняется проверка всего байт-кода для обеспечения соответствия правилам Java и доступности памяти через сеть. Работу интерпретатора можно считать следующим шагом, где происходит поочередная проверка всей программы. Результаты выполнения затем отображаются в консоли, браузере или приложении через JRE (Java Runtime Environment), который обеспечивает среды выполнения.

JRE — это также подсистема JDK, предоставляющая средства выполнения, такие как JVM, классы и исполняемые файлы (например, .jar файлы и др.).

JDK (Java Development Kit) — это комплект для разработки на Java, содержащий все необходимые компоненты для программирования, такие как классы, методы, Swing, AWT, пакеты, интерпретатор Java, компилятор javac, appletviewer (для просмотра приложений-апплетов) и др. В заключение, JDK содержит все файлы, необходимые для разработки приложений, как автономных, так и веб-приложений.

0

Вот простой ответ непосредственно от Oracle:

Java SE Runtime Environment (JRE)

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

Java SE Development Kit (JDK)

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

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь