Mrożona herbata - IcedTea

IcedTea dla OpenJDK 8
Deweloper(zy) Ścieżka klas GNU
Wersja stabilna
3.19.0 / 13 maja 2021 ( 2021-05-13 )
Magazyn icedtea .classpath .org /hg /icedtea8
Napisane w C , C++ i Java
System operacyjny Linux , *BSD , macOS , Windows , Solaris
Platforma IA-32, x86-64, ARM, AArch64, sparc, sparc64, ppc, ppc64, ppc64le, s390, s390x
Rodzaj Wirtualna maszyna Java i biblioteka Java
Licencja GNU GPL + wyjątek łączenia
Stronie internetowej icedtea .classpath .org
IcedTea dla OpenJDK 7
Deweloper(zy) Ścieżka klas GNU (z Red Hat do 2.6.22)
Wersja stabilna
2.6.26 / 5 lipca 2021 ( 05.07.2021 )
Magazyn icedtea .classpath .org /hg /icedtea7
Napisane w C , C++ i Java
System operacyjny Linux , *BSD , macOS , Windows , Solaris
Platforma IA-32, x86-64, ARM, AArch64, sparc, sparc64, ppc, ppc64, ppc64le, s390, s390x
Rodzaj Wirtualna maszyna Java i biblioteka Java
Licencja GNU GPL + wyjątek łączenia
Stronie internetowej icedtea .classpath .org
Mrożona herbata dla OpenJDK 6
Deweloper(zy) Red Hat i ścieżka klas GNU
Wersja stabilna
1.13.13 / 9 stycznia 2017 ( 09.01.2017 )
Magazyn icedtea .classpath .org /hg /icedtea6
Napisane w C , C++ i Java
System operacyjny Linux , *BSD , macOS , Windows , Solaris
Platforma IA-32, x86-64, ARM, sparc, sparc64, ppc, ppc64, s390, s390x
Rodzaj Wirtualna maszyna Java i biblioteka Java
Licencja GPL + wyjątek łączenia
Stronie internetowej icedtea .classpath .org
Iced Tea-Web
Deweloper(zy) Red Hat i ścieżka klas GNU
Wersja stabilna
1.8.4 ( binaria ) / 4 czerwca 2020 ( 2020-06-04 )
Magazyn github .com /AdoptOpenJDK /icedtea-web
Napisane w C++ i Java
System operacyjny Linux , *BSD , OS X , Windows , Solaris
Rodzaj Obsługa Java Web Start i wtyczka internetowa Java dla apletów
Licencja GPL + wyjątek łączenia
Stronie internetowej icedtea .classpath .org /wiki /IcedTea-Web
Mrożona herbata-dźwięk
Deweloper(zy) Red Hat i ścieżka klas GNU
Wersja stabilna
1.0.1 / 18 lipca 2014 ( 2014-07-18 )
Magazyn icedtea .classpath .org /hg /icedtea-sound /
Napisane w C i Java
System operacyjny Linux , *BSD , OS X , Windows , Solaris
Rodzaj Wsparcie dźwięku
Licencja GPL + wyjątek łączenia
Stronie internetowej icedtea .classpath .org /wiki /IcedTea-Sound

IcedTea jest budowa i integracja projekt OpenJDK uruchomiona przez Red Hata w czerwcu 2007. IcedTea zawiera również kilka bibliotek dodatek: IcedTea-Web jest to darmowe oprogramowanie wdrożenie Java Web Start i Java przeglądarka aplet wtyczki. IcedTea-Sound to zbiór wtyczek dla podsystemu dźwiękowego Java, w tym dostawcy PulseAudio , który był dołączony do IcedTea. Free Software Foundation zaleca, aby wszyscy programiści Java używać IcedTea jako ich środowiska programistycznego.

Historycznie, początkowym celem projektu IcedTea było sprawienie, by oprogramowanie OpenJDK, które firma Sun Microsystems wypuściła jako wolne oprogramowanie w 2007 roku, można było używać bez konieczności posiadania żadnego zastrzeżonego oprogramowania , a tym samym umożliwić dodawanie OpenJDK do Fedory i innych dystrybucji Linuksa, które nalegają na darmowe oprogramowanie. Cel ten został osiągnięty i wersja IcedTea oparta na OpenJDK została dołączona do Fedory 8 w listopadzie 2007 roku. W kwietniu 2008 roku ukazało się pierwsze wydanie nowego wariantu, IcedTea6, który jest oparty na kompilacjach OpenJDK6 firmy Sun, rozwidleniu OpenJDK w celu zachowania kompatybilności z istniejącym JDK6. Zostało to wydane w Ubuntu i Fedorze w maju 2008. Pakiet IcedTea w tych dystrybucjach został przemianowany na OpenJDK przy użyciu informacji o znaku towarowym OpenJDK. W czerwcu 2008 roku kompilacja Fedory przeszła rygorystyczne testy TCK firmy Sun na x86 i x86-64 . IcedTea 2, pierwsza wersja oparta na OpenJDK 7, została wydana w październiku 2011 r. IcedTea 3, pierwsza wersja oparta na OpenJDK 8, została wydana w kwietniu 2016 r. Obsługa IcedTea 1 została porzucona w styczniu 2017 r.

Historia

Projekt ten został stworzony po wydaniu przez firmę Sun w ramach licencji open source jego HotSpot Virtual Machine i kompilator Javy w listopadzie 2006 roku, a większość kodu źródłowego z klasy biblioteki w maju 2007. Jednakże, części biblioteki klas, takich jak renderowanie czcionek, zarządzanie kolorami i obsługa dźwięku były dostarczane tylko jako zastrzeżone wtyczki binarne. Wynikało to z faktu, że kod źródłowy tych wtyczek był chroniony prawami autorskimi stron trzecich, a nie Sun Microsystems. Wydane części zostały opublikowane na warunkach GNU General Public License , licencji wolnego oprogramowania .

Z powodu tych brakujących komponentów nie było możliwe zbudowanie OpenJDK tylko z komponentami wolnego oprogramowania . Firma Sun zamierzała wynegocjować z posiadaczami licencji, aby ten kod mógł zostać wydany na podstawie licencji wolnego oprogramowania lub, w przeciwnym razie, zastąpić te zastrzeżone elementy alternatywnymi implementacjami. Po wymianie wtyczek biblioteka klas byłaby całkowicie darmowa. Firma Sun nadal używa zastrzeżonego kodu w swoich certyfikowanych wersjach binarnych.

Po ogłoszeniu projekt IcedTea został rozpoczęty i został formalnie ogłoszony 7 czerwca 2007 r., wraz z repozytorium kompilacji dostarczonym przez zespół GNU Classpath . Zespół nie mógł nazwać swojego oprogramowania " OpenJDK ", ponieważ jest to znak towarowy należący do Sun Microsystems . Zamiast tego postanowili użyć tymczasowej nazwy „IcedTea” .

5 listopada 2007 firma Red Hat podpisała zarówno umowę współtwórcy firmy Sun, jak i licencję OpenJDK Community Technology Compatibility Kit (TCK). Komunikat prasowy sugerował, że przyniesie to korzyści projektowi IcedTea. Simon Phipps zasugerował, że IcedTea może być hostowana na openjdk.java.net, a Mark Reinhold zauważył, że podpisanie cesji praw autorskich może umożliwić Red Hatowi przesyłanie części IcedTea do Sun w celu włączenia ich do głównego nurtu JDK.

Od tego czasu do OpenJDK trafiło wiele łat z IcedTea.

W czerwcu 2008 roku ogłoszono, że IcedTea6 (jako spakowana wersja OpenJDK w Fedorze 9 ) przeszła testy (TCK) i może twierdzić, że jest w pełni kompatybilną implementacją Java 6. Projekt kontynuuje śledzenie rozwoju OpenJDK 6, OpenJDK 7 i OpenJDK 8 w osobnych repozytoriach i w miarę możliwości dostarcza poprawki z powrotem; aktualny stan każdej łatki IcedTea jest utrzymywany na wiki IcedTea.

Celuje

Projekt IcedTea rozpoczął się od dwóch celów:

  1. aby możliwe dla GNU Compiler for Java , aby skompilować kod OpenJDK. OpenJDK przedstawił pytanie dotyczące ładowania początkowego , które zostało napisane w Javie. Dlatego programiści potrzebowali już działającego kompilatora i środowiska uruchomieniowego Java, aby zbudować OpenJDK. Pierwotnie tylko istniejący, zastrzeżony Sun JDK spełniał ten wymóg. Darmowe dystrybucje, takie jak Fedora, nie mogą polegać na własnościowych narzędziach w celu budowania pakietów, więc projekt IcedTea musiał umożliwić kompilację kodu przy użyciu wolnego oprogramowania. Kiedy to zostało zrobione, powstała wersja OpenJDK IcedTea mogła zostać użyta do kompilacji, unikając w ten sposób potrzeby używania niewolnego oprogramowania do przyszłej kompilacji.
  2. udostępnienie darmowych odpowiedników wtyczek binarnych, które istniały w OpenJDK, ponieważ Sun nie był w stanie udostępnić całego kodu źródłowego. Od marca 2008 nie jest to już konieczne dla IcedTea6, ponieważ kompilacje OpenJDK 6 mogą być budowane bez wtyczek binarnych. Wraz z wydaniem b10, które zastępuje zastrzeżoną obsługę dźwięku tą z projektu Gervill, można zbudować pełną implementację Javy 1.6 bez wtyczek binarnych. Jedyna pozostała wtyczka binarna dotyczy obsługi SNMP , która jest opcjonalnym dostawcą architektury JMX i nie jest częścią specyfikacji. Począwszy od b53 w kwietniu 2009, to samo dotyczy OpenJDK 7. Poza rdzeniem OpenJDK, wtyczki binarne są nadal wymagane do korzystania z apletów Java Web Start, które działają za pomocą wtyczki przeglądarki (w odróżnieniu od wtyczek podstawowych omówionych wcześniej); od 2013 roku jedynym dostępnym kodem źródłowym, który realizuje ten cel, jest projekt IcedTea-Web.

Inne korzyści

IcedTea dostarcza również bardziej znany system kompilacji, dostarczając wrapper wokół plików makefile OpenJDK przy użyciu GNU Autotools . Eliminuje to potrzebę zapamiętywania wielu zmiennych środowiskowych do konfigurowania kompilacji. (Obecne kompilacje IcedTea ustawiają około czterdziestu takich zmiennych dla bazowej kompilacji OpenJDK.) Zapewnia również miejsce do wczesnych prac nad funkcjami, które ostatecznie pojawią się w głównych kompilacjach OpenJDK, takich jak Gervill, oraz do pracy nad portami na inne platformy.

Iced Tea-Web

Wtyczka IcedTea NPR (oparta na IcedTea6) wymieniona w Debian Iceweasel 6.0.2 (Knoppix 6.7.1)

IcedTea-web udostępnia darmową wtyczkę Java do przeglądarki internetowej. Był pierwszym, który działał w 64-bitowych przeglądarkach pod 64-bitowym systemem Linux, funkcja ta została później rozwiązana przez zastrzeżone środowisko JRE firmy Sun. Dzięki temu można włączyć obsługę apletów Java między innymi w 64-bitowej przeglądarce Mozilla Firefox . IcedTea-web udostępnia również bezpłatną implementację Java Web Start ( Java Network Launching Protocol (JNLP) ). Sun obiecał wydać wtyczkę i implementację Web Start w ramach OpenJDK. Pomimo nacisków społeczności, Sun Microsystems nie udało się tego zrobić, zanim firma została przejęta przez Oracle . Prace nad wtyczką internetową IcedTea trwają nadal, a najnowsza wersja wtyczki nowej generacji obsługuje Chromium firmy Google oprócz Firefoksa. Od 2011 roku rozwój odbywa się w osobnym projekcie IcedTea-Web. Od kwietnia 2013 r. Oracle zachował w pełni zastrzeżoną bazę kodu wtyczki Java, w przeciwieństwie do pozostałej części OpenJDK. Od grudnia 2017 r. IcedTea-Web 1.7.1 dodaje obsługę jdk9.

W październiku 2018 r. firma Oracle ogłosiła, że ​​publiczne wsparcie Java Web Start zakończy się wraz z Java SE 11 . W marcu kod źródłowy icedtea-web został przekazany do projektu AdoptOpenJDK . Na tej podstawie źródła i zarządzanie problemami IcedTea-Web zostały przeniesione na GitHub . Jednym z celów migracji jest zapewnienie integracji z wydaniami Java 8 AdoptOpenJDK oraz dostarczenie niezależnych od dostawców JDK instalatorów dla IcedTea-Web. Projekt integracji jest wynikiem współpracy społeczności AdoptOpenJDK, RedHat i Karakun AG . Projekt instalatorów nazywa się OpenWebStart i pierwsze informacje można znaleźć tutaj .

Postęp i dostępność

Od czerwca 2007, IcedTea była w stanie sama zbudować i przejść znaczną część Mauve , zestawu testowego GNU Classpath. W maju 2008 do IcedTea dodano obsługę testów regresji Sun jtreg .

IcedTea stała się popularna wśród opiekunów pakietów dla następujących dystrybucji Linuksa. Obecnie (stan na kwiecień 2012):

  • IcedTea jest domyślną JVM w Ark Linux i Arch Linux .
  • Można go zbudować i uruchomić pod Debianem . Pakiety weszły w stan niestabilny 12 lipca 2008 r.
  • IcedTea[7] była dostępna w Fedorze 8, a IcedTea6 pojawiła się w Fedorze od 9 do 17 jako java-1.6.0-openjdk. Pakiet java-1.7.0-openjdk używający lasu OpenJDK IcedTea 2.x, ale nie jego systemu kompilacji, pojawił się po raz pierwszy w Fedorze 16.
  • Pakiety binarne i źródłowe dla IcedTea 3.x są dostępne w oficjalnym repozytorium Gentoo . Pakiet źródłowy dla IcedTea 2.x jest nadal utrzymywany w repozytorium nakładek Java. Instalacja aplikacji Java domyślnie pobiera IcedTea zamiast oracle-jdk, ponieważ można ją zainstalować bez dodatkowej pracy użytkownika, ponieważ użytkownicy muszą ręcznie wyrazić zgodę na umowę EULA Oracle, aby pobrać oracle-jdk.
  • IcedTea jest dostępna w Ubuntu 7.10 (Gutsy Gibbon), z repozytorium „universe”, a IcedTea6 w 8.04 (Hardy Heron). Począwszy od Ubuntu 11.04 dostępna jest tylko IcedTea.

Architektura

OpenJDK zawierał w przybliżeniu (w momencie wydania w maju 2007) 4% obciążonego kodu, który był spakowany tylko jako wtyczki binarne. Były one wymagane do zbudowania i używania JDK. OpenJDK 6 został wydany z tylko 1% obciążonym kodem, a obsługa obciążonego dźwięku również została zastąpiona. IcedTea6 jest oparty na tym wydaniu. IcedTea nadal zapewnia własną wtyczkę do przeglądarki internetowej i obsługę Web Start, ponieważ implementacja Suna pozostaje zastrzeżona .

IcedTea 1.x i 2.x mogą kompilować OpenJDK przy użyciu rozwiązań opartych na GNU Classpath, takich jak GCJ i opcjonalnie ładują się same, używając wirtualnej maszyny HotSpot Java i kompilatora Java Java, który właśnie zbudował. Na razie budowanie IcedTea 3.x wymaga użycia IcedTea 2.x lub 3.x albo kompilacji OpenJDK 7 lub 8 z innego źródła.

Obsługa platformy

Międzyarchitekturowe porty HotSpot (wirtualnej maszyny OpenJDK) są trudne, ponieważ kod zawiera dużo języka asemblera , oprócz rdzenia C++ . Projekt IcedTea opracował ogólny port interpretera HotSpot o nazwie zero-assembler Hotspot (lub zero ), prawie bez kodu asemblera. Ten port ma na celu umożliwienie łatwego dostosowania części interpretera HotSpot do dowolnej architektury procesora Linux . Kod Hotspota zerowego asemblera został użyty dla wszystkich portów HotSpota innych niż x86 ( PPC , IA-64 , S390 i ARM ) z wersji 1.6 IcedTea7.

W ramach projektu IcedTea opracowano również niezależny od platformy kompilator just-in-time o nazwie Shark dla HotSpot, wykorzystujący LLVM , jako uzupełnienie Zero . Zostało to uwzględnione w OpenJDK w sierpniu 2010 roku. JIT dla ARM32 został po raz pierwszy zawarty w wersjach 1.6.0 i 2.1.1. Natywny port do AArch64 z Red Hata pojawił się w 2.4.6, a natywny port PPC64 z SAP/IBM będzie zawarty w 2.5.0. Port PPC/AIX jest dołączony do OpenJDK od wersji 8u20, a port AArch64 będzie dołączany od wersji 9.

Zobacz też

Bibliografia

Linki zewnętrzne