Útmutató a jövő Java fejlesztéséhez

Illusztráció: Útmutató a jövő Java fejlesztéséhez: A Red Hat DO078 Quarkus Technical Overview részletes bemutatása

A Red Hat DO078 Quarkus Technical Overview részletes bemutatása

A modern felhőalapú (cloud-native) architektúrák térnyerésével a Java fejlesztők komoly kihívásokkal találták szemben magukat. A hagyományos Java keretrendszerek (mint például a klasszikus Spring Boot vagy JEE megoldások) kiválóan működnek hosszú életű, statikus szervereken, de amikor mikroszolgáltatásokról, konténerekről, Kubernetes-ről vagy éppen szerver nélküli (Serverless / FaaS) futtatási környezetekről beszélünk, a hosszú indítási idő (startup time) és a magas memóriahasználat (memory footprint) komoly szűk keresztmetszetté válik.

Erre a problémára nyújt kompromisszummentes választ a Quarkus, amelyet gyakran csak „Supersonic Subatomic Java” néven emlegetnek.

A Red Hat által kínált ingyenes, on-demand képzés, a DO078 (Quarkus Technical Overview) kiváló kiindulópont mindazok számára, akik szeretnének megismerkedni ezzel a modern keretrendszerrel. Ebben a cikkben részletesen áttekintjük a kurzus legfőbb tananyagait, rávilágítunk a Quarkus „titkos összetevőire”, és bemutatjuk, hogyan reformálja meg a fejlesztői élményt.

1. Mi az a Quarkus „Titkos Összetevője”? (The Quarkus Secret Sauce)

A hagyományos Java keretrendszerek szinte minden fontos feladatot – mint az osztályok beolvasása (classpath scanning), az annotációk feldolgozása, a függőségek behelyettesítése (Dependency Injection – DI) és a konfigurációk betöltése – futtatási időben (Runtime) végeznek el. Ez azt jelenti, hogy minden egyes alkalmazásindításkor a JVM-nek óriási munkát kell végeznie, ami lassítja a startupot és növeli a memóriaigényt.

A Quarkus ezzel szemben szakít ezzel a megközelítéssel, és bevezeti a Build-time optimalizációt (fordítási idejű optimalizáció).

Hagyományos Java:  [Build] ──> [Indítás: Classpath Scan -> DI -> Annotációk -> Futás]
Quarkus:           [Build: Classpath Scan -> DI -> Annotációk] ──> [Indítás: Azonnali Futás]

A build-time optimalizáció előnyei:

  • Minimalizált dinamizmus: A Quarkus a fordítás fázisában elvégzi a classpath bejárását, felépíti a DI gráfot, és csak azt a kódot hagyja meg, amelyre valóban szükség van.
  • Dead Code Elimination: A felesleges osztályok és metódusok nem kerülnek bele a végleges csomagba.
  • GraalVM / Mandrel integráció: Mivel a dinamikus elemek száma drasztikusan lecsökken, az alkalmazás sokkal könnyebben fordítható át natív binárissá (Native Executable), amelyhez már JVM (Java Virtual Machine) sem szükséges a célgépnek.

2. Hogyan hozzunk létre egy Quarkus alkalmazást?

A kurzus gyakorlati lépésekkel indul. Egy új Quarkus projekt generálása rendkívül egyszerű. Használhatjuk a hivatalos webes felületet (code.quarkus.io), de parancssorból a Quarkus CLI segítségével is elindíthatjuk a folyamatot:

quarkus create app tech.istvankerekes.quarkus-demo \
    --extension=resteasy-reactive,jackson,hibernate-validator

A fenti paranccsal azonnal létrejön egy sablon projekt a legfontosabb REST kiegészítőkkel felszerelve. A DO078 bemutatja, hogyan építhetünk fel modulárisan egy alkalmazást a Quarkus gazdag kiterjesztés-ökoszisztémájára (Extensions) támaszkodva, amelyek között megtalálható a REST, a JDBC, a Hibernate ORM (Panache-al kiegészítve), az OpenAPI és a különböző egészségügyi ellenőrzések (Health Checks) is.

3. Developer Joy: Az igazi fejlesztői élmény

A Java fejlesztők megszokták, hogy egy apró módosítás után is újra kell fordítani, csomagolni és indítani az alkalmazást, ami értékes perceket vesz el a fókuszból. A Quarkus fejlesztői csapata ezt a frusztrációt egy egészen zseniális koncepcióval, a Developer Joy filozófiával oldotta fel.

Élő kódolás (Live Coding)

A quarkus dev paranccsal elindított alkalmazás figyeli a forráskódot. Amint módosítunk egy Java osztályt, egy HTML fájlt, egy konfigurációs beállítást, vagy akár megváltoztatjuk az adatbázis sémát, a Quarkus a következő HTTP kérés megérkezésekor ezredmásodpercek alatt újratölti a változtatásokat. Nincs szükség kézi szerver-újraindításra!

DevServices – Automatikus infrastruktúra-kezelés

Sokszor nehézséget okoz a helyi fejlesztőkörnyezet beállítása (pl. egy PostgreSQL adatbázis vagy Kafka broker futtatása). A Quarkus DevServices funkciója felismeri, ha például a Hibernate reactive extension be van kapcsolva, de nincs konfigurálva adatbázis-kapcsolat. Ilyenkor a háttérben – Docker vagy Podman segítségével – automatikusan elindít egy teszt adatbázis-konténert, elvégzi a konfigurációt, és azonnal használatba adja azt. Amikor leállítjuk a fejlesztői módot, a konténert is automatikusan törli.

Dev UI

A helyi fejlesztői módban elérhető egy beépített webes felület (Dev UI), ahol valós időben követhetjük nyomon a konfigurációkat, ellenőrizhetjük a logokat, tesztelhetjük a REST végpontokat és finomhangolhatjuk a kiterjesztéseket.

4. Folyamatos tesztelés (Continuous Testing)

A DO078 kurzus kiemelten foglalkozik a tesztelés kultúrájával. A Quarkus beépített folyamatos tesztelési motorral rendelkezik. Amikor a fejlesztői mód fut, a háttérben a tesztek is aktívak:

  • Ha módosítunk egy kódrészletet, a Quarkus intelligensen csak azokat a teszteket futtatja le újra, amelyeket az adott módosítás érint.
  • A terminál alján folyamatosan látható a tesztek állapota (piros/zöld visszajelzés).
  • Ez a fajta azonnali visszacsatolás rendkívül módon támogatja a tesztvezérelt fejlesztést (TDD – Test-Driven Development).

5. Konténerizáció Podman segítségével és a natív fordítás

A felhőalapú világban az alkalmazásokat konténer-image-ként kell terjeszteni. A kurzus bemutatja, hogyan csomagolhatjuk Quarkus alkalmazásunkat hatékonyan local környezetben a nyílt forráskódú, Docker-helyettesítő Podman segítségével.

Két fő csomagolási irány létezik:

JellemzőJVM Mód (Fast-JAR)Natív Mód (GraalVM / Mandrel)
Indítási idő~1-2 másodperc~0.01 – 0.05 másodperc
MemóriaigényÁtlagos (JVM overhead)Rendkívül alacsony (akár tizede a JVM-nek)
Fordítási időNagyon gyorsLassabb, erőforrás-igényes
Ideális használatStandard mikroszolgáltatásokServerless, Edge computing, gyors felskálázás

A natív bináris előállításához a Quarkus mögött álló GraalVM vagy a Red Hat által támogatott Mandrel technológiát használjuk, amely egyetlen futtatható állományba fordítja le a Java bájtkódot, beágyazva egy minimális futtató környezetet (Substrate VM).

6. Telepítés Red Hat OpenShift platformra

A kurzus záró fejezetei a vállalati deployment kérdéseivel foglalkoznak. A Quarkus natív módon integrálódik a Kubernetes és a Red Hat OpenShift platformokkal.

A kurzus bemutatja, hogyan lehet:

  1. Az OpenShift belső build-rendszerét kihasználva automatikusan legenerálni a konténer-képeket.
  2. Biztonságos kapcsolatokat kiépíteni adatbázisokhoz a Kubernetes Secrets és ConfigMaps segítségével.
  3. Definiálni a külső elérést biztosító Route-okat és szolgáltatásokat (Services).
  4. Kihasználni a Kubernetes liveness és readiness probe-okat a Quarkus Health kiterjesztésén keresztül.

Összegzés és a következő lépések

A Red Hat DO078 (Quarkus Technical Overview) egy kiváló, ingyenes és rendkívül tömör áttekintés, amely minden modern Java fejlesztő számára kötelező tananyag kellene, hogy legyen. Megmutatja, hogy a Java nem egy elavult technológia, hanem a megfelelő keretrendszerrel a felhőalapú fejlesztések leggyorsabb és leghatékonyabb eszköze lehet.

Ha a technikai áttekintés után mélyebben is szeretnél elmerülni a mikroprofilok, a reaktív programozás és a komplex felhőalapú architektúrák világában, a Red Hat a következő lépésként a Red Hat Cloud-native Microservices Development with Quarkus (DO378) teljes kurzusát és a hozzá kapcsolódó vizsgát ajánlja.

Eredeti Forrás és Hivatkozás

Ez a cikk a Red Hat hivatalos, ingyenes képzési anyaga alapján készült. Az eredeti képzési leírás és a videós tananyag elérhető a Red Hat hivatalos oldalán:

Red Hat DO078 – Quarkus Technical Overview

Avatar photo

Szerző: Istvan Kerekes

Ha úgy érzed, hogy a munkád során tudnék segíteni Red Hat, vagy IBM termékekkel kapcsolatban, akkor keress bátran: https://www.arrow.com/globalecs/hu/munkatarsaink/red-hat/