Quarkus to lekki framework dla Java, który pochodzi ze stajni Red Hat’a. Twórcy określili go jako narzędzie, które umożliwia wykorzystanie potencjału Kubernetesa, oraz środowisk bezserwerowych, zapewniając przy tym zunifikowany model programowania reaktywnego.
Po paru własnych projektach mogę podzielić się z Tobą pierwszymi wrażeniami – programuje się w nim bardzo przyjemnie, a jego możliwości są bardzo obiecujące. Jednak jak każde rozwiązanie ma swoje wady 😉
Podejście do tworzenia aplikacji
Dotychczas Spring Boot przyzwyczaił nas do podejścia convention over configuration, które zwalniały programistę ze żmudnej konfiguracji środowiska serwerowego i pamiętaniu o dodawaniu wszystkich zależności. Jednak podejście to ma dużą wadę – sprawia, że paczki wynikowe z czasem stają się bardzo obszerne i zużywające dużą ilość zasobów sprzętowych.
Quarkus rozwiązuje to w inny sposób – dostarcza developerowi skonfigurowany projekt startowy ujmując w nim tylko podstawowe zależności. W rezultacie programista nie musi dokonywać żadnych konfiguracji, bo te zostały ujęte w edytowalnych skryptach.
Jednym z takich plików w projekcie jest Dockerfile.jvm, który zawiera konfiguracje uruchomienia aplikacji w podejściu Serverless:
Jest to pierwsza rzecz, która wrzuca się w oczy i trzeba przyznać, że orientacja frameworka do podejście Serverless bardzo cieszy i ułatwiającym pracę w chmurze! W końcu jest to krok, by pozbyć się serwerów aplikacyjnych! A samo wdrożenie aplikacji z wykorzystaniem Kubernetesa staje się prostsze.
Czym Quarkus nas jeszcze zachwyci?
W trybie developerskim jest domyślnie wdrożony Hot Swap (dla przypomnienia Hot Swap pozwala na podmianę kodu, bez konieczności przebudowania aplikacji). Działa bardzo płynnie i przyjemnie.
W Spring Boot, aby skorzystać z Hot Swap należało skorzystać z DevTools lub płatnych narzędzi od JRebel. Niestety oba rozwiązania borykały się z problemami, które raz na jakiś czas wymagały restartu aplikacji.
W przypadku Frameworka Quarkus całość działa bez zastrzeżeń, bardzo płynnie i co najważniejsze – szybko!
Dodatkowo przesiadka z JavaEE/Spring nie stanowi trudności, Quarkus adoptuje znane biblioteki, co również jest dużą zaletą rozwiązania 🙂
Czy wszystko w Quarkus jest tak dobre?
Tak! 🙂
No dobra, postaram się być obiektywny, bo jednak piszę ten artykuł pod wpływem ekscytacji 😊
W czasie tworzenia projektu w Quarkus natchnąłem się na kilka trudności:
- rzucane błędy aplikacji często są mało precyzyjne, przeważnie „no developer friendly”;
- internet mało mówi na temat zasad działania frameworka lub pojawiających się błędach;
- brak wsparcia dostarczanego przez IDE, podpowiadania składni;
- ograniczona ilość kompatybilnych rozwiązań – teoretycznie framework do programowania reaktywnego jednak integracja z MongoDB jest w wersji Preview, tak samo jak Gradle, itp…
- Przyzwyczajenie do Spring Boot sprawiło, że wiele rozwiązań np. repozytorium, nie musiałem implementować ręcznie, tu dostajemy ograniczoną ilość „gotowców”.
Przyznam, że ostatni punkt stanowi tutaj największą obiekcję wstrzymującą mnie od wykorzystywania go do rozwiązań komercyjnych.
Quarkus – rozpocznij naukę z frameworkiem
W wideo prezentuje w jaki sposób stworzyć pierwszą aplikacje RESTFul, która umożliwia na zapisywanie rekordów do bazy danych:
Quarkus – przykład aplikacji
Przykładowa aplikacja z REST API i bazą danych dostępna na moim repozytorium:
https://github.com/bykowski/quarkus-restapi-hibernate-example
Co ciekawe domyślnie GitHub rozpoznaje aplikacje jako HTML 😉
Również na zasługę zasługuje domyślny plik README.md, który jest dodawany do projektu i powie Ci jak uruchomić tą aplikacje 🙂
Quarkus podsumowanie – czy warto?
Dużo w tej materii zależy od rynku pracy. Ciężko jest znaleźć ofertę pracy w tej technologii. Jednak same doświadczenia i praca z tym frameworkiem są bardzo przyjemne. Co prawda jest kilka niedociągnięć, które najpewniej są przyczyną wczesnej wersji frameworka Quarkus. Dlatego trzymam kciuki za rozwój projektu i pracę społeczności.
A Ty planujesz przyjrzeć się temu narzędziu lub masz już jakieś przemyślenia na jego temat?