Jest to kolejny tydzień w którym to Javowy świat nie doczekał się zbyt dużo wiadomości, ale myślę że i tak będziecie zadowoleni czytając o zmianach w tworzeniu desktopowych aplikacji na MacOS oraz sposobach monitoringu aplikacji webowych. Zapraszamy do lektury!
1. Project Lanai, Jetpack Compose i przyszłość IntelliJ IDEA
Mimo, że tydzień należy do wyjątkowo hmmm… spokojnych, Jetbrains postanowiło nam dostarczyć nieco wrażeń.
Opisywany dzisiaj JEP 382: New macOS Rendering Pipeline (no bo czym byłby wtorek bez kolejnego JEPa) jest dosyć szczególny. To prawdopodobnie jeden z tych rzadkich przypadków, gdy większość z nas nigdy nie będzie miała okazji dotknąć tego proposala jako programista, za to bardzo wielu (o ile używają MacBooków) będzie jego beneficjentami jako użytkownicy.
Nie jest to pierwszy raz, kiedy mamy okazję wspomnieć o Projekcie Lanai, ale w związku z tym, że jego zastosowanie jest relatywnie niszowe zakładam, że większość z was nigdy o nim nie słyszała/dawno wyparło z pamięci. Otóż w odróżnieniu od takiego Looma, czy Ambera, cel Lanaia jest relatywnie wąski – “naumieć” Javę używać Metala – nowoczesnego API do renderingu udostępnionego przez Apple. Według firmy z Cupertino, Metal charakteryzuje się zarówno znacznie efektywniejszym wykorzystaniem zasobów systemu, jak i obietnicą kompatybilności z wszystkimi przyszłymi zmianami sprzętowym. Nowy pipeline renderujący ma początkowo żyć równolegle z, a docelowo zastąpić ten oparty na OpenGLu (od 2018 technologia ta na jest zdeprecatowana w komputerach z MacOS). Jest to o tyle istotne, że zmiana ta zaafektuje każdego używającego Intellij Idea i jego pochodne – oprogramowanie to używa bowiem toolkitu Swing UI, który będzie jednym z głównych beneficjentów opisywanego JEP 382.
To jednak nie koniec nowości – otóż miniony tydzień przyniósł również nowy, trzeci “Milestone” Jetpack Compose for Desktop, mający swoje korzenie w Androidzie, framework do tworzenia aplikacji okienkowych, będący alternatywą do wspomnianego Swinga. Prawdopodobnie nie informowaliśmy o tak drobnym kroczku w jego rozwoju (większość zmian to dosyć niskopoziomowe ulepszenia w procesie renderowania komponentów), gdyby nie jedna niezwykle interesująca notka. Otóż od nowego wydania, Jetpack Compose for Desktop może być używany do tworzenia pluginów do Intellij. Mimo, że Jetbrains nigdy oficjalnie nie dzieliło się planami przeniesienia swojego sztandarowego IDE na ten framework, ciężko nie traktować tej zapowiedzi jako przymiarek do takowej migracji. Byłby to z pewnością duży krok dla całego projektu.
Żeby tego było mało, również w wersji Androidowej, Jetpack Compose doczekał się dużego ogłoszenia. Opublikowana bowiem została wersja Beta tego rozwiązania, wraz z wsparciem dla korutyn, nowym API do animacji oraz bardziej funkcjonalnym preview komponentów. To jednak nie wszystko – pojawiła się też zapowiedź wersji 1.0, która do rąk developerów ma też trafić przed końcem roku.
A na koniec ciekawostka – wczoraj w nocy naszego czasu ukazał się Early Access JDK-17, zawierając testową wersję opartego na Metalu pipeline renderującego. Także jak ktoś ma okazję się pobawić – zapraszam do pobierania
Źródła:
- Jetpack Compose for Desktop: Milestone 3 Released
- Project Lanai
- JEP 382: New macOS Rendering Pipeline
- JDK 17 Early-Access Builds
- Announcing Jetpack Compose Beta!
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Jak działa monitoring w najpopularniejszych JVMowych frameworkach webowych? ️♀️
Po raz kolejny mistrz unikalnych treści, Nicolas Fränkel przynosi nam bardzo ciekawy artykuł – tym razem jest to analiza tego, jak najpopularniejsze frameworki Javowe podchodzą do tematu monitoringu. O ile z punktu widzenia wydaje się być to relatywnie nudne, o tyle z tekstu klaruje się wyraźny podział i rozłam w społeczności.
Jeżeli chodzi o Spring Boota oraz Micronauta, tutaj sprawa jest dosyć prosta – oba rozwiązania publikują możliwość pobrania ich wewnętrznych metryk za pomocą udostępnionych przez nie endpointów, ale również przez Java Management Extensions (JMX). Pozwala to na pobieranie metryk poprzez podpięcie się bezpośrednio do maszyny wirtualnej. Rozwiązania zasilane są odpowiednio przez biblioteki Actuator oraz Micrometer.
O wiele ciekawiej sprawa prezentuje się w wypadku rozwiązań opartych o Jakartę EE. Tutaj zarówno Quarkus, jak i Helidom, które to znalazły swoje miejsce w artykule, mogą poszczycić się wsparciem dla standardu MicroProfile, będący sam w sobie parasolką nad mnogością różnych API. Co było moim wielkim zaskoczeniem to fakt, jak ubogie możliwości w stosunku do np. takiego Actuatora, daje standard Jakarty. Otóż poza standardowym /health i /metrics, tak naprawdę nie ma on wiele ciekawego do zaoferowania, gdy konkurencja np. pozwala na zmianę poziomu logowania czy dostęp do danych wątków.
Postanowiłem zrobić mały research i okazuje się, że w obecnym momencie sugerowanym rozwiązaniem ze strony Quarkusa jest użycie Micrometera. Pokazuje to dobitnie, jak bardzo w tyle została uwolniona przez Oracle specyfikacja.
Mimo, że przedstawiłem Wam TL/DR wersję artykułu, bardzo polecam oryginał. Zawiera on klarowną tabelę, porównującą wspomniane rozwiązania funkcja po funkcji.