Java 16 przyniesie jeszcze więcej zmian
Java Development Kit (JDK) 16 zaczyna powoli nabierać kształtu i ma już takie propozycje zmian w swojej technologii, jak obsługa funkcji języka C++ 14 w kodzie źródłowym JDK C++, nowy sposób alokacji pamięci metaspace oraz nowe API do obsługi wektorów. JDK 16 będzie kolejną implementacją następnej standardowej wersji Javy i, biorąc pod uwagę 6-miesięczny cykl wydań, powinna się pojawić w marcu 2021 (ponieważ JDK 15 wyszło we wrześniu 2020).
Do dzisiaj w JDK 16 pojawiło się 8 nowych propozycji dotyczących rozwoju standardowej wersji Javy. Poniżej przyjrzymy się kilku najciekawszym zamianom.
Elastyczny metaspace
Elastyczny metaspace zwraca niewykorzystaną pamięć metadanych klas HotSpot VM do systemu operacyjnego w szybki sposób. Spowoduje to, że metaspace mniej będzie obciążać pamięć, ale zostanie przy okazji uproszczony kod dotyczący tej części. Metaspace miało w przeszłości trochę problemów z wysokim zużyciem pamięci sterty. Celem jest tutaj zatem zastąpienie obecnego alokatora pamięci takim, który wykorzystuje algorytm bliźniaków, dzielący pamięć na partycje, w celu łatwiejszego zarządzania nią.
Takie podejście było już używane np. w kernelu Linuksa.
Funkcje C++ 14
Umożliwienie działania funkcji języka C++ 14 w kodzie źródłowym JDK C++ jest następną propozycją zmiany w Javie. Zmiana ta ma również dać wskazówki na temat tego, których funkcji tego języka należy używać w HotSpot VM.
Do momentu JDK 15, funkcje C++ w JDK były ograniczone do standardów języka C++98/03.
Wsparcie JDK dla platformy Windows/AArch64
Windows/AArch64 stało się dosyć istotną platformą - jest na nią teraz duże zapotrzebowanie. Przeniesienie tam JDK jest już prawie zakończone, ale celem tej propozycji jest raczej integracja portowania z głównym repozytorium JDK.
Przeniesienie JDK do dystrybucji Linuksa
Propozycja ta polega na sportowaniu JDK do Alpine Linux oraz innych dystrybucji, które korzystają z musl jako swojej głównej biblioteki C w architekturach x64 oraz AArch64.
Musl jest linuksową implementacją funkcji standardowej biblioteki opisanych w standardach ISO C oraz Posix. Alpine Linux jest natomiast dystrybucją szeroko stosowaną przy deploymencie w chmurze, mikroserwisach oraz środowiskach kontenerowych ze względu na mały rozmiar obrazów.
Migracja repozytoriów OpenJDK
Repozytoria kodu źródłowego OpenJDK mają zaliczyć migrację z Mercurial (czyli rozproszonego, międzyplatformowego systemu kontroli wersji napisanego głównie w Pythonie) do Git. Propozycja ta jest również powiązania z udostępnieniem kodu źródłowego JDK 16 na GitHubie.
Podsumowanie
Wczesne wersje JDK 16 dla Linuksa, Windowsa i MacOS można znaleźć na tej stronie. Co więcej, JDK będzie kolejną implementacją wspieraną przez Oracle przez następne pół roku po wydaniu. We wrześniu 2021 powinno się natomiast pojawić wydanie JDK 17, które zostało określone jako LTS (Long-Term Support) - będzie ono wspierane przez 8 lat od wydania.
Obecne wydanie LTS, czyli Java 11, zostało wypuszczone we wrześniu 2018 roku.