Разработчик(и) | Путь к классам GNU |
---|---|
Стабильный релиз | 3.31.0 [1] / 20 апреля 2024 г. ( 2024-04-20 ) |
Репозиторий | github.com/icedtea-git/icedtea/tree/3.0 |
Написано в | С , С++ и Java |
Операционная система | Linux , *BSD , macOS , Windows , Solaris |
Платформа | IA-32, x86-64, ARM, AArch64, sparc, sparc64, ppc, ppc64, ppc64le, s390, s390x |
Тип | Виртуальная машина Java и библиотека Java |
Лицензия | GNU GPL + исключение для ссылок |
Веб-сайт | icedtea.classpath.org |
Разработчик(и) | GNU Classpath (в Red Hat до версии 2.6.22) |
---|---|
Стабильный релиз | 2.6.28 [2] / 8 ноября 2021 г. ( 2021-11-08 ) |
Репозиторий | github.com/icedtea-git/icedtea/tree/2.6 |
Написано в | С , С++ и Java |
Операционная система | Linux , *BSD , macOS , Windows , Solaris |
Платформа | IA-32, x86-64, ARM, AArch64, sparc, sparc64, ppc, ppc64, ppc64le, s390, s390x |
Тип | Виртуальная машина Java и библиотека Java |
Лицензия | GNU GPL + исключение для ссылок |
Веб-сайт | icedtea.classpath.org |
Разработчик(и) | Red Hat и GNU Classpath |
---|---|
Окончательный релиз | 1.13.13 / 9 января 2017 г. ( 2017-01-09 ) |
Репозиторий | Icedtea.classpath.org/hg/icedtea6 |
Написано в | С , С++ и Java |
Операционная система | Linux , *BSD , macOS , Windows , Solaris |
Платформа | IA-32, x86-64, ARM, sparc, sparc64, ppc, ppc64, s390, s390x |
Тип | Виртуальная машина Java и библиотека Java |
Лицензия | GPL + исключение для ссылок |
Веб-сайт | icedtea.classpath.org |
Разработчик(и) | Red Hat и GNU Classpath |
---|---|
Стабильный релиз | 1.8.8 (двоичные файлы) / 28 октября 2021 г. ( 2021-10-28 ) |
Репозиторий | github.com/AdoptOpenJDK/icedtea-web |
Написано в | C++ и Java |
Операционная система | Linux , *BSD , OS X , Windows , Solaris |
Тип | Поддержка Java Web Start и веб-плагина Java для апплетов |
Лицензия | GPL + исключение для ссылок |
Веб-сайт | Icedtea.classpath.org/wiki/IcedTea-Web |
Разработчик(и) | Red Hat и GNU Classpath |
---|---|
Стабильный релиз | 1.0.1 / 18 июля 2014 г. ( 2014-07-18 ) |
Репозиторий | Icedtea.classpath.org/hg/icedtea-sound/ |
Написано в | Си и Java |
Операционная система | Linux , *BSD , OS X , Windows , Solaris |
Тип | Звуковая поддержка |
Лицензия | GPL + исключение для ссылок |
Веб-сайт | Icedtea.classpath.org/wiki/IcedTea-Sound |
IcedTea — проект сборки и интеграции OpenJDK, запущенный Red Hat в июне 2007 года. [3] IcedTea также включает в себя несколько дополнительных библиотек: IcedTea-Web — бесплатная программная реализация Java Web Start и плагина веб-браузера Java . IcedTea-Sound — набор плагинов для звуковой подсистемы Java, включая поставщика PulseAudio , который раньше входил в состав IcedTea. Free Software Foundation рекомендует всем программистам Java использовать IcedTea в качестве среды разработки. [4]
Исторически изначальной целью проекта IcedTea было сделать программное обеспечение OpenJDK, которое Sun Microsystems выпустила как бесплатное программное обеспечение в 2007 году, пригодным для использования без необходимости в каком-либо проприетарном программном обеспечении , и, следовательно, сделать возможным добавление OpenJDK в Fedora и другие дистрибутивы Linux , которые настаивают на свободном программном обеспечении. Эта цель была достигнута, и версия IcedTea на основе OpenJDK была упакована с Fedora 8 в ноябре 2007 года. В апреле 2008 года состоялся первый релиз [5] нового варианта, IcedTea6, который основан на сборках Sun OpenJDK6, ответвлении OpenJDK с целью обеспечения совместимости с существующим JDK6. Он был выпущен в Ubuntu и Fedora в мае 2008 года. Пакет IcedTea в этих дистрибутивах был переименован в OpenJDK с использованием уведомления о торговой марке OpenJDK. В июне 2008 года сборка Fedora прошла тщательное тестирование TCK от Sun [6] на платформах x86 и x86-64 . IcedTea 2, первая версия на основе OpenJDK 7, была выпущена в октябре 2011 года. [7] IcedTea 3, первая версия на основе OpenJDK 8, была выпущена в апреле 2016 года. [8] Поддержка IcedTea 1 была прекращена в январе 2017 года. [9]
Этот проект был создан после выпуска компанией Sun в ноябре 2006 года своих HotSpot Virtual Machine и Java-компилятора под открытым исходным кодом, а также большей части исходного кода библиотеки классов в мае 2007 года. Однако части библиотеки классов, такие как рендеринг шрифтов, управление цветом и поддержка звука, были предоставлены только в виде фирменных бинарных плагинов. Это произошло потому, что исходный код этих плагинов был защищен авторским правом третьих лиц, а не Sun Microsystems. [10] [11] Выпущенные части были опубликованы в соответствии с условиями GNU General Public License , лицензии свободного программного обеспечения .
Из-за этих отсутствующих компонентов было невозможно построить OpenJDK только с компонентами свободного ПО . Sun стремилась договориться с держателями лицензий, чтобы разрешить выпуск этого кода под лицензией свободного ПО, или, в случае неудачи, заменить эти проприетарные элементы альтернативными реализациями. После замены плагинов библиотека классов стала бы полностью бесплатной. Sun продолжила использовать проприетарный код в своих сертифицированных бинарных выпусках. [12]
После объявления проект IcedTea был запущен и официально анонсирован 7 июня 2007 года [13] с репозиторием сборки, предоставленным командой GNU Classpath . Команда не могла назвать свой программный продукт « OpenJDK » , поскольку это торговая марка, принадлежащая Sun Microsystems . Вместо этого они решили использовать временное название «IcedTea» . [14]
5 ноября 2007 года Red Hat подписала как Соглашение о вкладе Sun, так и Лицензию OpenJDK Community Technology Compatibility Kit (TCK). В пресс-релизе говорилось, что это принесет пользу проекту IcedTea. [15] Саймон Фиппс предположил возможность размещения IcedTea на openjdk.java.net, [16] а Марк Рейнхольд отметил, что подписание соглашения о передаче авторских прав может позволить Red Hat предоставить части IcedTea Sun для включения в основной JDK. [17] [18]
С тех пор в OpenJDK попало несколько патчей от IcedTea. [19] [20]
В июне 2008 года было объявлено, что IcedTea6 (как упакованная версия OpenJDK на Fedora 9 ) прошла тесты (TCK) и может претендовать на звание полностью совместимой реализации Java 6. [21] Проект продолжает отслеживать разработку OpenJDK 6, OpenJDK 7 и OpenJDK 8 в отдельных репозиториях и вносить исправления в исходный код [22] по возможности; текущее состояние каждого исправления IcedTea поддерживается на вики IcedTea.
Проект IcedTea начинался с двух целей:
IcedTea также предоставляет более привычную систему сборки, предоставляя оболочку вокруг файлов сборки OpenJDK с использованием GNU Autotools . Это устраняет необходимость помнить многочисленные переменные среды для настройки сборки. (Текущие сборки IcedTea устанавливают около сорока таких переменных для базовой сборки OpenJDK.) Это также предоставило место для ранней работы над функциями, которые в конечном итоге появятся в основных сборках OpenJDK, таких как Gervill [26] , и для работы над портами на другие платформы.
IcedTea-web предоставляет бесплатный программный плагин Java Web-браузера. Он был первым, работающим в 64-битных браузерах под 64-битным Linux, функция, которую позже устранила фирменная JRE Sun. [27] Это делает его подходящим для поддержки апплетов Java в 64-битном Mozilla Firefox , среди прочего. IcedTea-web также предоставляет бесплатную реализацию Java Web Start ( Java Network Launching Protocol (JNLP) ). Sun обещала выпустить свой плагин и реализацию Web Start как часть OpenJDK. [28] Несмотря на давление со стороны сообщества, [29] Sun Microsystems не удалось сделать это до того, как компания была приобретена Oracle . Разработка плагина IcedTea-web продолжается, и последняя версия плагина следующего поколения поддерживает Chromium от Google [30] в дополнение к Firefox. С 2011 года разработка ведется в отдельном проекте IcedTea-Web. [31] По состоянию на апрель 2013 года Oracle сохранила кодовую базу плагина Java полностью собственной, [32] в отличие от остальной части OpenJDK. По состоянию на декабрь 2017 года IcedTea-Web 1.7.1 добавляет поддержку jdk9.
В октябре 2018 года Oracle объявила, что поддержка Java Web Start прекратится с выходом Java SE 11. [ 33] В марте исходный код icedtea-web был передан в дар проекту AdoptOpenJDK . [34] На основании этого исходные коды и управление проблемами IcedTea-Web были перенесены на GitHub. Одной из целей миграции является обеспечение интеграции для выпусков Java 8 AdoptOpenJDK и предоставление независимых от поставщика установщиков JDK для IcedTea-Web. Проект интеграции является результатом сотрудничества между сообществом AdoptOpenJDK, Red Hat и Karakun AG. Проект для установщиков называется OpenWebStart, и первую информацию о нем можно найти здесь.
С июня 2007 года IcedTea смог собрать себя и пройти значительную часть Mauve , набора тестов GNU Classpath. [35] В мае 2008 года в IcedTea была добавлена поддержка запуска регрессионных тестов Sun jtreg . [36]
IcedTea стал популярен среди разработчиков пакетов для следующих дистрибутивов Linux. В настоящее время (по состоянию на апрель 2012 г.):
OpenJDK содержал приблизительно (на момент выпуска в мае 2007 г.) 4% обремененного кода, [14] который был упакован только как бинарные плагины. Они были необходимы для сборки и использования JDK. OpenJDK 6 был выпущен всего с 1% обремененного кода, а обремененная поддержка звука также была с тех пор заменена. IcedTea6 основан на этом выпуске. IcedTea по-прежнему предоставляет свой собственный плагин для веб-браузера и поддержку Web Start, поскольку реализация Sun остается проприетарной .
IcedTea 1.x и 2.x могут компилировать OpenJDK с использованием решений на основе GNU Classpath, таких как GCJ , и при необходимости загружаться с помощью виртуальной машины HotSpot Java и компилятора Java javac, который он только что построил. [45] На данный момент для сборки IcedTea 3.x требуется использовать IcedTea 2.x или 3.x, либо сборку OpenJDK 7 или 8 из другого источника.
Кросс-архитектурные порты HotSpot (виртуальной машины OpenJDK) сложны, поскольку код содержит много языка ассемблера , в дополнение к ядру C++ . [46] Проект IcedTea разработал общий порт интерпретатора HotSpot, называемый Hotspot с нулевым ассемблером (или zero ), [47] практически без ассемблерного кода. [48] [49] Этот порт предназначен для того, чтобы позволить части интерпретатора HotSpot быть очень легко адаптированной к любой архитектуре процессора Linux . [50] Код Hotspot с нулевым ассемблером использовался для всех не- x86 портов HotSpot ( PPC , IA-64 , S390 и ARM ) с версии 1.6 IcedTea7. [51] [52] [53]
Проект IcedTea также разработал платформенно-независимый компилятор JIT под названием Shark для HotSpot, использующий LLVM , в дополнение к Zero . [49] [54] Он был включен в исходный OpenJDK в августе 2010 года. [55] JIT для ARM32 был впервые включен в 1.6.0 [56] и 2.1.1. [57] Собственный порт для AArch64 от Red Hat [58] появился в 2.4.6 [59] , а собственный порт PPC64 от SAP/IBM [60] будет включен в 2.5.0. [61] Порт PPC/AIX включен в исходный OpenJDK с версии 8u20, [62] а порт AArch64 будет включен с версии 9. [63]
Теперь Sun открывает исходный код большинства оставшихся компонентов JDK, за исключением нескольких обремененных компонентов, которые, как мы надеемся, с помощью сообщества могут быть переработаны, так что 100% общего кода OpenJDK будет доступно как свободное программное обеспечение... Sun продолжит использовать этот код в коммерческих выпусках, пока он не будет заменен полностью функциональными альтернативами с открытым исходным кодом
не будет включать Java Web Start в Java SE 11 (18.9 LTS) и более поздние версии.
Shark — это платформенно-независимый JIT для HotSpot, дополняющий интерпретатор нулевого ассемблера, который мы использовали
Мы начали экспериментальный порт OpenJDK без языка ассемблера, используя библиотеки свободного программного обеспечения для заполнения пробелов. Этот эксперимент развился в порт OpenJDK с нулевой сборкой – Zero – и его компилятора just-in-time Shark.