Разработчик (и) | Oracle Corporation, OpenJDK и Java Community, Red Hat, Azul Systems, IBM, Microsoft, Amazon, Apple Inc, SAP SE |
---|---|
Первый выпуск | 8 мая 2007 г.; 13 лет назад (2007-05-08) |
Репозиторий | |
Написано на | C ++ и Java |
Операционная система | Linux, FreeBSD, macOS, Microsoft Windows, OpenIndiana ; несколько других портов в процессе |
Тип | Платформа Java |
Лицензия | GPLv2 с исключением связи |
Веб-сайт | openjdk.java.net |
OpenJDK (Open Java Development Kit ) - это бесплатная реализация с открытым исходным кодом платформы Java, Standard Edition (Java SE). Это результат усилий Sun Microsystems, начатых в 2006 году. Реализация под лицензией Стандартной общественной лицензии GNU (GNU GPL) версии 2 с исключением связи. Если бы не исключение связывания GPL, компоненты, которые связаны с библиотекой классов Java, подпадали бы под условия лицензии GPL. OpenJDK - это официальная эталонная реализация Java SE, начиная с версии 7.
Проект OpenJDK создает ряд компонентов: наиболее важно виртуальная машина (HotSpot ), Библиотека классов Java и компилятор Java (javac ).
Подключаемый модуль веб-браузера и Web Start, которые являются частью Oracle Java, не включены в OpenJDK. Sun ранее указала, что они попытаются сделать эти компоненты открытыми, но ни Sun, ни Oracle этого не сделали. Единственными доступными в настоящее время бесплатными плагинами и реализациями Web Start по состоянию на 2016 год являются те, которые предоставляются IcedTea.
. В сентябре 2016 года сотрудник Oracle детализировал планы по добавлению компиляции AOT в OpenJDK с использованием GraalVM.
OpenJDK изначально был основан только на версии JDK 7 платформы Java.
Начиная с JDK 10, усилия по созданию открытого Эталонная реализация платформы Java SE была перенесена в проект JDK. В отличие от прошлых проектов выпуска JDK, которые производили только один выпуск функции, а затем были прекращены, этот долгосрочный проект будет создавать все будущие выпуски функций JDK и выпускать выпуск функций каждые шесть месяцев в соответствии со строгой, привязанной ко времени моделью.
Существует несколько отдельных ветвей разработки проектов OpenJDK и JDK:
Из-за того, что Oracle больше не выпускает обновления для долгосрочной поддержки (LTS) выпускает под разрешающей лицензией, другие начали предлагать сборки.
Сборка | LTS | Разрешающая. лицензия | TCK. Протестированная | сборка. немодифицированная. апстрим | Коммерческая. поддержка. доступна |
---|---|---|---|---|---|
AdoptOpenJDK | Да | Да | Нет | Необязательно | Необязательно (IBM) |
Alibaba Dragonwell | Да | Да | Да | Нет | Нет |
Amazon Corretto | Да | Да | Да | No | Необязательно (на AWS) |
Azul Zulu | Да | Да | Да | Нет | Необязательно |
BellSoft Liberica JDK | Да | Да | Да | Нет | Необязательно |
IBM Java SDK | Да | Нет | Да | Нет | Да |
ojdkbuild | Да | Да | Нет | Да | Нет |
OpenLogic OpenJDK | Да | Да | Нет | Нет | Необязательно |
Oracle Java SE | Да | Нет | Да | Нет | Да |
Oracle OpenJDK | Нет | Да | Да | Да | Нет |
Сборка Red Hat OpenJDK | Да | Да | Да | Нет | Да |
SAP SapMachine | Да | Да | Да | Нет | Нет |
Для объединения OpenJDK в Fedora и другие бесплатные дистрибутивы GNU / Linux, OpenJDK необходимо было собирать с использованием только компонентов бесплатного программного обеспечения. Это было невозможно из-за наличия компонентов в библиотеке классов и неявных предположений в системе сборки о том, что JDK, используемый для сборки OpenJDK, был Sun JDK. Для достижения открытости Red Hat запустил проект IcedTea в июне 2007 года. Он начал свою жизнь как гибрид OpenJDK / GNU Classpath, который можно было использовать для начальной загрузки OpenJDK, заменяя обременения кодом из GNU Classpath.
5 ноября 2007 г. Red Hat подписала Соглашение с участником Sun и лицензию OpenJDK Community TCK. Одним из первых преимуществ этого соглашения является более тесное согласование с проектом IcedTea, который объединяет Fedora, дистрибутив Linux, и JBoss, сервер приложений, технологии в среде Linux. IcedTea предоставила бесплатные альтернативы программному обеспечению для немногих оставшихся закрытых разделов проекта OpenJDK.
В мае 2008 г. дистрибутивы Fedora 9 и Ubuntu 8.04 включали IcedTea 6, полностью основанный на бесплатном и с открытым исходным кодом. Fedora 9 была первой версией, поставляемой с IcedTea6, основанной на исходных кодах OpenJDK6 от Sun, а не OpenJDK7. Он также был первым, кто использовал OpenJDK для имени пакета (в соответствии с соглашением о товарных знаках OpenJDK ) вместо IcedTea. Ubuntu также сначала упаковал IcedTea7, а затем перешел на IcedTea6. Пакеты для IcedTea6 также были созданы для Debian и включены в Lenny. 12 июля 2008 г. Debian принял OpenJDK-6 в нестабильном состоянии, и теперь он находится в стабильном. OpenJDK также доступен на openSUSE, Red Hat Enterprise Linux и производных от RHEL, таких как CentOS.
. В июне 2008 года Red Hat объявила, что упакованные двоичные файлы для OpenJDK на Fedora 9, созданная с использованием IcedTea 6, прошла тесты Technology Compatibility Kit и может претендовать на то, чтобы быть полностью совместимой реализацией Java 6. В июле 2009 года двоичная сборка IcedTea 6 для Ubuntu 9.04 прошла все тесты совместимости в Java SE 6 TCK.
. С августа 2008 года OpenJDK 7 можно использовать на macOS и другие варианты BSD.
В Android Nougat OpenJDK заменяет прекращенный сейчас Apache Harmony в качестве библиотек Java в исходном коде. код мобильной операционной системы. Google находится в продолжающемся судебном споре с Oracle из-за претензий о нарушении авторских прав и патентов из-за использования повторных реализаций API Java, защищенных авторским правом, через Harmony. Заявив также, что это изменение должно было создать более согласованную платформу между Java на Android и других платформах, компания признала, что переход был мотивирован судебным процессом, утверждая, что Oracle разрешила использование кода OpenJDK, лицензируя его по GPL..
Sun объявила в JavaOne 2006, что Java станет программным обеспечением с открытым исходным кодом, а 25 октября В 2006 году на конференции Oracle OpenWorld Джонатан Шварц сказал, что компания намеревается объявить об открытии исходного кода ядра Java Platform в течение 30-60 дней.
Sun выпустила виртуальную машину и компилятор Java HotSpot как бесплатное программное обеспечение в соответствии с Стандартной общественной лицензией GNU 13 ноября 2006 г. обещаем, что остальная часть JDK (включая Java Runtime Environment ) будет помещена под лицензию GPL к марту 2007 года, «за исключением нескольких компонентов, которые Sun делает n не имеют права публиковать в исходной форме под лицензией GPL ». По словам защитника свободного программного обеспечения Ричарда Столлмана, это положило бы конец «ловушке Java», привязке к поставщику, которая, по его утверждениям, применима к Java и программам, написанным на Java.
Следуя своему обещанию выпустить Java Development Kit (JDK), почти полностью основанный на бесплатном коде с открытым исходным кодом в первой половине 2007 года, Sun 8 мая 2007 г. выпустила полный исходный код библиотеки классов Java по лицензии GPL, за исключением некоторых ограниченных частей, которые были переданы Sun по лицензии третьими сторонами, и Sun не смогла повторно лицензировать по лицензии GPL. В список обремененных частей включены несколько основных компонентов графического пользовательского интерфейса Java (GUI). Sun заявила, что планирует заменить оставшиеся проприетарные компоненты альтернативными реализациями и сделать библиотеку классов полностью бесплатной.
При первоначальном выпуске в мае 2007 г. 4% библиотеки классов OpenJDK оставались проприетарными. К моменту появления OpenJDK 6 в мае 2008 г. осталось менее 1% (реализация SNMP, которая не является частью спецификации Java), что позволяет создавать OpenJDK без каких-либо двоичных плагинов. Требование бинарного плагина было позже исключено из OpenJDK 7 как часть b53 в апреле 2009 года.
Это стало возможным в течение первого года благодаря работе Sun Microsystems и сообщество OpenJDK. Каждое препятствие было либо выпущено как бесплатное программное обеспечение с открытым исходным кодом, либо было заменено альтернативой. Начиная с декабря 2010 года, все так называемые бинарные плагины были заменены на с открытым исходным кодом, что сделало весь JDK открытым, а бинарные плагины больше не нужны.
5 ноября 2007 года Red Hat объявила о соглашении с Sun, подписав широкое соглашение об участии Sun (которое охватывает участие всех инженеров Red Hat во всех проектах Sun с бесплатным и открытым исходным кодом.) и лицензионное соглашение Sun's OpenJDK Community Technology Compatibility Kit (TCK) (которое дает компании доступ к набору тестов, который определяет, соответствует ли проект, основанный на OpenJDK, спецификации Java SE 6).
Также в ноябре 2007 года на базе OpenJDK была создана Porters Group для помощи в усилиях по переносу OpenJDK на различные архитектуры процессоров и операционные системы. Проект портирования BSD, возглавляемый Куртом Миллером и Грегом Льюисом, и проект портирования Mac OS X (основанный на BSD), возглавляемый Лэндоном Фуллером, выразили заинтересованность в присоединении к OpenJDK через Портеров. Группа. По состоянию на январь 2008 года оба они участвуют в обсуждениях в списках рассылки. Еще один проект, ожидающий формализации в Porters Group, - это Haiku Java Team, возглавляемая Брайаном Варнером.
В декабре 2007 года Sun переместила контроль версий OpenJDK с От TeamWare до Mercurial (а позже до Git и GitHub ), как часть процесса выпуска его в open-source сообществ.
OpenJDK имеет сравнительно строгие процедуры принятия дополнений кода: каждый предложенный вклад должен быть рассмотрен другим коммиттером OpenJDK, и участник должен подписать соглашение Sun / Oracle Contributor Agreement (SCA / OCA). Желательно также иметь тест jtreg, демонстрирующий, что ошибка была исправлена. Первоначально процесс отправки внешнего исправления был медленным, и до сентября 2008 г. фиксация кодовой базы производилась только инженерами Sun. Этот процесс улучшился, и с 2010 года простые исправления и обратные переносы с OpenJDK 7 на OpenJDK 6 могут выполняться в течение нескольких часов, а не дней.
В 2011 году впервые был произведен неофициальный перенос OpenJDK 6.0 на OS / 2 выпущенный. Этот порт включен в производную от OS / 2 ArcaOS.
25 сентября 2013 года Microsoft и Azul Systems совместно создали Zulu, сборку OpenJDK для пользователей облака Windows Azure. Zulu доступен для бесплатной загрузки с сайта сообщества Zulu.org. Также можно получить Zulu на веб-сервисах Amazon через репозитории Juju Charm Store Canonical, Docker Hub и Azul Systems. Azul вносит исправления ошибок и улучшения обратно в проект OpenJDK и имеет в штате несколько коммиттеров проекта.
С апреля 2016 года сообщества не поддерживают сборки OpenJDK для Microsoft Windows на GitHub в проекте ojdkbuild, который выпускается вместе с обновлениями для Oracle JDK. Начиная со сборки 8u151, установщик MSI предлагает дополнительный компонент для использования Java Web Start на основе проекта IcedTea-Web.
В 2020 году был выпущен перенос OpenJDK 8 на OpenVMS на платформе Itanium.
Количество внешних вкладов в OpenJDK растет с момента создания проекта. OpenJDK 11, выпущенный в сентябре 2018 года, получил 20% внешних исправлений и принес 17 новых JEP (функций), из которых 3 были внесены сообществом. А именно, JEP 315: «Улучшение встроенных функций Aarch64» (предоставлено), JEP 318: «Epsilon: сборщик мусора без использования операций» (от Red Hat) и JEP 331: «Профилирование кучи с низкими накладными расходами» (предоставлено Google).
11 октября 2010 г. IBM, безусловно, крупнейший участник проекта Apache Harmony, решила присоединиться к Oracle в проекте OpenJDK, эффективно переключив свои усилия с Harmony на OpenJDK. Боб Сутор, глава IBM по Linux и ПО с открытым исходным кодом, написал в блоге, что «IBM будет переводить свои усилия по разработке с Apache Project Harmony на OpenJDK».
12 ноября 2010 г. Apple Inc. (всего через три недели после прекращения поддержки собственного порта среды выполнения Java) и Oracle Corporation объявила о проекте OpenJDK для Mac OS X. Apple предоставит большинство ключевых компонентов, инструментов и технологий, необходимых для реализации Java SE 7 в Mac OS X, включая 32-битная и 64-битная виртуальная машина Java на основе HotSpot, библиотеки классов, сетевой стек и основа для нового графического клиента.
11 января 2011 года был создан проект порта Mac OS X на OpenJDK, и Apple сделали первый публичный вклад кода в проект. Первоначальный вклад Apple был основан на OpenJDK BSD port.
В июле 2011 года SAP AG объявила, что SAP официально присоединилась к проекту OpenJDK.