Quarkus云原生開篇java框架簡介
前言
Quarkus 是小紅帽開源的專門針對云容器環(huán)境優(yōu)化的云原生java框架,目前已迭代到1.6.0版本,已完成了大部分的框架庫的集成擴(kuò)展,為了讓你低成本遷移到Quarkus來,它兼容主流的框架開發(fā)模式api,如spring web。
Quarkus已具備企業(yè)級應(yīng)用開發(fā)能力。而且未來容器云肯定是主流了,可以預(yù)見,未來的軟件都是運(yùn)行在k8s這樣的容器集群里。而容器環(huán)境需要應(yīng)用具備啟動速度快,資源占用小,響應(yīng)時(shí)間短等特性,Quarkus就是順應(yīng)這種趨勢而生的。
github項(xiàng)目地址:https://github.com/quarkusio/quarkus
官網(wǎng)地址:https://quarkus.io/
下面是小紅帽官方對Quarkus的介紹:
什么是quarkus?
Quarkus 是一個(gè)為 Java 虛擬機(jī)(JVM)和原生編譯而設(shè)計(jì)的全堆棧 Kubernetes 原生 Java 框架,用于專門針對容器優(yōu)化 Java,并使其成為無服務(wù)器、云和 Kubernetes 環(huán)境的高效平臺。
Quarkus 可與常用 Java 標(biāo)準(zhǔn)、框架和庫協(xié)同工作,例如 Eclipse MicroProfile、Apache Kafka、RESTEasy(JAX-RS)、Hibernate ORM(JPA)、Spring、Infinispan、Camel 等。
Quarkus 的依賴注入解決方案基于 CDI(上下文和依賴注入),且包含一個(gè)擴(kuò)展框架來擴(kuò)展功能并將其配置、引導(dǎo)并集成到您的應(yīng)用中。添加擴(kuò)展就像添加依賴項(xiàng)一樣容易;或者,您可以使用 Quarkus 工具。此外,它還向 GraalVM(一種通用虛擬機(jī),用于運(yùn)行以多種語言(包括 Java 和 JavaScript)編寫的應(yīng)用)提供正確信息,以便對應(yīng)用進(jìn)行原生編譯。
為什么用quarkus?
專為開發(fā)人員而設(shè)計(jì)
1、Quarkus 的設(shè)計(jì)從一開始就立足于簡單易用,其功能幾乎不需要配置即可正常使用。
2、開發(fā)人員可以為其應(yīng)用選擇所需的 Java 框架,而這些應(yīng)用可以在 JVM 模式下運(yùn)行,也可以在原生模式下進(jìn)行編譯和運(yùn)行。
3、為了方便開發(fā)人員的工作,Quarkus 還包含以下功能:
- 實(shí)時(shí)編碼,旨在讓開發(fā)人員能夠即時(shí)檢查代碼更改的影響并快速進(jìn)行故障排除
- 帶有嵌入式托管事件總線的統(tǒng)一命令式和響應(yīng)式編程
- 統(tǒng)一配置
- 簡單的原生可執(zhí)行文件生成
容器優(yōu)先
無論是將應(yīng)用托管在公共云上還是內(nèi)部托管的 Kubernetes 集群中,快速啟動和低內(nèi)存消耗等特性對于降低總體主機(jī)成本來說都至關(guān)重要。
Quarkus 的開發(fā)遵從了容器優(yōu)先的原則,這意味著它已通過以下方式針對降低內(nèi)存使用和加快啟動時(shí)間進(jìn)行了優(yōu)化:
- 鼎力支持 Graal/SubstrateVM
- 構(gòu)建時(shí)元數(shù)據(jù)處理
- 減少反射的使用
- 本機(jī)映像預(yù)啟動
因此,Quarkus 構(gòu)建的應(yīng)用其內(nèi)存消耗只有傳統(tǒng) Java 的 1/10,而且啟動時(shí)間更快(快了 300 倍),這些都大大降低了云資源的成本。
命令式和響應(yīng)式代碼
1、在設(shè)計(jì)上,Quarkus 能夠在開發(fā)應(yīng)用時(shí)無縫地結(jié)合熟悉的命令式代碼和非阻塞、響應(yīng)式樣式。 這對于習(xí)慣使用命令式模型而不想切換風(fēng)格的 Java 開發(fā)人員以及使用云原生/響應(yīng)式方法的開發(fā)人員都非常有用。 Quarkus 開發(fā)模型可以適應(yīng)您正在開發(fā)的任何應(yīng)用。
2、對于在新的無服務(wù)器架構(gòu)、微服務(wù)、容器、Kubernetes、功能即服務(wù)(FaaS)和云環(huán)境中運(yùn)行 Java 而言,Quarkus 堪稱是一個(gè)有效的解決方案,因?yàn)樵趧?chuàng)建它時(shí)就充分考慮了所有這些因素。
結(jié)語
紅帽官方介紹的這些特性指標(biāo),除了Graal的native image沒體驗(yàn)到外(windows環(huán)境支持不友好,折騰了很久都沒成功),基本上都體驗(yàn)了一番,相比于spring boot,內(nèi)存確實(shí)占用的更少、啟動速度也更快了,但是沒有宣傳的快了300倍這么夸張。但是有一個(gè)特性是博主體驗(yàn)后在也忘不掉的,Quarkus的實(shí)時(shí)編碼功能,無論你怎么改動你的程序,在下次請求到來時(shí)時(shí),總能自動編譯加載到最新的代碼,而且速度非??欤惺懿坏街匦戮幾g的過程。就像開發(fā)php一樣的體驗(yàn)。這種感覺很爽,大大的提升了開發(fā)效率??偠灾?,java開發(fā)生態(tài)中,在spring boot大行其道下,Quarkus這些優(yōu)秀特性還是值得一試的。
以上就是Quarkus云原生開篇java框架簡介的詳細(xì)內(nèi)容,更多關(guān)于Quarkus云原生java框架的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Java中使用Thread類和Runnable接口實(shí)現(xiàn)多線程的區(qū)別
這篇文章主要介紹了使用Thread類和Runnable接口實(shí)現(xiàn)多線程的區(qū)別,本文給大家介紹了兩種實(shí)現(xiàn)方式的步驟,除了以上兩種多線程實(shí)現(xiàn)方式,還可以使用 Callable 接口實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07
JavaScript base64 與 File 之間的互轉(zhuǎn)(操作方法)
在JavaScript 中,可以使用 Blob 對象將 base64 字符串轉(zhuǎn)換為 File 對象,這篇文章主要介紹了JavaScript base64 與 File之間的互轉(zhuǎn),需要的朋友可以參考下2024-05-05
k8s+springboot+CronJob定時(shí)任務(wù)部署實(shí)現(xiàn)
本文主要介紹了k8s+springboot+CronJob定時(shí)任務(wù)部署實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
Spring配置多數(shù)據(jù)源導(dǎo)致事物無法回滾問題
這篇文章主要介紹了Spring配置多數(shù)據(jù)源導(dǎo)致事物無法回滾問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01
SpringBoot+SpringSecurity實(shí)現(xiàn)認(rèn)證的流程詳解
這篇文章主要介紹了SpringBoot+SpringSecurity實(shí)現(xiàn)認(rèn)證的流程,文中通過代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-05-05

