W dniu dzisiejszym zagregowaliśmy dla Was najnowsze informacje na temat Projectu Valhalla, a także przeglądówkę bibliotek do Fault Tolerance. Oprócz tego – Micronaut pozyskał bardzo ważnego sojusznika.
1. Project Valhalla: Status Update 🪓
Ostatnimi czasy bardzo aktywni stali się twórcy Projektu Valhalla, dlatego też zdecydowałem się dzisiaj podsumować ostatnie nowości – a jest ich trochę, co w mojej głowie budzi nadzieję, że JDK 19 przyniesie nam jej pierwsze ślady, choćby w formie jakiegoś preview.
Od dłuższego czasu aktualizowany są dwa główne powiązane z Valhallą JEPy – JEP 401: Primitive Classes (Preview) i JEP 402: Classes for the Basic Primitives (Preview), a także pozostający ciągle w formie draftu JEP draft: Value Objects (Preview). Sporej aktualizacji doczekało się też State of Valhalla – cykl postów blogowych napisanych przez Briana Goetza, który stanowi de facto swoistą biblię całego projektu.
- State of Valhalla, Part 1: The Road to Valhalla
- State of Valhalla, Part 2: The Language Model
- State of Valhalla, Part 3: The JVM Model
Dokumenty zostały zaktualizowane o nowe propozycje API, nazewnictwa, ale także dalsze doprecyzowania i usprawnienia w cały modelu. Nie jestem w stanie skrócić tutaj w przystępnej formie ogromu informacji wylewających się z ostatnich publikacji, ale po mojej lekturze zarówno JEPów, jak i dokumentów, najciekawszym nowym dodatkiem są chyba Value Recordy.
Bardzo mylące we wszelkich dyskusjach na temat Rekordów w Javie był zawsze fakt, że choć ze względu na swoją “finalność” mają one wiele wspólnego z klasami prymitywnymi tak naprawdę w dalszym ciągu są normalnymi klasami, posiadającymi tożsamość – stanowią co najwyżej “słodzik składniowy”, nie dając realnych uzysków wydajnościowych. To odróżnia je od klas prymitywnych, które w zamian za porzucenie konceptu referencji (a co za tym idzie – tożsamości klasy) dają również spory uzysk jeśli chodzi o performance. Dlatego twórcy proponują kolejną iterację nad tym konceptem – Value Recordy:
value record NameAndScore(String name, int score) { }
Value Recordy łączą koncepcje rekordów z uzyskiem wydajnościowym jaki przynosi Valhalla. W zamian stają się jedną z najbardziej ograniczonych struktur, tracąc zarówno tożsamość, jak i zdolność oddzielenia API od implementacji.
A na koniec – nareszcie dowiedziałem się, skąd wzięła się nazwa Valhalla. Otóż okazuje się, że jest to podobno zbitka słów val-halla. Val oznacza w niej oczywiście Value Type, a halla w tym kontekście to nie tyle piekło, co hall=dom. Ma to zaskakująco dużo sensu.
Jak widzicie, jest tego trochę. Ja aktualnie czekam na jakiekolwiek wydanie testowe – ostatnia iteracja pochodzi bowiem jeszcze z 2019 roku, a biorąc pod uwagę fakt, że oparta była jeszcze na JDK 14, mówimy tutaj o już jednak sporej prehistorii – choćby wspomniane wyżej rekordy nie miały prawa zaistnieć w prezentowanej powyżej formie. JDK jednak mocno poszedł ostatnio do przodu.
Źródła
- State of Valhalla, Part 1: The Road to Valhalla
- State of Valhalla, Part 2: The Language Model
- State of Valhalla, Part 3: The JVM Model
- JEP 401: Primitive Classes (Preview)
- JEP 402: Classes for the Basic Primitives (Preview)
- JEP draft: Value Objects (Preview)
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Gradle dołącza do Micronaut Foundation 🐘
Drugi z dzisiejszych Newsów dotyczyć będzie dość ciekawego mariażu.
Na rynku Frameworków javowych ostatnio robi się dość… ciasno. Poszczególne rozwiązania – Spring, Micronaut, Quarkus, Helidon – ścigają się między sobą już nawet nie pod względem dużych “funkcjonalnych” różnic (każde z rozwiązań posiada takie oczywistości jak wsparcie GraalVM, konteneryzacji czy Kotlina), co raczej na poziom integracji z całościowym programistycznym ekosystemem. W tym kontekście, bardzo interesującym jest świeżo ogłoszony, nowy sojusznik Micronauta.
Framework, będący duchowym spadkobiercą Grailsów, w 2020 roku ogłosił powstanie fundacji mającej wspierać jego rozwój. Lista jej członków do tej pory wyglądała dość smutno, jednak w końcu doczekali się interesującego “logo” i pierwszego naprawdę rozpoznawalnego partnera. Mowa tutaj o Gradle.
Najszybciej rosnący build tool świata JVM został pierwszym partnerem infrastrukturalnym projektu i pomógł zespołowi Micronauta skrócić czasy kompilacji i uruchamiania testów. Dzięki wsparciu Gradle, usprawnieniu uległa też zdolność twórców frameworku do precyzyjnej replikacji błędów. Oprócz merytorki, Gradle udostępnił również przestrzeń serwerową w ramach swojej chmury(?) Gradle Enterprise.
Źródła
Zainstaluj teraz i czytaj tylko dobre teksty!
3. Przegląd bibliotek do Fault Tolerance 🤘
A na koniec – świetna, szybka przeglądówka bibliotek od Nicolasa Fränkela.
Były czasy, gdy król tak zwanego “Fault Tolerance” w ramach JVM był tylko jeden – tym światkiem niepodzielnie rządził Hystrix od Netflixa. Ten jednak od pewnego czasu przestał być wspierany i wyewoluował w Resilience4J. To jednak otworzyło przestrzeń dla rozwiązań konkurencyjnych, która to została skwapliwie wykorzystana zarówno przez bardzo podobny do Resilience4J w swoim działaniu Failsafe, jak i twórców Jakarty EE i MicroProfil. Ci ostatni zaproponowali bowiem całą specyfikację w ramach ichniejszego standardu.
Tekst Nicolasa to przeglądówka. Nie spodziewajcie się, że w pełni nauczycie się z niego niuansów każdego z rozwiązań, ale prezentuje on najważniejsze cechy każdego z rozwiązań, jak również główne różnice pomiędzy nimi. Całość lektury to dosłownie parę minut, a zapewni wystarczające podstawy, aby móc zacząć kopać “głębiej”.