W dniu dzisiejszym gwiazdą jest Release Radar i bardzo ciekawe wiadomości związane z Vaadinem. Czym jest Vaadin? Tego i więcej dowiecie się z bieżącej edycji.
1. Co Java 18 przynosi w kontekście bezpieczeństwa i Garbage Collectorów?
Kurz opadł, nowa Java się pojawiła, najwyższy czas więc na wysyp publikacji opracowujących nowe wydanie w szczegółach.
I tak doczekaliśmy się wydań dwóch regularnych serii, towarzyszących premierze każdego JDKa. Sean Mullan opublikował przegląd nowości dla JVM od strony bezpieczeństwa. Jak zwykle możemy znaleźć masę detali jeśli chodzi o aktualizacje poszczególnych algorytmów kryptograficznych czy metod enkrypcji, tym razem również doszło do drobnych zmian w toolingu, jak choćby w jarsigner, w którym wyłączona została możliwość podpisywania JAR-ek algorytmem SHA-1. Mamy też do czynienia z pokłosiem deprekacji Security Managera w ramach Javy 17. Pojawił się szereg nowych API, które w założeniu mają zastępować część jego funkcjonalności.
Wydawało się, że Java 18 to wydanie, które nie zawiera jakichś znaczących zmian jeśli chodzi o same Garbage Collectory, ale fakt deprekacji Finalizerów odcisnął swoje piętno na tym wydaniu. Thomas Shatzl na swoim blogu twierdzi, że o ile jeszcze nie jest to możliwe w tym momencie, to już niedługo twórcy “odśmiecaczy” będą mogli pozbyć się masy powiązanego z nimi Legacy, co posłuży nam wszystkim. Oprócz tego, jego publikacja zawiera wiele łatwych do przeoczenia drobnych zmian w poszczególnych GC, które już teraz mogą wpłynąć na wydajność naszych aplikacji.
Oczywiście, zewnętrzni providerzy też dość szybko zareagowali na nowy JVM i opublikowali swoje własne wydania. I tak już teraz możecie używać z “osiemnastki” Correto dystrybuowanej przez Amazona oraz Liberica JDK 18 od BellSoft. Podejrzewam, że na dniach można spodziewać się wysypu wydań od pozostałych providerów, przynajmniej, tych którzy nie wydają tylko wersji LTS jak np. Alibaba ze swoją Dragonwell.
Źródła
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Ciąg dalszy historii Javowego GUI – macOS i Cross-Platform
Rzadko kiedy zdarza nam się polecać jedną serię artykułów więcej niż raz, ale wspominki z historii rozwoju javowych GUI są chyba najlepszym kontentem dotyczącym tego języka, jaki powstał od początku roku i już w tej chwili mocnym kontenderem do nagrody najlepszego JVM-owej serii 2022. Ja wiem, mało to praktyczne – trochę wspominek, dodatkowo dotyczących tematu który #nikogo, czyli pisania aplikacji desktopowych, ale wciągnąłem się w tą historię tak mocno, że w zasadzie wyczekuje każdego kolejnego odcinka.
Zainteresowanie potęguje fakt, że autor (będący twórcom jDeploy) zaczyna robić piękne “skoki w bok”. Poświęcił między innymi cały odcinek chaosowi, jakim był “unbundling” Javy z macOS związany z premierą ichniejszego AppStore (nawet nie spodziewałem się, jak wiele “alternatywnych” JVM posiadał system od Apple), a także pochylił się nad cross-platformowym (nie powiązanym z Win32 UI czy Cocoa z macOS) tworzeniem javowego GUI na przestrzeni lat. Ten ostatni temat wydawał mi się czymś już dość oklepanym (skupia się głównie na Swingu i JavieFX), ale nic bardziej mylnego – autor, ze względu na fakt, że większość swojej kariery spędził pisząc właśnie tego typu aplikacje, dzieli się bardzo interesującymi szczegółami o rozwoju tego eksystemu, o których nie miałem pojęcia.
Źródła
- The Decline and Fall of Java on the Desktop Part 2 (2004-2007)
- Building Cross-platform UIs in Java
- The Golden Age of Java on the Mac
Zainstaluj teraz i czytaj tylko dobre teksty!
3. Release Radar: Micronaut, Vaadin (i Hilla), oraz pierwsze wydanie Clojure od czterech lat.
A na koniec Release Radar – bo dawno takowego nie było i trochę rzeczy się nam nazbierało.
Micronaut 2.4
Zacznijmy od sztampy, czyli nowego wydania Micronauta. Przynosi on parę drobiazgów (jak zmiana sposobu warunkowego ładowania “beanów”), wsparcie dla kompilacji Ahead-of-Time również dla Mavena (takowa była dostępna historycznie jedynie dla Gradle), a także wsparcie dla nowego formatu konfiguracji TOML. Z mojej jednak perspektywy najciekawszą zmianą jest jednak dodanie wsparcie do MongoDB w ramach Micronaut Data. Wspiera ona wszystkie możliwości jakie daje sterownik w wersjach JDBC/R2DBC.
Vaadin 23
Drugim, niszową, ale znacznie ciekawszą nowością jest nowy Vaadin w wersji 23.0. Czym jest Vaadin, wielu z Was zapyta? W czasach, kiedy wszystkim wydawało się, że generowanie frontendu z Javy to jest rewelacyjny pomysł (a biorąc tymczasowy szał na Railsy – trudno się tym ludziom było dziwić), w świecie JVMa powstał Vaadin, który miał zająć się minimalizacją znajomości frontendu przez osoby chcące stworzyć pełną aplikację webową. Czasy mamy trochę inne i trochę nauczyliśmy się, że dedykowany inżynier frontendu to jednak jest dobry pomysł, ale nie sprawia to, że Vaadin daje za wygraną.
Nowe wydanie min. porzuca wsparcie dla Javy starszej niż 11, a także zmiany w design systemie Vaadin to jednak nie tylko sam core, ale także cała platforma, posiadająca dwa główne, konkurencyjne Frameworki. Pierwszym z nich jest Flow, który służy do generowania kodu JavaScript w 100% z poziomu Javy, a “dwudziestka trójka” przynosi min. pełne wsparcie npm i Vite – coraz popularniejszego narzędzia dla budowanie aplikacji frontendowych.
To jednak nie wszystko. W ramach nowego wydanie, Vaadin zaprezentował więc Hille, nowy framework webowy dla programistów Java, który łączy backend ze Spring Boot z TypeScript, dając nam “pełnostosową” aplikację, jeśli jednak frontendem się tak bardzo nie brzydzimy . Znany wcześniej jako Vaadin Fusion, Hilla oferować ma wiele możliwości upraszczających tworzenie aplikacji biznesowych, takich jak ujednolicona konfiguracja projektu dla Java i TypeScripta. Posiada też bogaty zestaw komponentów UI. Wygląda to całkiem ciekawie, aczkolwiek dzisiaj osoby poszukujące rozwiązania FullStack, pewnie zdecydują się prędzej na JHipstera.
Przyznam, że z Vaadinem miałem styczność raz, w pierwszej pracy i używało się go bardzo przyjemnie – ale weźcie pod uwagę, że to było 10 lat temu, a alternatywe stanowiło GWT, JSF oraz czysty jQuery.
Clojure 1.11
Ostatnim, ale zdecydowanie nie najmniejszym z nowych wydań jest nowa wersja języka Clojure! Czasy, kiedy byłem z Clojure na bieżąco trochę już minęły, ale poprzednia nowa wersja pojawiła się jeszcze w roku 2018, więc “clojurowcom” przyszło trochę poczekać.
Clojure 1.11 zapewnia nową składnię wywoływania argumentów słów kluczowych – funkcje, które przyjmują argumenty słów kluczowych, mogą teraz otrzymywać mapę zamiast par klucz/wartość. Pojawiła się też nowa przestrzeń nazw (w uproszczeniu – pakiet) clojure.math, zapewniająca funkcje opakowujące metody dostępne w java.lang.Math dla “longów” i “dubli”. Dodatkowo, istnieje teraz opcja aliasowanie przestrzeni nazw w sposób, który nie powoduje błędu, jeżeli dany namespace nie jest dostępny. Do samego core języka dodano zaś sporo nowych funkcji, których listę znajdziecie w oryginalnym poście ogłaszającym wydanie.