«1. Введение

В этой статье мы рассмотрим различия между Oracle Java Development Kit и OpenJDK. Сначала мы кратко рассмотрим каждый из них, а затем проведем сравнение. После этого мы увидим список других реализаций JDK.

2. История Oracle JDK и Java SE

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

Oracle настоятельно рекомендует использовать термин JDK для обозначения пакета разработки Java SE (Standard Edition) (существуют также платформы Enterprise Edition и Micro Edition).

Давайте взглянем на историю Java SE:

    JDK Beta — 1995 JDK 1.0 — январь 1996 JDK 1.1 — февраль 1997 J2SE 1.2 — декабрь 1998 J2SE 1.3 — май 2000 J2SE 1.4 — февраль 2002 г. J2SE 5.0 — сентябрь 2004 г. Java SE 6 — декабрь 2006 г. Java SE 7 — июль 2011 г. Java SE 8 (LTS) — март 2014 г. Java SE 9 — сентябрь 2017 г. Java SE 10 (18.3) — март 2018 г. Java SE 11 (18.9 LTS) — сентябрь 2018 г. Java SE 12 (19.3) — март 2019 г.

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

Мы видим, что основные выпуски Java SE выходили примерно каждые два года до Java SE 7. Потребовалось пять лет, чтобы перейти от Java SE 6, и еще три года, чтобы достичь Java SE 8 впоследствии.

Начиная с Java SE 10, мы можем ожидать новых выпусков каждые шесть месяцев. Однако не все выпуски будут выпусками с долгосрочной поддержкой (LTS). В соответствии с планом выпуска Oracle выпуск LTS-продуктов будет происходить только каждые три года.

Java SE 11 — это последняя LTS-версия, а Java SE 8 будет получать бесплатные общедоступные обновления до декабря 2020 года для некоммерческого использования.

Этот комплект для разработки получил свое нынешнее название после того, как Oracle купила Sun Microsystems в 2010 году. До этого название было SUN JDK, и это была официальная реализация языка программирования Java.

3. OpenJDK

OpenJDK — это бесплатная реализация Java SE Platform Edition с открытым исходным кодом. Первоначально он был выпущен в 2007 году в результате разработки, которую Sun Microsystems начала в 2006 году. он был основан только на JDK 7. Но, начиная с Java 10, эталонная реализация платформы Java SE с открытым исходным кодом является обязанностью проекта JDK. И, как и в случае с Oracle, проект JDK также будет выпускать новые выпуски функций каждые шесть месяцев.

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

Теперь давайте проверим версии OpenJDK:

Проект OpenJDK 6 — основан на JDK 7, но модифицирован для предоставления версии Java 6 с открытым исходным кодом Проект OpenJDK 7 — 28 июля 2011 г. Проект OpenJDK 7u — – этот проект разрабатывает обновления для Java Development Kit 7 Проект OpenJDK 8 – 18 марта 2014 г. Проект OpenJDK 8u – этот проект разрабатывает обновления для Java Development Kit 8 Проект OpenJDK 9 – 21 сентября 2017 г. Проект JDK, выпуск 10 – « 20 марта 2018 г., выпуск 11 проекта JDK — 25 сентября 2018 г., выпуск 12 проекта JDK — фаза стабилизации

4. Oracle JDK и OpenJDK

    В этом разделе мы сосредоточимся на ключевых различиях между Oracle JDK и OpenJDK.

4.1. График выпуска

Как мы уже упоминали, Oracle будет выпускать выпуски каждые три года, а OpenJDK — каждые шесть месяцев.

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

4.2. Лицензии

Oracle JDK был лицензирован в соответствии с лицензионным соглашением Oracle Binary Code License Agreement, тогда как OpenJDK имеет стандартную общественную лицензию GNU (GNU GPL) версии 2 с исключением связывания.

«Существуют некоторые последствия лицензирования при использовании платформы Oracle. Публичные обновления для Oracle Java SE 8, выпущенные после января 2019 года, не будут доступны для коммерческого, коммерческого или производственного использования без коммерческой лицензии, как объявила Oracle. Однако OpenJDK имеет полностью открытый исходный код и может использоваться свободно.

4.3. Производительность

Между ними нет реальной технической разницы, поскольку процесс сборки Oracle JDK основан на процессе сборки OpenJDK.

Когда дело доходит до производительности, Oracle намного лучше с точки зрения скорости отклика и производительности JVM. Он уделяет больше внимания стабильности из-за важности, которую он придает своим корпоративным клиентам.

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

4.4. Функции

Если мы сравним функции и опции, мы увидим, что продукт Oracle имеет функции Flight Recorder, Java Mission Control и Application Class-Data Sharing, а OpenJDK имеет функцию Font Renderer.

Кроме того, у Oracle есть больше опций сборки мусора и лучшие средства визуализации.

4.5. Разработка и популярность

Oracle JDK полностью разработан корпорацией Oracle, тогда как OpenJDK разработан Oracle, OpenJDK и сообществом Java. Однако в его разработке принимают активное участие и такие первоклассные компании, как Red Hat, Azul Systems, IBM, Apple Inc., SAP AG.

Как видно из ссылки из предыдущего подраздела, когда дело доходит до популярности у ведущих компаний, использующих Java Development Kit в своих инструментах, таких как Android Studio или IntelliJ IDEA, Oracle JDK раньше был более предпочтительным , но оба они перешли на сборки JetBrains на основе OpenJDK.

С другой стороны, основные дистрибутивы Linux (Fedora, Ubuntu, Red Hat Enterprise Linux) предоставляют OpenJDK в качестве реализации Java SE по умолчанию.

5. Изменения по сравнению с Java 11

Как мы видим из сообщения в блоге Oracle, есть несколько важных изменений, начиная с Java 11.

Прежде всего, Oracle изменит свою историческую лицензию «BCL» на сочетание общедоступной лицензии GNU с открытым исходным кодом версии 2 с исключением Classpath Exception (GPLv2+CPE) и коммерческой лицензии при использовании Oracle JDK как части продукта или услуги Oracle или когда программное обеспечение с открытым исходным кодом не приветствуется.

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

Кроме того, в OpenJDK теперь доступны традиционно «коммерческие функции», такие как Flight Recorder, Java Mission Control и Application Class-Data Sharing, а также сборщик мусора Z. Таким образом, сборки Oracle JDK и OpenJDK практически идентичны, начиная с Java 11.

Давайте рассмотрим основные отличия:

Комплект Oracle для Java 11 выдает предупреждение при использовании параметра -XX:+UnlockCommercialFeatures, тогда как в сборках OpenJDK этот параметр приводит к ошибке. Oracle JDK предлагает конфигурацию, обеспечивающую использование записывать данные в инструмент «Advanced Management Console» Oracle всегда требовал, чтобы сторонние криптографические поставщики были подписаны известным сертификатом, в то время как криптографическая структура в OpenJDK имеет открытый криптографический интерфейс, что означает отсутствие ограничений в отношении того, какие провайдеры могут быть используемый Oracle JDK 11 по-прежнему будет включать установщики, брендинг и упаковку JRE, тогда как сборки OpenJDK в настоящее время доступны в виде файлов zip и tar.gz. некоторых дополнительных модулей в выпуске Oracle Вывод команд java –version и java -fullversion позволяет отличить сборки Oracle от сборок OpenJDK

6. Другие реализации JDK ions

    Теперь давайте быстро взглянем на другие активные реализации Java Development Kit.

6.1. Бесплатно и с открытым исходным кодом

«Следующие реализации, перечисленные в алфавитном порядке, имеют открытый исходный код и бесплатны для использования:

AdoptOpenJDK Amazon Corretto Azul Zulu Bck2Brwsr CACAO Codename One DoppioJVM Eclipse OpenJ9 GraalVM CE HaikuVM HotSpot Jamiga JamVM Jelatine JVM Jikes RVM (Jikes Research Virtual Machine) JVM. go leJOS Maxine Multi-OS Engine RopeVM uJVM

6.2. Запатентованные реализации

    Существуют также реализации, защищенные авторскими правами:

Azul Zing JVM CEE-J Excelsior JET GraalVM EE Imsys AB JamaicaVM (aicas) JBlend (Aplix) MicroJvm (IS2T — технология промышленного интеллектуального программного обеспечения) OJVM PTC Perc SAP JVM Waratek CloudVM для Java

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

    7. Заключение

В этой статье мы сосредоточились на двух самых популярных на сегодняшний день Java Development Kit.

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

«

We first described each of them and then emphasized the most notable differences between those. Then, we paid special attention to the changes and differences since Java 11. Finally, we listed other active implementations that are available today.