不到六个月前就宣布了Helidon项目,但是这个新的开源Java微服务框架已经开始形成。 我们并不是在谈论1.0的大发布,但是0.11.0同样重要。
应该注意的是,该团队已经对最新版本的 API进行了一些更改,以准备1.0,这意味着在升级到0.11.0时,您将需要对应用程序进行更改。 您可以在此处找到更改列表。
Helidon 0.11.0发布了! https://t.co/SGwsJbRiwk
— Helidon项目(@helidon_project) ,2019年1月14日
改进列表不仅包括API重构,还让我们快速了解一下:
- WebServer:在SE 287中添加运行状况支持
- MicroProfile:JWT Auth 208
- MicroProfile:更新为容错1.1.3 253
- WebServer:将Netty更新为4.1.30 269
- CDI扩展:添加MySQL CDI集成示例284
- 配置:GenericType支持配置映射238
- 配置:Java Beans支持197
- 构建:在Windows 252上构建
- 文档:添加创建Docker镜像指南182
- 文档:添加开发指南
Helidon 0.11.0还包含一些修复程序:
- WebServer:检测并允许HTTPURLConnection 309发送的默认Accept标头
- WebServer:确保使用Jersey 317进行正确的路径编码
- CDI扩展:将集成模块添加到bom pom 198
- 容错:内存改进180
- 构建:使用Java 11 225编译时失败
还请参见: “如果您是Java开发人员并且正在编写微服务,那么Helidon是一个不错的选择”
九月10,2018
如果您需要一种更简单的构建微服务的方法,则应尝试一下Helidon项目。 尽管Oracle刚刚开源了这套Java库,但是该项目本身并不新鲜,正如Helidon项目负责人Dmitry Kornilov在最近的博客文章中解释的那样。 这项工作是在一段时间前开始的,该技术巨头已经在10多个项目中使用了它。
Helidon项目(在希腊语中是吞咽的意思)旨在使构建微服务的体验更加令人愉悦-您当然可以为此使用Java EE,但是当有现成的框架时,为什么不使用它呢?
我们希望创建一组轻量级的库,这些库不需要应用程序服务器,并且可以在Java SE应用程序中使用。 这些库可以彼此分开使用,但是当一起使用时,它们将提供开发人员创建微服务所需的一切: 配置 , 安全性和Web服务器 。
– 德米特里·科尼洛夫 ( Dmitry Kornilov)
Helidon项目:
简单快捷
使用Helidon很容易; 由于该项目是运行在快速Netty核心上的库的集合,因此您不必担心额外的开销或膨胀。
响应式Web服务器
Helidon Reactive WebServer轻巧,灵活且具有反应性,并且易于使用-更不用说为您的微服务提供快速基础。
可观察且有弹性
如果您想要编写与Prometheus,Zipkin和Kubernetes集成的可用于云的应用程序,那么Helidon是适合您的项目。 我们是否提到过它为运行状况检查,指标,跟踪和容错提供支持?
MicroProfile支持
Helidon支持MicroProfile,并提供熟悉的API,如JAX-RS,CDI和JSON-P / B。 MicroProfile实现在Helidon Reactive WebServer上运行。
Helidon的基础由三个元素组成:
- WebServer:由Netty支持的具有响应功能的编程HTTP API。
- Config:灵活的配置框架,支持多种来源和格式
- 安全性:处理身份验证,授权和上下文传播的工具链。
用户可以从以下两种编程模型中选择一种:
- Helidon SE:一种功能性编程样式,直接使用Helidon WebServer,Config和Security API。 这样,您将具有完全的透明度和控制力。 JDK用作运行时。
- Helidon MP更具声明性,并支持MicroProfile API系列。 如果您是Java EE / Jakarta EE开发人员,则应该熟悉此模型。
在开始使用两种编程模型中的任何一种之前,请看一下快速入门示例 。
入门
开始使用这组库的最简单方法是,如果您使用带有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>
Helidon SE的Hello World实现如下所示:
Routing routing = Routing.builder()
.get("/hello", (req, res) -> res.send("Hello World"))
.build();
WebServer.create(routing)
.start();
对于Helidon MP,您需要创建一个JAX-RS资源类来处理您的请求
@Path("hello")
@RequestScoped //allows us to use CDI injection
public class HelloWorld {
@GET
@Metered
public String hello() {
return "Hello World";
}
}
之后,您必须使用以下资源启动服务器:
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>
这将在默认端口(7001)上启动Web服务器,并公开端点“ / hello” 。
Helidon项目的下一步是什么
Dmitry在博客文章中说,该项目背后的团队正在努力实现下一个MicroProfile版本以及GraalVM支持。
为确保您不会错过任何即将推出的功能,请查看网站和GitHub存储库 ,并在Twitter上关注它们。
如果您想了解更多有关该项目的信息,将在Oracle Code One 2018上进行一些与Helidon相关的演讲,该团队将参加EclipseCon Europe 2018的Jakarta EE / MicroProfile社区日。
翻译自: https://jaxenter.com/meet-helidon-java-framework-149190.html