Oracle推出轻量级Java微服务框架Helidon

近日,Oracle推出了一个新的开源框架Helidon,该项目是一个用于创建基于微服务的应用程序的Java库集合。和Payara MicroThorntail(之前的WildFly Swarm)、OpenLibertyTomEE等项目一样,该项目也加入了MicroProfile家族。

Helidon最初被命名为J4C(Java for Cloud),其设计以简单、快速为目标,它包括两个版本:Helidon SEHelidon MP。Helidon SE提供了创建微服务的三个核心API:Web服务器、配置和安全,用于构建基于微服务的应用程序,不需要应用服务器。Helidon MP支持用于构建基于微服务的应用程序的MicroProfile 1.1规范。

Web服务器

受NodeJS和其他Java框架的启发,Helidon的Web服务器是一个异步、反应性API,运行在Netty之上。WebServer接口包括对配置、路由、错误处理以及构建度量和健康端点的支持。

下面的示例代码演示了如何启动一个简单的Helidon Web服务器,在一个随机可用的端口上显示“It works!”:

配置

配置组件Config加载和处理键/值格式的配置属性。在默认情况下,配置属性将从定义好的application.propertiesapplication.yaml文件中读取,它们位于/src/main/resources目录下。

下面的示例代码基于前面的例子构建,它演示了如何使用Config,通过读取applications.yaml文件获得指定的端口启动Web服务器。

安全

Security为身份验证、授权和审计提供支持。已经有许多用于Helidon应用程序的安全提供程序实现。有三种方法可以将安全性内置到Helidon应用程序中:从构建器、通过配置或者是前两者的结合。

下面的示例代码演示了如何构建Security实例、使用Config获取用户身份验证(使用加密密码)并显示服务器时间。

 

GitHub提供了更详尽的安全示例。

Helidon的架构

下面的架构图显示了Helidon SE和Helidon MP的关系。

下图说明了Helidon SE和Helidon MP所属的微服务框架类别。

入门指南

Helidon提供了快速入门示例来演示Helidon SE和Helidon MP之间的区别。

下面的Maven和Java命令将生成并打包Helidon SE示例,使用Helidon的Web服务器创建一个REST服务。

 

下面的Maven和Java命令将生成并打包Helidon MP示例,使用MicroProfile的JAX-RS API创建一个REST服务。

 

一旦服务器开始运行,就可以执行下面的命令:

GitHub上可以找到整个Helidon项目。

Oracle的高级软件开发经理Dmitry Kornilov向infoQ介绍了这个新项目。

InfoQ:是什么给了甲骨文开发这个新微服务框架的启发?

Dmitry Kornilov:有关Helidon的工作已经开始一段时间了。当创建云服务的微服务体系结构开始变得非常流行时,开发体验也需要改变。Java EE是一种稳定的技术,但是它有很多遗留代码。我们没有在Java EE上构建微服务,我们意识到,我们需要一个从头开始设计的构建微服务的新框架。Helidon就是这样出现的。

InfoQ:与OpenLiberty、Thorntail、Payara Micro和TomEE等其他MicroProfile实现相比,Helidon有什么独特之处?

Kornilov:Helidon不仅仅是一个MicroProfile实现。它有两个版本:Helidon SE和Helidon MP。

Helidon SE构成了Helidon的核心。它是一组轻量级的库,其中的库可以单独使用,但如果一起使用,就可以满足开发人员创建微服务的基本需求:配置、安全和Web服务器。它带来了一种开发人员喜欢的更现代的反应性方法。我们总是尽力明确:不使用注入“魔法”,使Helidon SE应用程序易于调试。没有特殊的jar格式,没有特殊的类加载器。你的应用程序只是一个普通的Java SE应用程序。这也意味着,它与所有IDE兼容,不需要特殊的插件。

Helidon MP是我们的MicroProfile实现,它以Helidon SE为基础构建——它不是派生自某个应用服务器。因此,没有部署模型,没有Java EE打包,没有你不需要的额外的东西。

InfoQ:为什么实现的是MicroProfile 1.1规范,而不是一个更新的版本?

Kornilov:Helidon的开发在一段时间之前就开始了,我们决定坚持使用当时最新的MicroProfile版本。我们正在不断地改进Helidon,对新的MicroProfile版本的支持很快就会到来。

InfoQ:接下来,尤其是在Jakarta EE支持和MicroProfile规范较新版本的支持方面,Helidon将开展哪些工作?

Kornilov:我已经提到过,我们正致力于对MicroProfile较新版本的支持。当新的Jakarta EE 规范出现时,我们将参与它们的开发并在Helidon中支持它们。此外,我们计划向Helidon添加Oracle Cloud集成特性、HTTP客户端支持、项目启动器Web应用,并不断改进我们的示例和文档。

 

转自 http://www.infoq.com/cn/news/2018/10/oracle-introduces-helidon


发表评论

电子邮件地址不会被公开。 必填项已用*标注