jdk что это такое

68) JDK против JRE против JVM

Что такое JDK?

JDK — это среда разработки программного обеспечения, используемая для создания апплетов и приложений Java. Полная форма JDK — Java Development Kit. Разработчики Java могут использовать его в Windows, macOS, Solaris и Linux. JDK помогает им кодировать и запускать программы на Java. На одном компьютере можно установить более одной версии JDK.

В этом уроке вы узнаете:

Что такое JRE?

JRE — это часть программного обеспечения, предназначенная для запуска другого программного обеспечения. Он содержит библиотеки классов, класс загрузчика и JVM. Проще говоря, если вы хотите запустить Java-программу, вам нужна JRE. Если вы не программист, вам не нужно устанавливать JDK, а просто JRE для запуска программ на Java. Тем не менее, все версии JDK поставляются в комплекте с Java Runtime Environment, поэтому вам не нужно загружать и устанавливать JRE отдельно на вашем ПК. Полная форма JRE — Java Runtime Environment.

Что такое JVM?

JVM — это механизм, обеспечивающий среду выполнения для управления Java-кодом или приложениями. Он преобразует байт-код Java в машинный язык. JVM является частью Java Run Environment (JRE). Его нельзя отдельно загрузить и установить. Чтобы установить JVM, вам нужно установить JRE. Полная форма JVM — виртуальная машина Java.

Во многих других языках программирования компилятор создает машинный код для конкретной системы. Однако компилятор Java создает код для виртуальной машины, которая называется JVM.

Зачем использовать JDK?

Вот важные причины использования JDK:

Зачем использовать JRE?

Вот важные причины использования JRE:

Why JVM?

Here are the important reasons of using JVM:

Features of JDK

Here are the important features of JDK:

Features of JRE

Here are the important features of JRE:

Features of JVM

Here are the important features of JVM:

How JDK Functions?

Here are the important components of JDK:

Как функционирует JRE?

JRE Функциональность

JRE имеет экземпляр JVM с ним, библиотечные классы и инструменты разработки. Как только вы пишете и компилируете код Java, компилятор генерирует файл класса с байтовым кодом.

Вот важные компоненты JRE:

Таким образом, Java-программа работает в JRE.

Как функционирует JVM?

Функциональность JVM

Вот важные компоненты JVM:

1) Класс Loader

Загрузчик классов — это подсистема, используемая для загрузки файлов классов. Он выполняет три основные функции, а именно. Загрузка, связывание и инициализация.

2) Область метода

Область методов JVM хранит структуру класса, такую ​​как метаданные, код для методов Java и постоянный пул времени выполнения.

3) куча

Все объекты, массивы и переменные экземпляра хранятся в куче. Эта память распределяется между несколькими потоками.

4) Языковые стеки JVM

Стеки языка Java хранят локальные переменные и их частичные результаты. Каждый поток имеет свой собственный языковой стек JVM, создаваемый одновременно с созданием потока. Новый кадр создается при вызове метода и удаляется по завершении процесса вызова метода.

5) ПК Регистры

Регистры ПК хранят адрес инструкции виртуальной машины Java, которая в данный момент выполняется. В Java каждый поток имеет свой отдельный регистр ПК.

6) Стеки родного метода

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

7) Исполнение двигателя

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

8) интерфейс родного метода

Интерфейс Native Method представляет собой среду программирования. Он позволяет коду Java, который выполняется в JVM, вызываться библиотеками и собственными приложениями.

9) Библиотеки нативных методов

Собственные библиотеки — это коллекция Собственных библиотек (C, C ++), которые необходимы для механизма исполнения.

Разница между JDK, JRE и JVM

Вот основные различия между JDK против JRE и JVM:

Источник

Так много JDK… Какой использовать и чем это грозит?

От переводчика: Решение перевести эту статью пришло не само собой — скорее это вынужденная мера :). К нам, как к вендорам фреймворка CUBA, обращаются с этим вопросом с завидной регулярностью. Безусловно, для нас это тоже крайне важная тема, и в ответ на последние изменения мы подняли тестовые стенды как на Oracle JDK, так и на Liberica JDK — эта мера на данный момент ограждает наших пользователей от непредвиденных лицензионных трат. Однако, эта тема еще не закрыта, и мы продолжаем внимательно следить за развитием событий, и, кто знает, возможно нам придется добавлять стенды для еще каких сборок JDK уже в следующем году.

Статья под катом подкупает тем, что она лаконично описывает проблематику и наиболее популярные JDK с их особенностями.

Недавно Oracle заявили, что эволюция Java кардинально изменится благодаря переходу на «Release Train» — новому подходу к выкатыванию версий. Это изменение также повлекло за собой перемены в плане поддержки версий, которая теперь будет осуществляться не для всех, а только для LTS версий. Сообщество Java чемпионов разъяснило вводимые новшества, детальный документ доступен в сети.

Читайте также:  при какой температуре запекается рыба в духовке и сколько по времени

Даже с учетом этих новостей остаются вопросы: какие билды JDK сейчас доступны? Будут ли они бесплатными или коммерческими? Прежде чем ответить на этот вопрос, важно понять, какие требования предъявляются к JDK как продукту. Фактически, есть только один основной исходный код JDK. Он находится здесь. Кто угодно может использовать исходный код для построения собственной сборки и размещения ее где-то в сети. Однако есть отдельная процедура сертификации, которая должна быть пройдена, чтобы сборка JDK считалась валидной. Сертификация осуществляется Java Community Process (JCP), который предоставляет Technology Compatibility Kit (TCK). Если какая-либо организация создает новую сборку OpenJDK, которая отвечает TCK, она считается «совместимой с Java SE».

Имейте в виду, что сборка не может называться «Java SE», если компания, осуществившая сборку, не приобрела коммерческую лицензию от Oracle. Например, сборки AdoptOpenJDK, которые проходят TCK, не являются «Java SE», но являются «Java SE compliant». Также нужно учитывать, что сертификация сейчас основывается “на честном слове” — результаты не отсылаются в JCP/Oracle для верификации и являются закрытой информацией. Короче говоря, каждый вендор, взявший исходники OpenJDK и собравший версию, порождает еще одну отдельную сборку JDK.

Итак, без лишних слов, рекомендуем ознакомиться со следующими готовыми к использованию JDK:

Oracle JDK

Это главный поставщик Java 11 (релиз уже состоялся). Это коммерческая версия с платной поддержкой. Ее можно бесплатно скачивать и использовать только непосредственно для разработки. Использовать ее в продакшене, не заплатив Oracle, нельзя (так что для многих не интересующихся вопросами лицензирования это ловушка). Oracle планирует предоставлять платную поддержку до 2026 года и далее. В отличие от того, как было раньше, сборка Oracle JDK ничем не “лучше” OpenJDK (по стольку по скольку оба находятся на одном и том же уровне security patch level).

OpenJDK Build от Oracle

AdoptOpenJDK

Это тоже бесплатные и не-брендовые сборки OpenJDK, распространяемые по лицензии GPL с Classpath Extension, только в отличие от билдов OpenJDK от Oracle эти версии сборки будут действовать в течение более длительного времени для основных версий, таких как Java 11. Версии Java 11 будут выпускаться в течение 4 лет через год после следующего основного релиза. AdoptOpenJDK ориентируется на сообщество. Пока другие команды создают и публикуют исправления безопасности для исходного репозитория OpenJDK, они будут выпускать билды. И IBM, и Red Hat обозначили, что намерены выпускать такие патчи.

AdoptOpenJDK OpenJ9

Вдобавок к стандартным сборкам OpenJDK AdoptOpenJDK будет также предоставлять версии с OpenJ9 вместо HotSpot. OpenJ9 изначально была JVM от IBM, но сейчас OpenJ9 имеет открытый исходный код. И, кстати говоря, эта опция наиболее достойная изучения.

Red Hat OpenJDK

Red Hat предоставляет версии сборки OpenJDK на Red Hat Enterprise Linux (RHEL), являющемся коммерческим продуктом с платной поддержкой. Red Hat очень неплохо справляются с исправлениями безопасности в OpenJDK. В прошлом Red Hat отвечали за security-апдейты Java 6 и 7. Сборка от Red Hat более интегрирована с операционной системой, так что ее нельзя назвать типичным билдом OpenJDK (отсутствует JDK конечного пользователя).

Azul Zulu

Zulu — брендированная версия OpenJDK с платной коммерческой поддержкой. К тому же, хотя Azul предоставляет некоторые элементы Zulu бесплатно в рамках «Zulu Community», они не несут никаких особых обязательств по доступности этих сборок. У Azul довольно масштабный план по поддержке Zulu, включающий поддержку Java 9, 13 и 15, в отличие от других поставщиков.

Amazon Corretto

Это новейшая из всех описанных опций. Corretto — бесплатная версия сборки OpenJDK с долгосрочной поддержкой, проходящая TCK. Она распространяется по стандартным условиям лицензирования всех версий OpenJDK: GPL + CE. Amazon создаст собственные патчи и запустят Corretto на AWS, так что он будет использоваться довольно активно (и уже добавлен в некоторые продукты). Поддержка Java 8 планируется по меньшей мере до июня 2023.

Читайте также:  проверка до какого числа осаго

В процессе преобразования исходного OpenJDK в различные версии сборки производитель может добавлять различные утилиты или брендировать продукт, если это не препятствует сертификации (TCK). Например, нельзя добавить новый public-метод в API или новые языковые ресурсы.

Есть и другие реализации JDK, такие как IBM и SAPMachine. Однако эти версии сборки не так часто используются, поэтому они не упомянуты в этой статье. Более подробную информацию можно найти здесь и здесь.

Заключение

Лично я особой проблемы в наличие нескольких версий JDK не вижу, так как всем им нужно проходить сертификацию (TCK). Чем действительно стоит обеспокоиться — это использование одной из проприетарных JDK и бесплатной версии сборки от Oracle, во избежание головной боли в будущем. Если вы используете только базовые функции (например, ваш бизнес не особо зависит от секьюрити-апдейтов), вам больше подойдут сборки OpenJDK от Oracle (НЕ OracleJDK), т.к. они постоянно обновляются (в течение 6 месяцев после релиза), и вы можете использовать JDK в продакшене без особых проблем. Если в вашем бизнесе задействованы облачные сервисы (или с AWS), хорошим выбором будет AWS Corretto, который уже пригоден к использованию на Amazon Linux и Docker.

Источник

Изучаем Java

Что такое JDK?

Набор программ и классов JDK содержит:

Компания Sun Microsystems активно развивала и обновляла JDK, почти каждый год выходили новые версии.
В1996 г. была выпущена первая версия — JDK 1.0, которая модифицировалась до версии с номером 1.0.2. В этой версии библиотека классов Java API содержала 8 пакетов. Весь набор JDK 1.0.2 поставлялся в упакованном виде в одном файле размером около 5 Мбайт, а после распаковки занимал на диске около 8 Мбайт.

В 1997 г. появилась версия JDK 1.1, последняя ее модификация, 1.1.8, выпущена в 1998 г. В этой версии было 23 пакета классов, занимала она 8,5 Мбайт в упакованном виде и около 30 Мбайт — в распакованном.

В первых версиях JDK все пакеты библиотеки Java API были упакованы в один архивный файл classes.zip и вызывались непосредственно из этого архива, его не нужно было распаковывать.

Затем набор инструментальных средств JDK был сильно переработан.

Версия JDK 1.2 вышла в декабре 1998 г. и содержала уже 57 пакетов классов. В архивном виде это файл размером почти 20 Мбайт и еще отдельный файл размером более 17 Мбайт с упакованной документацией. Полная версия располагается на 130 Мбайт дискового пространства, из них около 80 Мбайт занимает документация.

Начиная с этой версии, все продукты технологии Java собственного производства компания Sun стала называть Java 2 Platform, Standard Edition, сокращенно J2SE, а в литературе утвердилось название Java 2. Кроме 57 пакетов классов, обязательных на любой платформе и получивших название Core API, в Java 2 JDK 1.2 входят еще дополнительные пакеты классов, называемые Standard Extension API.

В версии J2SE JDK 1.5.0, вышедшей в конце 2004 г., было уже под сотню пакетов, составляющих Core API (Application Programming Interface). В упакованном виде — это файл размером около 46 Мбайт и необязательный файл с упакованной документацией такого же размера. В это же время произошло очередное переименование технологии

Из версии убрали первую цифру и стали писать Java 2 Platform, Standard Edition 5.0, сокращенно J2SE 5.0 и JDK 5.0, хотя во внутрифирменной документации сохраняется название JDK 1.5.0.

Последнее обновление J2SE 5.0, JDK 1.5.0_22, было выпущено 3 ноября 2009 года.

В шестой версии, вышедшей в начале 2007 г., из названия технологии убрали цифру 2 и стали писать Java Platform, Standard Edition 6, сокращенно — Java SE 6 и JDK 6. Впрочем, во внутрифирменной документации остается прежнее обозначение, например последнее на момент написания книги обновление обозначается JDK 1.6.0_26.

Летом 2011 года появилась седьмая версия Java SE 7 и распространяется JDK 1.7.0, описанию которой посвящена эта книга.

Java SE JDK создается для каждой платформы: MS Windows, Solaris, Linux, отдельно, а документация написана на языке HTML и одинакова на всех платформах. Поэтому она записана в отдельном файле. Например, для MS Windows файл с Java SE JDK 1.7.0 называется jdk-7-windows-i586.exe с добавлением номера обновления, а файл с документацией называется jdk-7-fcs-bin-b147-apidocs-27_jun_2011.zip.

Читайте также:  какой номер 611 кто это

Архив можно скопировать с того же сайта. Набор Java EE SDK — это дополнение к Java SE и поэтому устанавливается после Java SE JDK. Впрочем, на том же сайте есть полная версия архива, содержащая в себе и Java EE SDK, и Java SE JDK.

Java EE входит в состав серверов приложений, поэтому если вы установили JBoss, GlassFish или другой сервер приложений, то у вас уже есть набор классов Java EE.

Кроме JDK компания Oracle отдельно распространяет еще и набор JRE (Java Runtime Environment).

Сергей Владимирцев
25.12.2017

Источник

Различия между JDK, JRE и JVM

JAVA DEVELOPMENT KIT

Java Development Kit (JDK) — это среда разработки программного обеспечения, используемая для разработки приложений и апплетов Java. Он включает в себя среду выполнения Java (JRE), интерпретатор / загрузчик (Java), компилятор (javac), архиватор (jar), генератор документации (Javadoc) и другие инструменты, необходимые для разработки Java.

JAVA RUNTIME ENVIRONMENT

Разница между JDK, JRE и JVM

Чтобы понять разницу между этими тремя, давайте рассмотрим следующую диаграмму.

Примечание: JDK используется только разработчиками Java.

Как работает JRE и JDK?

Из чего состоит JRE?
JRE состоит из следующих компонентов:

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

JVM пропускает код с помощью Byte Code Verifier, который проверяет формат и проверяет наличие недопустимого кода. Например, незаконный код — это код, который нарушает права доступа к объектам или нарушает реализацию указателей.

Верификатор байт-кода гарантирует, что код соответствует спецификации JVM и не нарушает целостность системы.

Во время выполнения Байт-код загружается, проверяется и запускается интерпретатором. Переводчик имеет следующие две функции:

Обе операции могут быть показаны как:

Чтобы понять взаимодействие между JDK и JRE, рассмотрите следующую диаграмму.

Как работает JVM?

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

Источник

Некоторые важные термины: Java SE, JRE, JDK, IDE

Говоря о языке программирования Java можно часто увидеть такие аббревиатуры как: Java SE, JRE, JDK, IDE. Рассмотрим их.

Java SE

Java Standard Edition (Java SE) – это стандартное издание Java, именно под него разрабатываются клиентские приложения и этот сайт полностью посвящён Java SE. Приложения могут работать самостоятельно или в качестве апплетов веб-браузера.

Кроме стандартного издания бывают:

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

JDK (Java SE Development Kit) – набор инструментов разработчика для создания программ на Java. Включает в себя JRE плюс инструменты для разработки, отладки и мониторинга Java приложений.

Итак, чтобы определиться, что скачивать: JRE или JDK? Ответьте на вопрос: вы хотите только запускать Java программы или ещё и разрабатывать их? Если только запускать, то вам достаточно JRE. Если вы хотите разрабатывать программы, то вам необходим JDK. Набор разработчика JDK уже включает JRE, поэтому нет необходимости скачивать их оба по отдельности.

Версии Java

Кроме рассмотренных различных изданий, а также разных версий пакетов (для конечного пользователя и для разработчика), имеются номерные версии. В настоящее время актуальной является версия JDK 1.10. Кстати, JDK 1.10 = JDK 10.

Если вас интересуют ранние выпуски (что-то вроде беты), то для одинадцатой версии вы их найдёте по адресу http://jdk.java.net/11/

IDE (integrated development environment) – интегрированная среда разработки, предназначена для содействия разработчику, ускоряет процесс разработки программ. Обычно включает в себя редактор с подсветкой синтаксиса, справкой, автоматизированной компиляцией и запуском программ. IDE может быть создана для любого языка программирования, либо для конкретного языка, например, для Java. Интегрированная среды разработки бывают бесплатными и платными. Хорошей бесплатной IDE для Java является NetBeans.

Источник

Сказочный портал