Cześć, w ostatnim w tym roku wydaniu porozmawiamy sobie, na ile Go jest interesującą alternatywą dla programistów Javy w obliczu ŚmierciJavy™️. Oprócz tego będzie CDI 4.0 w wersji Lite.
1. Czy łatwo jest przejść z Javy na Go?
Jak co roku bawię się w Advent of Code (i jak co roku trochę wysiadam przy końcówce zaraz przed świętami, z mocnym postanowieniem nadrobienia w okresie poświątecznym). W tym roku postanowiłem sobie zrobić dodatkowy challenge i zacząłem uczyć się GoLanga równolegle z rozwiązywaniem w nim zadań. Biorąc pod uwagę, że – jak już wspomniałem – nawet pisząc w Kotlinie, którego dobrze znam zwykłe „łapię tyły” było to nieco zbyt ambitne postanowienie i dość szybko wymiękłem, ale dzięki temu łyknąłem trochę Go. Nawet miałem się podzielić z Wami swoimi przemyśleniami w tym temacie, ale okazało się, że Christopher Berger stworzył tekst który bardzo dobrze oddaje to, co chciałbym się dowiedzieć siadając do tego języka z perspektywy JVM-owca.
Z Moving from Java to Go? What you need to know dowiecie się więc, jaka filozofia języka (jako suplement polecam tu też oficjalne FAQ języka – długie acz treściwe bardzo), jak należy myśleć o jego współbieżności oraz specyfice paradygmatu języka, który jest dość ulotny i trudny do uchwycenia (ni to obiektowy, ni to funkcyjny, ni to proceduralny). A jeśli ostatecznie będziecie potrzebowali jeszcze więcej, to jest też kurs java2go.dev, który mnie ostatecznie wyjaśnił bardzo dużo rzeczy i sprawił, że mimo początkowej porażki prawdopodobnie zrobię sobie jeszcze jedno podejście do GoLanga.
To ja tak od siebie dorzucę jeszcze jedną bibliotekę, która dla mnie osobiście była sporym gamechangerem i pozwoliła mi łatwiej prototypować rozwiązania w Go. Jest to kamstrup/fn, która jak sam autor pisze „była zainspirowana Clojure i Java Streams APIs i dostarczona w podobnym duchu, co sprawi, że pisanie kodu Go będzie jeszcze przyjemniejsze.”. Podpisuje się pod powyższym obiema rękami i niech nie zwiedzie Was tylko gwiazdek – mój mózg dzięki dołożeniu fn do projektu stał się dużo kompatybilniejszy z Go, co pomogło mi zacząć pisać (na razie ciut) bardziej idiomatycznie.
Ktoś się bawił w tym roku Advent of Code? Jeśli tak, to macie jeszcze ostatnią szansę przyłączyć się do naszej grupy facebookowej i leaderboarda (join code: 2276325-be92402e), zanim cała zabawa się zakończy 🎄.
Źródła
Zainstaluj teraz i czytaj tylko dobre teksty!
2. Jak CDI 4.0 Lite wpisuje się w ostatnie trendy JDK
Ale ostatnio wszyscy walczą z tym wolnym wstawaniem aplikacji Javowych. Mieliśmy dopiero co AWS Lambda SnapStart, bazujący na CRaC, a wcześniej przy okazji zapowiedzi wcielenia GraalVM o sporo mówiło się o projekcie Leyden. Okazuje się, że również w świecie Jakarta EE też dzieją się ruchy w tym kierunku.
Wraz z Core Profile wprowadzonym w Jakarta EE 10 pojawił się byt znany jako CDI Lite. Jest to nowy wariant jakartowego kontenera wstrzykiwania zależności, tym razem posiadający dość interesujący twist. W wypadku uruchamiania aplikacji bazujących na oryginalnym CDI niezbędne jest przeskanowanie całego codebase przy uruchomieniu, wynikające z potrzeby zlokalizowania wszystkich wariantów danej dependencji. CDI Lite wprowadza BuildCompatibleExtension
, umożliwiające takich operacji jak walidacje czy rozszerzanie beanów jeszcze na poziomie budowania, zanim całość zostanie odpalona w runtime.
Oczywiście, nie ma nic za darmo i migracja do nowego wariantu nie jest tak całkiem bezproblemowa. Jeśli jednak chcecie spróbować jak wygląda CDI idący z duchem JVM, CDI 4.0 Lite and Potential Pitfalls wprowadzi Was zarówno w sam koncept jak i podkreśli, na co warto uważać. Dobrą analizę jeszcze przed premierą samego standardu wypuścił TheServerSide, gdzie dokonali oni porównania między różnymi wersjami CDI.
PS1: ostatnio premierę swoją miał nowy GlassFish w wersji 7.0. Zawiera on pełne wsparcie dla API Jakarta EE 10.
PS2: Wracając trochę do tematu Project Galahad, o którym pisałem ostatnio – GraalVM (jako całość) zapowiedział zmiany w swoim cyklu wydawniczym. Nie tylko więc javowa część GraalVM CE będzie zsynchronizowana z wydaniami Javy, ale czeka to również cały projekt. Nowe wydania zarówno Community, jak i Enterprise Edition będą pojawiały się więc co sześć miesięcy, wraz z kolejnymi edycjami JDK.
Źródła
- CDI Full vs CDI Lite: What’s new in Contexts and Dependency Injection 4.0
- CDI 4.0 Lite and Potential Pitfalls
- GraalVM, Galahad, and a New Release Schedule
- GlassFish 7.0 Released
Zainstaluj teraz i czytaj tylko dobre teksty!
Bonus: Nasz ulubiony serial – Java Umiera: odcinek 2137
To tak już zupełnie na koniec, jako że zaczęliśmy od przechodzenia na GoLang, to chcący sobie „zracjonalizować” taką decyzję powinni zerknąć do najnowszego odczytu TIOBE. Po raz pierwszy (a przynajmniej po raz pierwszy od baaaardzo dawna) Java wyleciała spoza pierwszej trójki, gdzie został zastąpiony przez C++. Indeks Tiobe szereguje języki na podstawie wyszukiwań w Google, Bing, Yahoo i innych źródłach – oznacza to więc, że Java zaczęła być rzadziej wyszukiwana.
Puszczam to bardziej jako ciekawostkę, nie muszę chyba bowiem żadnego czytelnika tych przeglądów przekonywać, że Java ma w sobie jeszcze wiele wigoru i werwy, więc pewnie nie czas jej jeszcze umierać. I o ile o oferty w pełni zdalne nie jest w Javie tak łatwo jak choćby w po raz kolejny przywoływanym GoLangu, to jednak Java pozostaje niesamowicie płodnym ekosystemem. Zresztą dopiero co w sobotnich przeglądach pisałem o pułapkach, w jakie łatwo wpaść mogą „modne” języki – akurat na przykładzie Rusta. Polecam lekturę oryginalnej publikacji What killed Haskell, could kill Rust, too, napisanej w oryginalnej formule Futurospektywy.
A tak na pokrzepienie serc – Head of Engineering Picnic, holenderska aplikacja do dowozu zakupów, podzielił się powodami dla których zdecydowali się wejść w „umierającą” Javę. Całość dyskusji prowadzona jest raczej w opozycji do Kotlina i Node.js, ale większość argumentów jest zasadna.
Źródła
- C++ overtakes Java in language popularity index
- What killed Haskell, could kill Rust, too
- Why Picnic picked Java
No dobra, to teraz wesołych świąt! I widzimy się już w Nowym Roku!