云原生时代---带你了解火爆的Quarkus技术
目录官网描述Quarkus - Supersonic Subatomic Java简介优势🌰参考资料看一下官网的概述 超音速亚原子-java 超音速就能够说明quarkus的速度相比当前流行的springboot框架是非常快的。quarkus是Red hat红帽公司开源的云原生框架。这是github上对quarkus的描述翻译过来就是Quarkus 是用于编写 Java 应用程序的云原生 (Li
目录
Quarkus - Supersonic Subatomic Java
官网描述
Quarkus - Supersonic Subatomic Java
看一下官网的概述 超音速亚原子-java 超音速就能够说明quarkus的速度相比当前流行的springboot框架是非常快的。quarkus是Red hat红帽公司开源的云原生框架。
这是github上对quarkus的描述
翻译过来就是
Quarkus 是用于编写 Java 应用程序的云原生 (Linux) 容器优先框架。
容器优先:最小的占用空间 Java 应用程序最适合在容器中运行。
云原生:在 Kubernetes 等环境中采用 12 要素架构。
统一命令式和响应式:将非阻塞式和命令式开发风格引入一种编程模型。
基于标准:基于您喜欢和使用的标准和框架(RESTEasy 和 JAX-RS、Hibernate ORM 和 JPA、Netty、Eclipse Vert.x、Eclipse MicroProfile、Apache Camel...)。
微服务优先:为 Java 应用程序带来闪电般的快速启动时间和代码周转。
开发者喜悦:以开发为中心的体验,毫不妥协,让您的惊人应用立即变为现实。
为 Java 应用程序带来闪电般的快速启动时间和代码周转应该是对quarkus的速度描写。
简介
Quarkus 是一个为 Java 虚拟机(JVM)和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架,用于专门针对容器优化 Java,并使其成为无服务器、云和 Kubernetes 环境的高效平台。
Quarkus 可与常用 Java 标准、框架和库协同工作,例如 Eclipse MicroProfile、Spring(作为 2020 年红帽全球峰会追踪的一个环节一起演示)、Apache Kafka、RESTEasy (JAX-RS)、Hibernate ORM (JPA)、Spring、Infinispan、Camel 等。
Quarkus 的依赖注入解决方案基于 CDI(上下文和依赖注入),且包含一个扩展框架来扩展功能并将其配置、引导并集成到您的应用中。添加扩展就像添加依赖项一样容易;或者,您可以使用 Quarkus 工具。
此外,它还向 GraalVM(一种通用虚拟机,用于运行以多种语言(包括 Java 和 JavaScript)编写的应用)提供正确信息,以便对应用进行原生编译。
优势
Red Hat 发布了 Quarkus,这是一个为 GraalVM 和 OpenJDK HotSpot 量身定制的 Kubernetes 原生 Java 框架。Quarkus 的目标是使 Java 成为 Kubernetes 和无服务器环境中的领先平台,为开发人员提供统一的反应式和命令式编程模型
RedHat 表示,Quarkus 提供了可观的运行时效率,比如快速启动,支持在容器和 Kubernetes 上自动伸缩微服务,而低内存利用率有助于优化微服务体系结构部署中的容器密度。同时,它还提供了更小的应用程序和容器镜像空间占用。
由上图可见无论在内存占有还是在响应速度上 quarkus+ GraalVM都用明显的优势,这么大的优势还是很有吸引力的。
按照设计,Quarkus 完美地引入了命令式和反应式模型,旨在让熟悉命令式模型但不想学习新范式的 Java 开发人员以及采用云原生/反应式模型方法的开发人员快速采用。
🌰
下面举几个例子:
1)打包成native方式
$ mvn package -Pnative
# Or
$ ./gradlew buildNative
2)命令式
@Inject
SayService say;
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return say.hello();
}
3)反应式
@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
如果觉得本文对你有帮助,欢迎点赞,欢迎关注我,如果有补充欢迎评论交流,我将努力创作更多更好的文章。
更多推荐
所有评论(0)