Các Java Stack cũ được thiết kế để chạy độc lập với thời gian khởi chạy lâu cùng với yêu cầu bộ nhớ lớn nên khó tương thích trong các Container ở môi trường Cloud. Các khuôn khổ cũ cần được phát triển nhằm thích ứng với các công nghệ mới như Cloud Computing, Serverless, Kubernetes, …, Quarkus được tạo ra nhằm giải quyết vấn đề trên.
Quarkus là một framework hiện đại dành cho Java, được thiết kế đặc biệt để xây dựng các ứng dụng cloud-native và microservices. Được phát triển bởi Red Hat, Quarkus tối ưu hóa để chạy hiệu quả trên JVM (Java Virtual Machine) hoặc được biên dịch thành native executable bằng công cụ GraalVM.
Đặc điểm nổi bật của Quarkus
Hiệu suất cao và tối ưu bộ nhớ:
- Quarkus tối ưu hóa để sử dụng ít bộ nhớ và đạt tốc độ khởi động nhanh hơn so với các framework Java truyền thống.
- Native executable giúp giảm dung lượng bộ nhớ (RAM) và cải thiện thời gian phản hồi, rất phù hợp với các môi trường containerized như Kubernetes.
Thiết kế “Cloud-Native First”:
- Tích hợp mạnh mẽ với các công nghệ cloud-native như Kubernetes, Docker, và OpenShift.
- Hỗ trợ DevOps và triển khai dễ dàng trên các nền tảng container.
Developer Experience (Trải nghiệm lập trình viên):
- Chế độ Live Reload (Quarkus Dev Mode) cho phép lập trình viên thấy thay đổi ngay lập tức mà không cần khởi động lại ứng dụng.
- Cung cấp công cụ CLI và hỗ trợ IDE mạnh mẽ.
Hỗ trợ các API và chuẩn Java:
Quarkus hỗ trợ các chuẩn Java EE/Jakarta EE như JPA, CDI, JAX-RS, cũng như các API reactive như Mutiny.
Reactive Programming:
Hỗ trợ lập trình phản ứng (reactive) qua các thư viện như Mutiny, giúp dễ dàng xây dựng các ứng dụng hiệu suất cao, không đồng bộ.
Ecosystem phong phú:
Tích hợp sẵn với nhiều thư viện, công cụ phổ biến như Hibernate, RESTEasy, Kafka, Camel, MongoDB, v.v.
So sánh với Spring và Micronaut
Quarkus | Spring Boot | Micronaut | |
---|---|---|---|
Hiệu suất khởi động | Rất nhanh | Tương đối chậm hơn | Nhanh |
Bộ nhớ sử dụng | Ít | Cao hơn | Tối ưu |
Reactive Support | Mạnh (Mutiny) | Có (Project Reactor) | Có (RxJava, Reactor) |
Native Compilation | Có (qua GraalVM) | Có (qua GraalVM) | Có (qua GraalVM) |
Tạo một dự án Quarkus đơn giản
Tương tự như Spring framework với Spring Initializr https://start.spring.io/, Quarkus cũng có một công cụ giúp chúng ta có thể tạo mới nhanh một Quarkus project tại https://code.quarkus.io/.
Ở đây mình sẽ khởi đầu với Quarkus REST để tạo một API đơn giản
Chọn Genenerate your application, sau khi download về bạn sẽ nhận được một dự án khởi đầu
Dự án ban đầu sẽ bao gồm một số thư mục chính:
- Docker
- Java: folder chính chứa code dự án
- Resource: chứa các static resource và các file config môi trường
- Test: chứa test case của dự án
Khởi đầu, Quarkus sẽ tạo cho bạn một lớp chứa một endpoint /hello
, bạn có thể khởi chạy dự án thông qua lệnh ./mvnw compile quarkus:dev
hoặc quarkus dev
nếu bạn sử dụng quarkus CLI
Truy cập localhost:8080
bạn sẽ nhận được giao diện dev như trên, và nếu truy cập localhost:8080/hello
bạn sẽ nhận được message từ Quarkus server.
Tạm kết
Qua bài viết, chúng ta đã nắm được cách tạo một dự án cơ bản với Quarkus và hiểu rõ hơn về tiềm năng mà framework này mang lại trong việc phát triển ứng dụng cloud-native và microservices.
Quarkus không chỉ cung cấp hiệu suất cao, thời gian khởi động nhanh mà còn mang lại trải nghiệm phát triển mượt mà với các tính năng như Dev Mode, hỗ trợ native compilation qua GraalVM, và khả năng tích hợp tốt với các công nghệ hiện đại như Kubernetes hay Kafka.
Tham khảo
https://www.redhat.com/en/topics/cloud-native-apps/what-is-quarkus