Episode ini mengupas mengapa Quarkus lahir: masalah startup lambat dan memory besar aplikasi Java, evolusi dari Jakarta EE klasik menjadi framework cloud-native, perbandingannya dengan Spring Boot, serta posisi Quarkus 3.x di ekosistem modern.

Java sudah menjadi bahasa enterprise selama lebih dari dua dekade. Tapi di era cloud-native, aplikasi Java klasik menghadapi kritik tajam: startup yang lambat dan konsumsi memory yang besar. Ketika sebuah pod di Kubernetes harus diganti setiap beberapa menit, waktu startup 10 detik terasa sangat mahal.
Quarkus lahir untuk menjawab masalah ini. Ia adalah framework Java yang dirancang khusus untuk container-first dan Kubernetes-native, dengan dukungan penuh untuk native image GraalVM. Episode ini membawa kalian memahami sejarah, latar belakang, dan mengapa Quarkus dibutuhkan di tengah dominasi Spring Boot.
Series ini memakai pendekatan praktis: setiap konsep dijelaskan dengan contoh nyata yang bisa kalian jalankan sendiri. Sebelum lanjut, pastikan Java 17 atau 21, Maven atau Gradle, dan editor kesayangan kalian sudah siap — detail lengkap ada di episode 0.
Quarkus pertama kali diperkenalkan oleh Red Hat pada tahun 2018 dan dirilis secara resmi pada 2019. Namanya diambil dari kata quark — partikel elementer terkecil — menyiratkan harapan menjadi framework Java yang sangat kecil dan cepat. Quarkus dibangun di atas teknologi yang sudah matang: CDI (Contexts and Dependency Injection), JAX-RS untuk REST, dan Hibernate untuk persistence.
Kunci revolusinya ada pada konsep build-time augmentation. Sebagian besar pekerjaan yang biasanya dilakukan saat runtime — seperti scanning bean dan membaca metadata — dipindahkan ke fase build. Hasilnya adalah aplikasi yang di runtime hanya menjalankan inti yang benar-benar dibutuhkan.
Perjalanannya panjang: dari J2EE yang berat, ke Java EE, lalu Jakarta EE yang lebih modular, hingga munculnya framework microservice seperti Spring Boot dan Micronaut. Quarkus hadir sebagai titik temu: ia menawarkan familiaritas stack Java EE/CDI namun dengan pendekatan cloud-native dan reactive yang modern.
Titik balik lain adalah lahirnya GraalVM: kemampuan menjalankan aplikasi Java sebagai native executable tanpa JVM. Quarkus memanfaatkan ini lewat integrasi native image yang matang, sesuatu yang sulit ditiru framework lain secara seamless.
Dua masalah paling dikeluhkan dari Java tradisional. Perbandingan sederhananya:
# Aplikasi Spring Boot di JVM biasanya 3-8 detik
# Quarkus JVM mode sekitar 0.5-1 detik
# Quarkus native image sekitar 0.01-0.1 detik
./mvnw quarkus:dev
# Output: Quarkus started in 0.723s. Listening on: http://localhost:8080Dalam mode JVM saja, Quarkus sudah jauh lebih cepat dari framework tradisional berkat build-time augmentation. Dalam mode native image, startup bisa turun hingga puluhan milidetik dengan memory footprint yang jauh lebih kecil — sangat penting untuk fungsi serverless yang sering start dan stop.
Quarkus memiliki live coding atau hot reload: perubahan pada kode Java, resource, atau konfigurasi langsung diterapkan tanpa restart manual. Ini memperpendek loop umpan balik developer dari hitungan detik menjadi hampir instan.
Ekosistem modern menuntut aplikasi dipecah menjadi service kecil yang bisa di-deploy, di-scale, dan diganti secara independen. Startup cepat dan memory kecil yang dimiliki Quarkus membuat setiap service sangat murah dijalankan — cocok untuk skenario serverless, scale-to-zero, dan fungsi cloud yang sering start dan stop.
Spring Boot adalah raksasa di ekosistem Java dan sangat cocok untuk banyak kasus. Namun Quarkus menawarkan keunggulan di area tertentu: startup lebih cepat, memory lebih kecil, dukungan native image kelas satu, dan arsitektur reactive yang lebih dalam. Spring Boot unggul dalam dokumentasi dan komunitas yang sangat besar.
Perbandingan pola yang sering dibahas:
| Aspek | Quarkus | Spring Boot |
|---|---|---|
| Startup | Sangat cepat | Sedang |
| Native image | Kelas satu | Terbatas |
| Reactive | Deep (Vert.x) | Mendukung tapi lebih kompleks |
| Runtime Java EE | CDI, JAX-RS | Spring native |
Pilihan framework sangat tergantung kebutuhan. Quarkus bersinar untuk microservices, serverless, dan aplikasi yang harus hemat resource.
Jika tim kalian sudah nyaman dengan spesifikasi Jakarta EE, kurva belajarnya terasa singkat karena API-nya sama; yang berubah adalah cara kerja dan model eksekusi di belakang layar.
Quarkus memakai standar Jakarta EE tetapi dengan pendekatan berbeda: semuanya diolah saat build time, bukan runtime. Ini membuat aplikasi Quarkus jauh lebih ringan daripada server aplikasi klasik seperti WildFly atau GlassFish yang membawa seluruh container saat runtime. Konsekuensinya, tidak ada komponen yang tidak terpakai — yang terinstall hanyalah yang benar-benar dibutuhkan aplikasi.
Saat series ini ditulis, rilis stabil berada di jalur Quarkus 3.x. Fitur stabil yang sudah matang:
Quarkus mengikuti ritme rilis cepat dengan LTS berkala. Cara cepat melihat versi kalian:
quarkus --version
./mvnw quarkus:infoPerintah ./mvnw quarkus:info juga menampilkan versi Quarkus, versi Java, dan daftar extension yang terinstall — berguna untuk memastikan seluruh tim memakai versi yang sama.
Episode ini menjelaskan mengapa Quarkus ada dan mengapa kalian perlu mempertimbangkannya: masalah startup lambat dan memory besar Java klasik, lahirnya Quarkus dari Red Hat, perbandingan dengan Spring Boot dan Jakarta EE, serta posisi Quarkus 3.x sebagai framework cloud-native yang stabil.
Inti yang harus dibawa pulang:
Di episode 2 selanjutnya kita akan membahas konsep dasar dan arsitektur utama Quarkus — cara kerja build-time augmentation di balik layar, live coding dan Dev UI, peran extension, serta bagaimana CDI container bekerja.
Pastikan seluruh tool dari episode 0 sudah terinstall, karena mulai episode berikutnya kalian akan langsung praktik.