导读:本文介绍一款名为Quarkus的云原生开源框架。

Quarkus是为OpenJDK HotSpot和GraalVM量身定制的Kubernetes原生Java技术栈。

Quarkus于2020年7月发布第一个稳定版。

Quarkus框架是Red Hat Runtimes的一部分,该系列产品是可以开发和维护云原生应用程序的一系列产品、工具和组件。

Quarkus是开源的,占用空间很少,仅需要很少内存就可以快速加载,从而使得Quarkus成为基于同样精简的Red Hat的分布式云架构平台的理想选择。

作为一种全栈技术,Quarkus在服务器和客户端级别均可使用。

该环境基于Java虚拟机(JVM)开发,可以利用Java利用Kubernetes对虚拟化的应用程序组件进行编程。

Quarkus专门针对容器编译和优化本机Java代码,使其成为Serverles,云和Kubernetes环境占主导地位的世界的高效平台。

Quarkus还可以优化未编译的Java技术栈,能够在本地使用OpenJDK的情况下(即在非编译环境中)也可确保性能提高。

 

开发者易于配置

 

Quarkus不是即插即用技术,但不需要很复杂就可以配置并快速应用。该平台提供实时编码功能,开发者可以立即查看代码更改后的影响、实时修复Bug。

在设置Quarkus时,开发人员可以为可以在JVM模式下运行,也可以在本机模式下编译并运行的应用程序,选择自己喜欢的Java框架。

Quarkus基于著名的Java库,团阶是经验丰富的Java开发者,沉淀了二十多年的标准,事实上也说明了Java开发人员对该框架高度认可。

对于Java专业人员来说,使用Quarkus的学习曲线很小。即使Quarkus本身是一个框架:Kubernetes原生Java堆栈也与大多数框架和实用程序能够紧密合作。

 

反应式与命令式编程

 

Quarkus联合创始人Jason Greene曾担任Red Hat高级工程师兼经理,他希望用Quarkus让Java成为Kubernetes和Servless环境中的领先平台。

Greene希望为开发人员提供一个反应式和命令式的编程模型,以便能够解决更广泛的分布式应用程序体系结构。

传统的命令式编程将仍然是可预见的未来的中心基础,而现代的响应式开发则能够处理异步,非顺序的数据事件,是开发可扩展和动态云应用程序的理想补充。

反应式编程的一个很好的例子是NodeJS和AWS在Lambda上流行的无服务器计算的使用。AWS拥有适当的反应模型业务逻辑,但不必使用内存。而是,在需要时将实例带入实时生产环境就足够了。

 

1 Native方式

$mv package -Pnative

或者:

./gradlew buildNative


2 命令式

@Inject
SayService say;


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


3 反应式

@Inject @Channel("kafka")
Publisher<String> reactiveSay;
@GET
@Produces(MediaType.SERVER_SENT_EVENTS)
public Publisher<String> stream(){
  return reactiveSay;
}


Quarkus与OpenShift集成

 

Quarkus是基于开源容器应用程序平台Red Hat OpenShift 4.6的一部分,自2020年11月以来向开发者提供。

 

数据调查显示,五分之一的使用云的Java开发人员已经在考虑使用Quarkus。由于Quarkus是Kubernetes原生的,因此从一开始就能够将技术与OpenShift结合使用是具备更多意义的。

 

为了方便开发者开始使用Quarkus,Red Hat已更新了“应用程序迁移工具包”。该工具包已经实践了很多年,可以帮助将各种应用程序迁移到不同的平台(例如,从Oracle的WebLogic切换到Red Hat EAP)。通过将工具包与Quarkus集成,开发人员可以得到系统提供的建议,实现无需完全代码重构即可实现集成。

Red Hat为开发人员使用Quarkus铺平了道路,支持他们将框架集成到自己的环境中-从数据中心到外部设备,物联网和边缘计算,从而遍及整个公有云。

这意味Quarkus的世界没有障碍。

 

相关引用:

https://quarkus.io/

https://www.openshift.com/blog/red-hat-openshift-4.6-is-now-available

https://www.redhat.com/en/products/application-runtimes

 

 

编译:场长