Quarkus:一個Kubernetes原生Java框架

Red Hat發佈了Quarkus,這是一個爲GraalVM和OpenJDK HotSpot量身定製的Kubernetes原生Java框架。Quarkus的目標是使Java成爲Kubernetes和無服務器環境中的領先平臺,爲開發人員提供統一的反應式和命令式編程模型。

Quarkus利用Java開發人員使用的一系列庫,如Eclipse MicroProfile和Vert.x,帶來了一個全棧框架。Quarkus依賴注入基於CDI,允許開發人員使用JPA/Hibernate、JAX-RS/RESTEasy等。此外,Quarkus還包含一個擴展框架,第三方框架作者可以利用該框架對其進行擴展;這個擴展框架同時還編譯成了一個GraalVM原生二進制文件。

RedHat表示,Quarkus提供了可觀的運行時效率,比如快速啓動,支持在容器和Kubernetes上自動伸縮微服務,而低內存利用率有助於優化微服務體系結構部署中的容器密度。同時,它還提供了更小的應用程序和容器鏡像空間佔用。

(圖片來自: https://quarkus.io/)

按照設計,Quarkus完美地引入了命令式和反應式模型,旨在讓熟悉命令式模型但不想學習新範式的Java開發人員以及採用雲原生/反應式模型方法的開發人員快速採用。

命令式風格:

@Inject
SayService say;

@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
    return say.hello();
}

反應式風格:

@Inject @Stream("kafka")
Publisher reactiveSay;

@GET
@Produces(MediaType.SERVER_SENT_EVENTS)
public Publisher stream() {
    return reactiveSay;
}

也可以使用Quarkus實現在無服務器環境中使用的函數,比如,下面是一個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被設計成少配置或無配置,其工作方式很直觀。爲此,開發人員可以用以下工具構建一個新項目:


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)”功能,使開發人員避免了編寫代碼→編譯→部署→刷新瀏覽器→重複的枯燥過程。運行mvn compile quarkus:dev,Quarkus將在開發模式下啓動。當它接收到HTTP請求時,它將保存該請求並檢查是否更改了任何應用程序源文件。如果有,它將透明地編譯更改的文件,重新部署應用程序,然後將HTTP請求發送給重新部署的應用程序。

Quarkus似乎至少是雲時代一個有趣的替代方案。在這個時代,容器、Kubernetes、微服務、函數即服務(FaaS)和雲原生應用程序正在提供更高級別的生產力和效率。

要了解關於Quarkus的更多細節,請訪問 quarkus.io。想要開始使用Quarkus的開發人員可以查看入門指南或其他可用的指南。

查看英文原文:Quarkus, a Kubernetes Native Java Framework

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章