Nowa fala frameworków Javy: Quarkus, Micronaut, Helidon
We wrześniu w dniach 23-25. oraz 28-30. trwała konferencja technologiczna Infoshare 2020. Największym tego typu wydarzenie w Europie Środkowo-Wschodniej odbyło się w tym roku w sieci i wykłady można było śledzić za pomocą streamingów online. Prelegentami byli polscy i światowi eksperci, którzy chętnie dzielili się wiedzą na scenie, jak i poza nią.
Jako CTO Bulldogjob.pl, przeprowadziłem wywiad na temat nowych frameworków Javy - Quarkusa, Micronaut oraz Helidona, z jednym z prelegentów - Maciejem Przepiórą z firmy SPARTEZ. Materiał został zrealizowany podczas konferencji Infoshare 2020 Online.
Adam: O nowej fali frameworków javowych, do których należą Micronaut, Quarkus, czy Helidon, słyszał już w świecie Javy prawie każdy. Teraz trzeba się zastanowić, czy nie nadszedł już czas, aby zacząć ich wreszcie używać. Co myślisz na ten temat?
Maciej: To zależy. Moim zdaniem pytanie to należy przeformułować na czym się zajmujesz w pracy? Jeżeli pracujesz z Javą i chcesz rozwijać rozwiązania chmurowe, to może to być ostatni moment, aby się tematem zainteresować, bo już za chwilę okaże się, że będzie to można robić tylko z tymi nowymi technologiami. Wcześniej wspomniane frameworki postawiły sobie za cel sprawienie, aby Java była adekwatną technologią, jeśli właśnie chodzi o tworzenie rozwiązań chmurowych. Spring Boot został co prawda stworzony z myślą o tworzeniu mikroserwisów, ale jest on trochę problematyczny i wydaje się przez to słabo do chmury dopasowany.
Do niedawna Java nie była uważana za właściwe narzędzie do chmury. Technologia ta była o wiele lepiej dopasowana do rozwiązań korporacyjnych i serwerowych - jest to zupełnie inny model niż chmura i Java wydawała się kompletnie niedostosowana, w porównaniu do takich technologii, jak Go, czy Node.js. W tym momencie Oracle chyba się zorientowało, że zaraz stracą wejście na chmurę, więc zaczęli sami zmieniać Javę.
Adam: Jeżeli chodzi o zmiany w ekosystemie Javy: są to zmiany oddolne, czy sponsorowane przez Oracle?
Maciej: Helidon jest sponsorowany przez Oracle, ale jest on też najmłodszym projektem firmy. Sami developerzy Javy, którzy używają całego ekosystemu tej technologii, stwierdzili, że czegoś im po prostu brakuje, więc zaczęli wprowadzać zmiany na własną rękę. W samym świecie Javy świetne jest to, że jeśli komuś czegoś brakuje, to jest w stanie samodzielnie to zaimplementować - tak właśnie było w przypadku Micronaut.
Framework ten został stworzony w amerykańskim software house o nazwie Object Systems. Firma ta na samym początku pracowała nad Spring oraz Spring Bootem, a potem używali tego drugiego do stworzenia Grails - frameworka dla Groovy. W momencie, w którym zorientowali się, że w Grails słabo działają rzeczy chmurowe, wzięli się za Micronaut.
Quarkus wziął się z podobnego myślenia i powstał w amerykańskiej firmie informatycznej Red Hat. Jest dużo kodu javowego, który warto, aby został zachowany, a zatem warto by go dostosować do chmury. W międzyczasie Oracle wypuścił GraalVM, który jest dla Javy rewolucyjny - były wcześniej próby tworzenia kompilatorów, które komponowałyby Javę do kodu natywnego (np. GCC Java pod Linuksa), ale GraalVM zupełnie zmienia nasz sposób myślenia na ten temat. W niektórych firmach zamiana paczki .jar na .exe jest czymś rutynowym - w ten właśnie sposób wrzuca się teraz aplikacje na produkcję.
Adam: Jakie są cechy wspólne i różnice między tymi frameworkami?
Maciej: Wszystkie te frameworki mają jeden wspólny cel: wsparcie dla GraalVM i Native Image Tool, aby robić prekompilacje i mieć gotową binarkę, która nie będzie ważyła w kontenerze 2GB, tylko 200MB. Drugą cechą wspólną jest wsparcie dla reaktywnego stylu kodowania, ale on może stracić niedługo swoje znaczenie, ze względu na zmiany, które mają zajść w Javie przez Project Loom.
Jeżeli chodzi o różnice, to wynikają one z różnej genezy tych frameworków. Oracle stworzył Helidona głównie po to, aby zareklamować GraalVM i pokazać, że narzędzia tego można używać do poważnych zadań. Jeżeli chodzi o Micronaut, to twórcy chcieli tutaj mieć to samo, co daje Spring Boot, ale bez jego wad. Jeżeli mamy zatem kod napisany w Spring Boot, to niewiele wysiłku trzeba włożyć w to, aby go uruchomić w Micronaut i na odwrót.
Adam: Jak wygląda dojrzałość ekosystemu każdego z tych frameworków?
Maciej: Każdy z tych frameworków jest jeszcze bardzo młody (najstarszy jest Micronaut, który został ogłoszony 2,5 roku temu). Wokół każdego z nich jest jednak community i zawsze coś się dzieje - istnieją nowe projekty, wprowadzające nowe elementy, czy też biblioteki. Ale chyba najbardziej dojrzałym narzędziem jest tutaj Micronaut. Wynika to jednak z faktu, że wyrasta on ze Spring Boota, ma on więc dosyć solidne zaplecze.
Adam: Myślisz, że powstanie jeszcze jakaś konkurencja dla lekkich frameworków, które mają współpracować z mikroserwisami?
Maciej: Myślę, że jest mało prawdopodobne, ponieważ inne frameworki nie będą w stanie wygrać z modelem backend/frontend na chmurze. Nie wygląda również na to, aby powstał jakiś zupełnie nowy sposób na tworzenie oprogramowania, co też dyskwalifikuje pojawienie się konkurencji dla tych nowych technologii.