哈Ha! 我向您介绍德米特里·科尼洛夫·
赫利顿 (Dmitry Kornilov
Helidon)乘飞机逃亡的文章的译文。 我不是Oracle员工,但是我发现了一篇有趣的文章,介绍了一种新的,日益流行的框架类型。 所以走吧...
今天是美好的一天。 今天,我们将介绍用于实现微服务的新MicroProfile Java框架家族。 Helidon项目是Oracle的新Java框架。
根据维基百科的说法,Helidon是希腊语中的燕子,是一种鸟,细长的流线型机身和尖锐的机翼,提供了极大的机动性和……非常高效的飞行。 在云端飞行的理想选择。引言
不久前,有关Helidon项目的工作开始了。 当我们进入云解决方案市场时,微服务架构在创建云服务方面变得非常流行,我们意识到还应该扩展开发专业知识。 可以使用Java EE创建微服务,但是最好具有从头开始设计的基础结构来创建微服务。 我们想要创建一组轻量级的库,这些库不需要Java SE应用程序的应用程序服务器和云。 这些库可以彼此分开使用,但是当一起使用时,它们将为开发人员提供微服务框架的创建:初始配置,安全子系统和Web服务器。
已经尝试从MicroProfile创建标准的微服务系统。 MicroProfile在Java EE / Jakarta EE社区中非常流行,并提供类似于Java EE的开发经验。 我们喜欢这个主意,并支持这项倡议。 Helidon实现了MicroProfile 1.1。 我们将继续努力引入MicroProfile的新版本,并打算在此领域维护相关的Jakarta EE标准,正如已经描述的那样。
Helidon是用Oracle制造的,因此与Oracle Cloud集成不会感到惊讶。 它们不包含在初始版本中,但稍后会添加。 Helidon已经被许多内部Oracle项目使用,这些集成简化了我们开发人员的工作。 我们相信,如果您使用Oracle Cloud,这将简化您的生活。 如果不是,则这些集成是可选的。
分类
微服务编写Java框架分为几类,从小到大:
- Microframeworks-简单,有趣,具有故意限制的功能集,例如:Spark,Javalin,Micronaut等。
- MicroProfile -Java EE开发人员更熟悉,但有点“难”。 其中一些是在Java EE应用程序服务器上开发的,例如:Thorntail(以前称为Wildfly Swarm),OpenLiberty,Payara。
- 全栈 - 全功能 ,例如Spring Boot。
Helidon有两种风格,属于两个类别:Microframeworks和MicroProfile。
- Helidon SE是一种简单,实用,轻巧的微框架 ,以现代反应风格设计。 其中没有“魔术”。 不需要特殊的环境;使用JDK。
- Helidon MP是Eclipse Microprofile实现,提供了Java EE / Jakarta EE开发人员熟悉的开发风格。
建筑学
Helidon的体系结构如下所示。
Helidon SE组件为绿色,包括Config,Security和RxServer。
Java EE / Jakarta EE组件显示为灰色,包括JSON-P,JAX-RS / Jersey和CDI。 他们需要一个MicroProfile实现。 Helidon MP是Helidon SE组件之上的一层。 Oracle Cloud服务的其他组件被涂成红色,并且可以被Helidon SE和Helidon MP组件使用。
使用范例
安装方式
开始使用Helidon的最简单方法是在Java 8(或更高版本)中拥有一个Maven项目,在其中您可以指定Helidon bom-pom和最小的依赖关系:
<dependencyManagement> <dependencies> <dependency> <groupId>io.helidon</groupId> <artifactId>helidon-bom</artifactId> <version>${helidon-version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ..... <dependency> <groupId>io.helidon.webserver</groupId> <artifactId>helidon-webserver-netty</artifactId> </dependency>
直升机停机坪
Helidon SE是轻型反应式微服务的基础。 示例“ Hello world”:
import io.helidon.webserver.Routing; import io.helidon.webserver.WebServer; ..... Routing routing = Routing.builder() .get("/hello", (req, res) -> res.send("Hello World")) .build(); WebServer.create(routing) .start();
在这种情况下,我们在任意(免费)端口上启动Web服务器,并通过/ hello打开访问权限。
添加指标
现在,我们为Helidon SE添加了MicroProfile Metrics接口的实现(不支持DI,因为SE中不包括该支持)。 这将需要以下依赖项:
<dependency> <groupId>io.helidon.metrics</groupId> <artifactId>helidon-metrics-se</artifactId> </dependency>
实现方式:
现在,我们可以使用以下端点:
- /指标 -所有基本指标
- /指标/应用程序/ helloCounter-由“ hello world”应用程序创建的指标
直升机停机坪
Helidon MP是用于微服务的Eclipse Microprofile实现和运行时。
要创建使用呼叫指标的“ Hello world”应用程序,必须创建一个JAX-RS资源类来处理请求:
@Path("hello") @RequestScoped
然后使用以下资源启动服务器:
Server.builder() .addResourceClass(HelloWorld.class) .build() .start();
您还需要在src / main / resources / META-INF目录中创建beans.xml来激活CDI:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd" bean-discovery-mode="annotated"> </beans>
使用此配置,Web服务器将在默认端口(7001)上启动,并通过/ hello打开访问。 。 以下端点将可用:
- 本地主机 :7001 / hello -hello world应用程序本身
- 本地主机 :7001 /指标 -MicroProfile指标
- 本地主机 :7001 /度量标准/应用程序/ com.oracle.tlanger.HelloWorld.hello-我们的“ hello world”应用程序的度量标准
- 本地主机 :7001 /运行状况 -MicroProfile状态指标
计划
我们有许多适合单独撰写文章的计划。
我们的短期目标是在Java社区中介绍和介绍Helidon。 我们计划在一些会议上谈论Helidon。 已经为Oracle Code One 2018安排了四份Helidon报告。我们还申请了EclipseCon Europe 2018,并将参加Jakarta EE / MicroProfile社区日。 培训材料,例如视频,案例研究,文章等。 已经在开发中,即将发布。
至于技术方面,我们正在努力实现MicroProfile的下一版本GraalVM支持。
我们正在研究其他有趣的东西,但到目前为止,我们还无法透露所有信息。 与我们在一起,我们将在准备好新功能时宣布它们。
资料来源
您可能对此感兴趣:
- 最初的名称是J4C(Java for Cloud)
- Helidon由来自布拉格和美国的分布式团队开发。
- Helidon已被Oracle的十多个项目使用
- 一些Helidon组件仍在开发中,并将在一段时间后公开提供。