Quarkus雲原生開篇java框架簡介
前言
Quarkus 是小紅帽開源的專門針對雲容器環境優化的雲原生java框架,目前已迭代到1.6.0版本,已完成瞭大部分的框架庫的集成擴展,為瞭讓你低成本遷移到Quarkus來,它兼容主流的框架開發模式api,如spring web。
Quarkus已具備企業級應用開發能力。而且未來容器雲肯定是主流瞭,可以預見,未來的軟件都是運行在k8s這樣的容器集群裡。而容器環境需要應用具備啟動速度快,資源占用小,響應時間短等特性,Quarkus就是順應這種趨勢而生的。
github項目地址:https://github.com/quarkusio/quarkus
官網地址:https://quarkus.io/
下面是小紅帽官方對Quarkus的介紹:
什麼是quarkus?
Quarkus 是一個為 Java 虛擬機(JVM)和原生編譯而設計的全堆棧 Kubernetes 原生 Java 框架,用於專門針對容器優化 Java,並使其成為無服務器、雲和 Kubernetes 環境的高效平臺。
Quarkus 可與常用 Java 標準、框架和庫協同工作,例如 Eclipse MicroProfile、Apache Kafka、RESTEasy(JAX-RS)、Hibernate ORM(JPA)、Spring、Infinispan、Camel 等。
Quarkus 的依賴註入解決方案基於 CDI(上下文和依賴註入),且包含一個擴展框架來擴展功能並將其配置、引導並集成到您的應用中。添加擴展就像添加依賴項一樣容易;或者,您可以使用 Quarkus 工具。此外,它還向 GraalVM(一種通用虛擬機,用於運行以多種語言(包括 Java 和 JavaScript)編寫的應用)提供正確信息,以便對應用進行原生編譯。
為什麼用quarkus?
專為開發人員而設計
1、Quarkus 的設計從一開始就立足於簡單易用,其功能幾乎不需要配置即可正常使用。
2、開發人員可以為其應用選擇所需的 Java 框架,而這些應用可以在 JVM 模式下運行,也可以在原生模式下進行編譯和運行。
3、為瞭方便開發人員的工作,Quarkus 還包含以下功能:
- 實時編碼,旨在讓開發人員能夠即時檢查代碼更改的影響並快速進行故障排除
- 帶有嵌入式托管事件總線的統一命令式和響應式編程
- 統一配置
- 簡單的原生可執行文件生成
容器優先
無論是將應用托管在公共雲上還是內部托管的 Kubernetes 集群中,快速啟動和低內存消耗等特性對於降低總體主機成本來說都至關重要。
Quarkus 的開發遵從瞭容器優先的原則,這意味著它已通過以下方式針對降低內存使用和加快啟動時間進行瞭優化:
- 鼎力支持 Graal/SubstrateVM
- 構建時元數據處理
- 減少反射的使用
- 本機映像預啟動
因此,Quarkus 構建的應用其內存消耗隻有傳統 Java 的 1/10,而且啟動時間更快(快瞭 300 倍),這些都大大降低瞭雲資源的成本。
命令式和響應式代碼
1、在設計上,Quarkus 能夠在開發應用時無縫地結合熟悉的命令式代碼和非阻塞、響應式樣式。 這對於習慣使用命令式模型而不想切換風格的 Java 開發人員以及使用雲原生/響應式方法的開發人員都非常有用。 Quarkus 開發模型可以適應您正在開發的任何應用。
2、對於在新的無服務器架構、微服務、容器、Kubernetes、功能即服務(FaaS)和雲環境中運行 Java 而言,Quarkus 堪稱是一個有效的解決方案,因為在創建它時就充分考慮瞭所有這些因素。
結語
紅帽官方介紹的這些特性指標,除瞭Graal的native image沒體驗到外(windows環境支持不友好,折騰瞭很久都沒成功),基本上都體驗瞭一番,相比於spring boot,內存確實占用的更少、啟動速度也更快瞭,但是沒有宣傳的快瞭300倍這麼誇張。但是有一個特性是博主體驗後在也忘不掉的,Quarkus的實時編碼功能,無論你怎麼改動你的程序,在下次請求到來時時,總能自動編譯加載到最新的代碼,而且速度非常快,感受不到重新編譯的過程。就像開發php一樣的體驗。這種感覺很爽,大大的提升瞭開發效率。總而言之,java開發生態中,在spring boot大行其道下,Quarkus這些優秀特性還是值得一試的。
以上就是Quarkus雲原生開篇java框架簡介的詳細內容,更多關於Quarkus雲原生java框架的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- GraalVm的反射配置輔助工具agentlib配置及使用
- 用Spring Native將SpringBoot程序轉換為GraalVM
- Quarkus篇入門創建項目搭建debug環境
- Quarkus中實現Resteasy的文件上傳下載操作
- Springboot遷移到Micronaut實現過程詳解