W świecie JVMowych newsów wyraźnie zauważyć można sezonowość. Po zeszłym tygodniu, wręcz przepełnionym interesującymi zapowiedziami, obecny wypada dosyć… tycio. Dlatego dziś, w nieco krótszej formie, porozmawiamy o nadchodzącym projekcie Liliput oraz przyjrzymy się nowemu Quarkusowi.
1. Czym jest projekt Liliput?
Ci, którzy mieli okazję przeczytać zeszłotygodniową edycje wiedzą, że wraz z JDK 19 nadchodzi okres powolnego “domykania” wielu projektów, które przez lata napędzały JVM do przodu. Tak naprawdę nowa wersja Javy nie przyniesie kroku milowego tylko dla Projektu Valhalla (mimo moich dużych oczekiwań jeszcze w styczniu). W zasadzie od początku roku nie mamy jakichś większych ogłoszeń, i może jest to po prostu cisza przed burzą. Na ten moment jednak nie ma za bardzo co liczyć, że ujrzymy na jesieni wersje testowe zbliżenia ze sobą świata prymitywów językowych i klas. Co ciekawe, jak to w zwyczaju twórców JVM, równolegle rozwijana jest druga inicjatywa mająca bardzo podobny cel jak Valhalla – zmniejszenie narzutu pamięciowego aplikacji napisanych w Javie.
Ponownie odwołując się do poprzedniej edycji, parę tygodni temu mieliśmy okazję opisać Wam projekt CRaC, który jest alternatywą (czy może raczej – uzupełnieniem) dla Application Class Data Sharing jeśli chodzi o umożliwienie aplikacjom Javowym lepszej elastyczności w środowisku Cloud Native/Serverless. Trochę podobnie wygląda sytuacja z projektem Liliput, który w nieco inny sposób chce wpłynąć na pamięciożerność JVMa. Otóż zamiast wprowadzać do ekosystemu wysoce wydajne, małe „obiekty” bez dziedziczenia (za to ze specjalnym sposobem upakowania ich w strukturze pamięci), celem Liliputa jest zmniejszenie rozmiaru nagłówków obiektów Java w maszynie JVM Hotspot ze 128 bitów do 64 bitów lub mniej. Ma to nie tylko zmniejszyć ilość zajmowanej przez Javę pamięci, ale także poprawić wydajności działania Garbage Collectora.
Twórcy niedawno pochwalili się pierwszymi wynikami, które są bardzo zachęcające. Otóż udało im się zmniejszyć nagłówki właśnie do oczekiwanych 64 bitów poprzez sprytne połączenie tak zwanych mark-words (używanych do przechowywania tożsamości obiektu, informacji o lockach i metadanych GC, domyślny hashcode) i wskaźników klas do jednej struktury. Oczywiście ma to swoje ograniczenia, przynajmniej w obecnym stadium: zmiany działają tylko w wypadku architektury 64-bitowej (co biorąc pod uwagę, że kilka nagłówków jest łączone, ma pewnie sporo sensu). Ograniczona została też długość hashcodów obiektów.
Zobaczymy, czy projekt Liliput okaże się być game-changerem dla maszyny wirtualnej. Z pewnością jednak jest to bardzo interesująca od strony inżynierskiej inicjatywa i na pewno będziemy ją dla Was śledzić.
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Wyszedł Quarkus 2.9
Dzisiaj to nawet Release Radar nie należy do za bogatych, ponieważ jedyną ciekawszą z ostatnio opublikowanych nowości jest nowy Quarkus.
Zacznijmy od ciepłej wody w klanie, czyli upgradu zależności. Jeśli chodzi o języki, mowa tu o Kotlin 1.6.20 i Scala 2.13, z na wpół oficjalnym rozszerzeniem dla Scali 3.0. Ciekawiej sytuacja wygląda w kwestii bibliotek – przykładowo, przeskok plikowej bazy danych H2 z 1.4 na 2.1 może w niektórych projektach spowodować “łamiące zmiany” – ale nie martwcie się, mam dla Was od razu Migration Guide (którego oryginalne release notes nie raczyły podrzucić).
Dobra, ale przejdźmy do tego, co nowe wydanie przynosi. Z pomiędzy innych funkcjonalności mocno wybijają się funkcjonalności związane z autentykacją użytkownika. Quarkus 2.9 dostarcza bowiem zarówno integrację z Web Authentication API (znanej także jako WebAuthn), czyli standardu stworzonemu przy współpracy z W3C jak i FIDO Alliance, jak i łatwiejszej integracji z najpopularniejszymi providerami OpenID.
Oprócz tego, w frameworku pojawiło się też kilka drobniejszych nowości. Użytkownicy Kafki ucieszą się ze wsparcia dla Confluent Schema Registry, a fani programowania reaktywnego z kompresji reaktywnych zapytań HTTP. Wisienką na torcie jest dodawanie nagłówków HTTP dla konkretnych ścieżek deklaratywnie (czy będąc precyzyjnym – z pomocą konfiguracji).
No, i to by było na tyle. Aczkolwiek już wiem, że za tydzień będzie mocniej – w czwartek premiera nowego Spring Boota, a wraz z nim kilku towarzyszących mu bibliotek. Stay Tuned!