Red Hat 發(fā)布了 Quarkus,這是一個(gè)為 GraalVM 和 OpenJDK HotSpot 量身定制的 Kubernetes 原生 Java 框架捂龄。Quarkus 的目標(biāo)是使 Java 成為 Kubernetes 和無(wú)服務(wù)器環(huán)境中的領(lǐng)先平臺(tái)止后,為開(kāi)發(fā)人員提供統(tǒng)一的反應(yīng)式和命令式編程模型卵渴。
Quarkus 利用 Java 開(kāi)發(fā)人員使用的一系列庫(kù)垦江,如 Eclipse MicroProfile 和 Vert.x姑躲,帶來(lái)了一個(gè)全椓寐梗框架谦炬。Quarkus 依賴注入基于 CDI,允許開(kāi)發(fā)人員使用 JPA/Hibernate节沦、JAX-RS/RESTEasy 等键思。此外,Quarkus 還包含一個(gè)擴(kuò)展框架甫贯,第三方框架作者可以利用該框架對(duì)其進(jìn)行擴(kuò)展稚机;這個(gè)擴(kuò)展框架同時(shí)還編譯成了一個(gè) GraalVM 原生二進(jìn)制文件。
RedHat 表示获搏,Quarkus 提供了可觀的運(yùn)行時(shí)效率赖条,比如快速啟動(dòng),支持在容器和 Kubernetes 上自動(dòng)伸縮微服務(wù)常熙,而低內(nèi)存利用率有助于優(yōu)化微服務(wù)體系結(jié)構(gòu)部署中的容器密度纬乍。同時(shí),它還提供了更小的應(yīng)用程序和容器鏡像空間占用裸卫。
按照設(shè)計(jì)仿贬,Quarkus 完美地引入了命令式和反應(yīng)式模型,旨在讓熟悉命令式模型但不想學(xué)習(xí)新范式的 Java 開(kāi)發(fā)人員以及采用云原生 / 反應(yīng)式模型方法的開(kāi)發(fā)人員快速采用墓贿。
命令式風(fēng)格:
@Inject
SayService say;
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return say.hello();
}
反應(yīng)式風(fēng)格:
@Inject @Stream("kafka")
Publisher reactiveSay;
@GET
@Produces(MediaType.SERVER_SENT_EVENTS)
public Publisher stream() {
return reactiveSay;
}
也可以使用 Quarkus 實(shí)現(xiàn)在無(wú)服務(wù)器環(huán)境中使用的函數(shù)茧泪,比如蜓氨,下面是一個(gè) AWS Lambda 的例子:
public class HelloLambda implements RequestHandler {
@Inject
HelloGreeter greeter;
@Override
public String handleRequest(HelloRequest request, Context context) {
return greeter.greet(request.firstName, request.lastName);
}
}
Quarkus 被設(shè)計(jì)成少配置或無(wú)配置,其工作方式很直觀队伟。為此穴吹,開(kāi)發(fā)人員可以用以下工具構(gòu)建一個(gè)新項(xiàng)目:
mvn io.quarkus:quarkus-maven-plugin:0.12.0:create \
-DprojectGroupId=my-groupId \
-DprojectArtifactId=my-artifactId \
-DprojectVersion=my-version \
-DclassName="org.my.group.MyResource"
Quarkus 還提供了“在線編碼(Live Coding)”功能,使開(kāi)發(fā)人員避免了編寫(xiě)代碼→編譯→部署→刷新瀏覽器→重復(fù)的枯燥過(guò)程嗜侮。運(yùn)行 mvn compile quarkus:dev港令,Quarkus 將在開(kāi)發(fā)模式下啟動(dòng)。當(dāng)它接收到 HTTP 請(qǐng)求時(shí)锈颗,它將保存該請(qǐng)求并檢查是否更改了任何應(yīng)用程序源文件顷霹。如果有,它將透明地編譯更改的文件击吱,重新部署應(yīng)用程序淋淀,然后將 HTTP 請(qǐng)求發(fā)送給重新部署的應(yīng)用程序。
Quarkus 似乎至少是云時(shí)代一個(gè)有趣的替代方案覆醇。在這個(gè)時(shí)代绅喉,容器、Kubernetes叫乌、微服務(wù)、函數(shù)即服務(wù)(FaaS)和云原生應(yīng)用程序正在提供更高級(jí)別的生產(chǎn)力和效率徽缚。
要了解關(guān)于 Quarkus 的更多細(xì)節(jié)憨奸,請(qǐng)?jiān)L問(wèn) quarkus.io。想要開(kāi)始使用 Quarkus 的開(kāi)發(fā)人員可以查看入門(mén)指南或其他可用的指南凿试。