Redlich 译者 | 张卫滨 策划 | 丁晓昀 本期的 Java 新闻包括 JDK 19、JDK 20、Spring 框架的更新、Spring Cloud 与 Spring Tools、Helidon Helidon 甲骨文引入了 Helidon Níma,这是一个基于虚拟线程的微服务框架,它提供了一个低开销、高并发的服务器,同时保持了阻塞式的线程模型。 在 Helidon 项目的协助下,这个新的框架随 Helidon 4.0.0 发布了第一个 alpha 版本,但是 Java 社区需要 2023 年底才能等到正式的 GA 版本。 关于 Helidon Níma 的更多细节,可以参阅 InfoQ 的新闻报道。
Helidon最初被命名为J4C(Java for Cloud),其设计以简单、快速为目标,它包括两个版本:Helidon SE和Helidon MP。 Helidon MP支持用于构建基于微服务的应用程序的MicroProfile 1.1规范。 Helidon的架构 下面的架构图显示了Helidon SE和Helidon MP的关系。 ? 下图说明了Helidon SE和Helidon MP所属的微服务框架类别。 ? 快速入门示例 Helidon提供了快速入门示例来演示Helidon SE和Helidon MP之间的区别。 先借用官方示例,稍后我们手写一个示例。 https://github.com/oracle/helidon 构建Docker镜像 Helidon SE示例 docker build -t quickstart-se target Helidon
5.8.0-M2、Spring Cloud Dataflow 2.9.5、Spring Shell 2.1.1、Payara Platform 5 Community、Micronaut 3.6.1、Helidon Helidon Helidon 3.0.1 已经发布,特性包括:根据配置恢复 Map 的注入行为、更新 WebSocketHandler 将查询参数从 WebServer 正确传播到 Tyrus、JSR 356 参考实现、WebSocket Java API 以及添加了 Helidon SE 和 Helidon MP 更新 HTTP 响应状范围计数器的示例。
(在Helidon上了解更多信息) Helidon MP 是 Eclipse MicroProfile的实现之一,这使得使用许多 API 成为可能,包括 Java EE 开发人员已知的(例如 JAX-RS 在 Helidon SE 模型中,开发人员遵循“没有魔法”的原则,例如,创建应用程序所需的注解数量较少或完全没有。 Helidon SE 被选中用于微服务的开发。 (在Helidon 配置文档中了解更多信息)。 request-to=ktor-service { "name": "helidon-service", "framework": { "name": "Helidon SE", Helidon SE 和 Ktor 是 微框架,Spring Boot 和 Micronaut 是全栈框架,Quarkus 和 Helidon MP 是 MicroProfile 框架。
(在Helidon上了解更多信息) Helidon MP 是 Eclipse MicroProfile的实现之一,这使得使用许多 API 成为可能,包括 Java EE 开发人员已知的(例如 JAX-RS 在 Helidon SE 模型中,开发人员遵循“没有魔法”的原则,例如,创建应用程序所需的注解数量较少或完全没有。 Helidon SE 被选中用于微服务的开发。 格式的文件进行配置(在Helidon 配置文档中了解更多信息)。 request-to=ktor-service { "name": "helidon-service", "framework": { "name": "Helidon SE Helidon SE 和 Ktor 是 微框架,Spring Boot 和 Micronaut 是全栈框架,Quarkus 和 Helidon MP 是 MicroProfile 框架。
作者 | A N M Bazlur Rahman 译者 | 张卫滨 策划 | 丁晓昀 在 Helidon 伞项目下,甲骨文推出了基于虚拟线程(JEP 425)的新微服务框架 Helidon Níma 开发人员可以通过 Helidon MP 或 Helidon SE 使用常规的 Helidon 框架达到一定的吞吐量,但是如果应用需要更高的性能,他们唯一能做的就是采用基于反应式的服务。 Helidon Níma 使用虚拟线程来解决这个问题,因为基于虚拟线程,阻塞的成本是很低的,所以我们可以创建数以百万计的虚拟线程。 Helidon Níma 是一个完全开源的框架,是 Helidon 代码库的一部分。 尽管 Helidon 项目是基于 Netty 的,但是甲骨文公司的软件开发人员 Dmitry Aleksandrov 在他的博客文章中提到: Helidon Níma 网络服务器计划在 Helidon
本期项目概览: Jeepay:开源支付系统 document-sharing-site:文档在线检索预览 asyncTool:并行框架 Helidon:用于编写微服务程序的 Java 库 AgileBoot-Back-End jd-platform-opensource/asyncTool 入门教程:https://gitee.com/jd-platform-opensource/asyncTool/blob/master/QuickStart.md Helidon Helidon 拥抱云原生,全面支持 GraalVM Native Image。 相关地址 : 项目地址:https://github.com/helidon-io/helidon 官网:https://helidon.io/ AgileBoot-Back-End:快速开发脚手架
针对 Log4Shell(Log4j)漏洞,其他供应商的声明 甲骨文(Oracle)关于 Helidon 的 声明: 默认情况下,基于 Helidon 的应用程序不会使用 Log4j,Log4j 也不会出现在类路径中 但是 Helidon 提供了一个可选的 Log4j 集成模块( helidon-logging-log4 ),并且 Helidon 会管理 Log4j 的版本。 如果你的应用程序使用了helidon-logging-log4,或者你的应用程序直接使用了 Log4j,那么你的应用程序需声明对 Log4j 的显式依赖。 但是这个依赖的版本可能会被 Helidon 管理。
另外,我们使用了小型、轻量化的框架(Helidon for Java 以及 Go-Kit for Go),两袖清风尝试了 Java 的纯 JAX-RS。 Java 应用程序运行在 JDK 11 与 Helidon 2.0.1 之上。Go 应用程序则使用 Go 1.13.3 进行编译。 ) 是 否 7.38 11216.42 318545KB / 529848KB Java (Helidon) 否 否 0.40 74827.90 307672KB / 489568KB Java (Helidon 以下是各个变体的容器大小: Go 11.6MB Java/Helidon 1.41GB Java/Helidon JLinked 150MB 原生镜像 25.2MB 以下为本轮测试结果: 响应时间图表: Java 的现代版本以及 Helidon 等新型框架在消除 / 减轻 Java 长期存在的某些重大问题(例如冗长、GC 性能、启动时间等)拥有良好的表现。
5、Helidon Helidon 去除了 Java Enterprise Edition,保留轻量级的、基于 servlet 的核心,并吸引了大量的粉丝。 在 Helidon 的,开发人员从 Netty,并添加代码进行路由和错误处理。它采用了代码的两个基本模型,即所谓的 SE 和 MP 版本。 Node 开发者可能更熟悉 Helidon SE,因为其具有由句点连接的函数调用。使用 JAX-RS 的 Java 程序员则更熟悉 Helidon MP。 此外,Helidon 还集成了一些备受好评的工具,这些都是它能够吸引大量开发者的原因。 6、Cricket 另外一个用于快速 API 开发框架的是 Cricket。
M5、Open Liberty 22.0.0.6 和 22.0.0.7-beta、Quarkus 2.10.0.CR1、Apache Groovy 4.0.3、 Eclipse Mojarra 4.0、Helidon Helidon 甲骨文(Oracle)发布了 Helidon 2.5.1,其中包含很多缺陷修复、依赖项升级,并建议开发人员使用 GraalVM 21.3.2 来局部缓解在本地镜像中使用时出现的间歇性微轮廓容错 此外,甲骨文将不再为 Helidon 应用程序管理 Mockito 了。 JNation 会议已于上周在葡萄牙科英布拉的圣弗朗西斯科修道院(Convento San Francisco)举行,来自 Java 社区的许多演讲者就 Quarkus、DevOps、Log4Shell、Helidon
(在Helidon上了解更多信息) Helidon MP 是 Eclipse MicroProfile的实现之一,这使得使用许多 API 成为可能,包括 Java EE 开发人员已知的(例如 JAX-RS 在 Helidon SE 模型中,开发人员遵循“没有魔法”的原则,例如,创建应用程序所需的注解数量较少或完全没有。 Helidon SE 被选中用于微服务的开发。 格式的文件进行配置(在Helidon 配置文档中了解更多信息)。 request-to=ktor-service { "name": "helidon-service", "framework": { "name": "Helidon SE Helidon SE 和 Ktor 是 微框架,Spring Boot 和 Micronaut 是全栈框架,Quarkus 和 Helidon MP 是 MicroProfile 框架。
5、Helidon Helidon 去除了 Java Enterprise Edition,保留轻量级的、基于 servlet 的核心,并吸引了大量的粉丝。 在 Helidon 的,开发人员从 Netty,并添加代码进行路由和错误处理。它采用了代码的两个基本模型,即所谓的 SE 和 MP 版本。 Node 开发者可能更熟悉 Helidon SE,因为其具有由句点连接的函数调用。使用 JAX-RS 的 Java 程序员则更熟悉 Helidon MP。 此外,Helidon 还集成了一些备受好评的工具,这些都是它能够吸引大量开发者的原因。 [在这里插入图片描述] 6、Cricket 另外一个用于快速 API 开发框架的是 Cricket。
以下内容与观点主要源自:https://medium.com/helidon/can-java-microservices-be-as-fast-as-go-5ceb9a45d673 在程序员圈子里,普遍的看法是 Java老、慢、无聊 ,而Go是快、新、酷 为了尽可能的进行一个相对公平的测试,他们使用了一个非常简单的微服务,没有外部依赖关系(比如数据库),代码路径非常短(只是操纵字符串),使用了小型的、轻量级的框架(Helidon Java应用程序运行在JDK11和Helidon2.0.1上。使用Go 1.13.3编译的Go应用程序。 结果如下: 可以看出,第一回合是Go赢了! 和第一轮类似,使用了100个线程,每个线程使用了10,000个循环,10秒的加速时间,以及相同版本的 Go,Java,Helidon 和 GraalVM。 下面是各种不同容器的大小: Go 11.6MB 11.6 MB Java/Helidon 1.41GB 1.41 GB Java/Helidon JLinked 150MB 150mb Native image
到目前为止,MicroProfile规范已经提出了多种实现方式,最著名的是Payara Micro和Helidon MP。 在我看来,Helidon显然是最后一名,因为我为应用程序运行付出了很大的努力。 Helidon MP甚至比Spring慢-平均耗时为8.27秒。 但是,真正的赢家是GraalVM。 Helidon MP耗时414 MB,与Spring Boot类似。 Helidon显然是最后一名,只能提供175 r/s的速度,同时分配超过1 GB的内存。
随着更多框架(如 Spring、Jakarta EE 和 Helidon)以 Java 21 为基础,Java 21 转至 早期采用者类别,同时 Java 17 进入 早期多数类别。 Helidon 和 Vert.x 框架在最新版本中实现了虚拟线程服务器,虚拟线程框架(Helidon Nima 和 Vert.x) 被转移至 早期采用者类别。 由于 Helidon 支持虚拟线程并发布了 Helidon 4.0,Helidon 移至 早期多数类别,而 Helidon 3.0 和 2.0 仍支持反应式服务器。
Helidon Oracle 发布了 Helidon 2.6.0,带来了一些显著的变化,其中包括:仅当enable标志设置为true时才注册OciMetricsSupport服务;依赖项升级到 SnakeYAML 2.0;通过移除未部署的工件来清理 Helidon BOM;从文档中删除了将指标从服务器传播到客户端的说明。
日的 Java 每周新闻综述,内容主要涉及 OpenJDK、JDK 18、JDK 19、JSR 381 获 JCP 批准、Payara Platform 2022 路线图、 Quarkus 2.7.1、Helidon Helidon 甲骨文公司发布了 Helidon 2.4.2,对 WebServer、WebClient、Fault Tolerance 和 Long-Running Actions 等各种 Helidon
Helidon Helidon 3.1.2 是一个缺陷修复版本,包括:废弃 BodyPart 接口中的 name() 和 filename() 方法,将其替换为 isNamed() 方法;修复 OIDC 退出功能;改善 Helidon Config 组件;在 Helidon 2.x 发布序列中创建一个 OpenTelemetry 规范的向后移植(backport)。
另外,我们使用了小型、轻量化的框架(Helidon for Java 以及 Go-Kit for Go),两袖清风尝试了 Java 的纯 JAX-RS。 Java 应用程序运行在 JDK 11 与 Helidon 2.0.1 之上。Go 应用程序则使用 Go 1.13.3 进行编译。 测试结果如下: 我们宣布,Go 成为首轮测试的获胜者! 与第一轮一样,我们仍然使用 100 个线程、每线程 10000 个循环,10 秒启动时间以及相同版本的 Go、Java、Helidon 以及 GraalVM。 以下是各个变体的容器大小: Go 11.6MB Java/Helidon 1.41GB Java/Helidon JLinked 150MB 原生镜像 25.2MB 以下为本轮测试结果: 响应时间图表: Java 的现代版本以及 Helidon 等新型框架在消除 / 减轻 Java 长期存在的某些重大问题(例如冗长、GC 性能、启动时间等)拥有良好的表现。