Helidon 2.0计划的重要新功能

Oracle即将发布Helidon 2.0,为Java社区带来重大更新,包括支持GraalVM的本地代码生成、新的Web客户端API、反应式数据库客户端以及改进的开发工具。此次更新放弃Java 8支持,最低要求为JDK 11。

在正式发布 Helidon 1.0 不到一年之后,Oracle正朝着正式发布计划于2020年春末发布的Helidon 2.0迈进。在2月初发布的Helidon 2.0.0-M1Helidon 2.0中。 3月下旬发布的0-M2为Java社区提供了重要的新功能的预览,这些新功能包括:支持响应消息和流;一个新的命令行工具,一个用于Helidon SE的新Web客户端API,对Helidon MP的GraalVM支持以及一个新的反应式数据库客户端。

在Helidon 1.0.3版本中引入的对GraalVM的支持仅适用于Helidon SE应用程序。由于在CDI中使用了反射,因此Helidon MP应用程序无法利用GraalVM。作为Java社区最需要的功能之一,Helidon 2.0.0-M1引入了使用GraalVM将Helidon MP应用程序转换为本地可执行代码的支持。Oracle技术人员的咨询成员Tomas Langer已经为Java社区创建了该演示应用程序,以预览此新功能。

为了补充最初的三个Helidon SE核心API(Web服务器,配置和安全性),新的API Web Client完善了Helidon SE的功能。Web客户端处理与指定端点有关的HTTP请求和响应。就像Web服务器API一样,也可以通过**applications.yaml**文件配置Web客户端:

server:
  port: 8080
  host: 0.0.0.0

client:
  connect-timeout-millis: 2000
  read-timeout-millis: 2000
  follow-redirects: true
  max-redirects: 5
  headers:
    - name: "Accept"
        value: ["application/json","text/plain"]
  services:
    exclude: ["some.webclient.service.Provider"]
    config:
      metrics:
        - methods: ["PUT", "POST", "DELETE"]
          type: COUNTER
          name-format: "client.counter.%1$s.%2$s"
    

考虑一个小示例,其中**WebClient**构建了接口的实例,并定义了一个响应以返回纯文本:

WebClient client = WebClient.builder()
        .baseUri("http://localhost")
        .build();

CompletionStage<String> response = webClient.get()
        .path("/endpoint")
        .request(String.class);
    

要更改响应以返回JSON,只需构建**JsonProcessing类的实例并更改response**变量的定义即可:

JsonProcessing jsonProcessing = JsonProcessing.create();
CompletionStage<JsonObject> response = webClient.get()
        .path("/endpoint")
        .register(jsonProcessing.newReader())
        .request(JsonObject.class);
    

为了解决与响应性应用程序连接到设计为非响应性的JDBC数据库相关的挑战,Helidon 2.0.0-M1引入了新的DB Client,它将为Helidon SE应用程序提供一致的响应性数据库访问和查询。DB Client支持通过JDBC和用于MongoDB的反应式驱动程序连接的关系数据库。这个新的API将具有指定数据库连接并在配置文件中编写本机查询代码的功能,从而可以轻松进行与数据库相关的更改,而无需重新编译代码:

db:
  source: "jdbc"
  connection:
    url: "jdbc:mysql://127.0.0.1:3306/pokemon?useSSL=false"
    username: "user"
    password: "password"
    poolName: "mysql"
  statements:
    ping: "DO 0"
    select-all-pokemons: "SELECT id, name FROM Pokemons"
    

DB Client中还将包括对指标,运行状况检查和跟踪的支持。Helidon团队已为Java社区创建了此演示应用程序,以预览此新功能。

在Helidon 2.0.0-M2中引入的开发人员现在可以使用新的Helidon CLI工具通过命令行创建,构建和运行Helidon应用程序。类似于Quarkus(quarkus:dev)提供的热重载,内置的开发循环监视源文件,该源文件在源代码更改时触发应用程序的重新启动。需要单独下载和安装。安装后,可用的命令行选项如下所示:

img

异步消息传递是微服务应用程序的组成部分。为此,将在2.0版中引入MicroProfile独立API,反应式消息传递反应式流运算符的实现。这两个API均可用于Helidon SE和Helidon MP应用程序。但是,只有响应消息才可用于Helidon MP。为了更好地与Helidon SE API保持一致,计划在将来的版本中使用等效的Reactive Messaging API。Helidon还将支持Kafka进行即时消息传递,并计划在将来的版本中增加其他连接器。

Java社区可以期望在Helidon 2.0的最终版本中做出一些重大更改。最值得注意的是,已经放弃了对Java 8的支持,而JDK 11将成为构建Helidon应用程序所需的最低Java版本。某些Helidon软件包也将被删除**java.utiljava.lang而在和中找到相应的软件包java.io**。Helidon 2.0中所有更改的详细信息都可以在更改日志中找到。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值