Oracle na łamach stron projektu OpenJDK poinformowało o zamrożeniu listy nowości JDK 13. Ta referencyjna implementacja platformy Java SE weszła w fazę Rampdown Phase One (tzw. pochylnia) – i dzięki temu już wiemy, co 17 września tego roku przyniesie Java 13. Żadne dalsze funkcje nie trafią już na listę rzeczy do zrobienia, teraz tylko czas na poprawki.
Java 13 przyniesie pięć propozycji ulepszeń JEP (Java Enhancement Proposals), z czego dwie jako zapowiedzi:
- JEP 350: Dynamiczne archiwa CDS
- JEP 351: ZGC: uwolnienie niewykorzystanej pamięci
- JEP 353: Reimplementacja Legacy Socket API
- JEP 354: Wyrażenia przełączające (zapowiedź)
- JEP 355: Bloki tekstu (zapowiedź)
Omówimy je sobie po kolei:
JEP 350 ma na celu rozszerzenie klasy współdzielenia danych (CDS) aplikacji, aby umożliwić dynamiczną archiwizację klas na koniec wykonywania aplikacji Javy. Klasy archiwizowane powinny zawierać wszystkie załadowane klasy aplikacji i bibliotek, które nie znalazły się domyślnie w archiwum.
Odśmiecacz pamięci Garbage Collector Z po wprowadzeniu zmian z JEP 351 będzie zwracać niewykorzystaną pamięć sterty do systemu operacyjnego. Dotychczas tak nie było, co stanowiło pewien kłopot dla użytkowników płacących za wykorzystaną pamięć, np. w środowiskach chmurowych.
Celem ulepszenia JEP 353 jest zastąpienie implementacji API java.net.Socket i java.net.ServerSocket czymś prostszym i nowocześniejszym, co będzie łatwiejsze do odpluskwiania i utrzymania w przyszłości. Deweloperzy zapewniają, że nowa implementacja będzie dostosowana do interakcji z wątkami trybu użytkownika (fibers – włóknami), rozwijanymi obecnie w ramach projektu Loom.
Zapowiedzi nowych możliwości języka
Kolejne dwa ulepszenia to zapowiedzi funkcji, które w przyszłości staną się domyślną częścią języka.
JEP 354, czyli wyrażenia przełączające, już było ulepszeniem-zapowiedzią w Javie 12 (jako JEP 325). Tym razem deweloperzy Javy chcą zebrać opinie na temat stosowania wyrażenia switch oraz rozszerzonych oraz rozszerzonych instrukcji switch. Uzyskanie wartości z wyrażenia switch możliwe będzie za pomocą instrukcji yield. Więcej na temat tej nowej konstrukcji, przygotowującej w Javie grunt pod dopasowywanie wzorców (JEP 305), znaleźć można w dokumentacji.
Ostatnia z nowości-zapowiedzi to JEP 355. Text Blocks to po prostu wielowierszowe łańcuchy znaków, które pozwalają uniknąć stosowania większości sekwencji ucieczki, a także zapewniają automatyczne i jednolite formatowanie łańcucha. Wygląda to całkiem praktycznie, szczegóły oczywiście w dokumentacji.
Kompletny opis prac nad JDK 13 można znaleźć na stronie OpenJDK. Wydanie jest zaplanowane na 17 września. Zgodnie z oficjalną polityką wsparcia, będzie utrzymywane do marca 2020 roku.