立即领取|华润集团、宁德核电、东风岚图等 20+ 标杆企业数字化人才培养实践案例 了解详情
写点什么

Java 近期新闻:Spring AI, Spring Modulith 1.0, Testcontainers 桌面版

  • 2023-09-20
    北京
  • 本文字数:5354 字

    阅读完需:约 18 分钟

大小:2.96M时长:17:13
Java 近期新闻:Spring AI, Spring Modulith 1.0, Testcontainers桌面版

OpenJDK

Oracle 的 Loom 项目架构师兼技术负责人 Ron Pressler 提出了 JEP 草案 8307341,《准备限制 JNI 的使用》,提议限制使用本质上不安全的 Java 本地接口(JNI)及外部函数与内存(FFM) API 中的受限方法,后者预计于 JDK 22 中成为最终功能。从 JDK 22 开始,除非 FFM 用户在命令行中启用了不安全的本地访问,这项策略将使 Java 运行时显示使用 JNI 的相关警告。预计在 JDK 22 之后的版本中, JNI 的使用将导致异常抛出而非警告。

 

JDK 回归测试工具 jtreg 的版本 7.3.1 已发布并准备集成至 JDK 中, 修复了 jtreg

版本 7.3 中会导致无法在 Windows 上正确设置默认环境变量的回归问题。关于该版本的更多详情,请参见发表说明

JDK 21

Build 35 仍是 JDK 21 早期访问构建的当前版本。关于该版本的更多详情,请参见发布说明

JDK 22

JDK 22 早期访问构建Build 12 也已于上周发布,主要提供对 Build 11 的更新及多项问题的修复。关于该版本的更多详情,请参见发布说明

 

鼓励开发者们将 JDK 22 及 JDK 21 中的问题反馈至 Java Bug 数据库

Jakarta EE

Eclipse 基金会的 Jakarta EE 开发倡导者 Ivar Grimstad 在每周的 Hashtag Jakarta EE 博客中给出了添加 Jakarta DataJakarta MVC 及 Jakarta NoSQL规范至 Jakarta EE 11 平台的投票结果:只有 Jakarta Data 这一项规范通过。

 

对引入 Jakarta MVC 决定投反对票或弃权的部分评论如下:

 

这项规范成熟且目前已有人采用,但在强制使用前还应有更多供应商侧的采用。正如其他人所说的,这项规范可以被独立添加到任何配置文件中,在不限制任何人的使用的同时,还能创造更多的需求从而被添加到未来版本中,或者是给下次的版本发布计划提供一个更新的理由。


我鼓励这项工作并希望它能得到进一步发展,我期望见到它最终被平台采用的一天。


我认为这是对平台的一项有趣补充,它已经被添加到 GlassGish 中并且还是开箱可用的。但我们也有一些顾虑,其中就有 Jakarta MVC 是基于 Jakarta REST,而 Jakarta EE 中目前的 MVC 框架是基于 Jakarta Servlet 这一事实。以 REST 为基础的新 API 则又让事情更加混乱,毕竟 Jakarta EE 的核心就是“HTTP 处理 API”。我们希望 Jakarta Servlet 和 Jakarta REST 之间能先搭建一个共同基础,再将任何构建于 Jakarta REST 的东西接入平台。

 

对引入 Jakarta NoSQL 决定投反对票或弃权的部分评论如下:

 

目前的架构设计相比 Jakarta 平台的发布计划似乎需要更为频繁的更新,这让将其暂时排除在平台内给出了有利的论据。另外一项要求则可能是要先将 Jakarta Data 和 Jakarta Config 引入。总体来说,支持 NoSQL 是个好主意,所以这个决定在未来可能会变化。


这项规范很有用并且在不远的将来也应被引入,但不是现在,它在 EE 11 时间框架内的成熟度也不明确。


与供应商的 API 或运行时相比,(NoSQL)没有实际的功能,甚至可能恰恰相反:不使用专属 API 就没法使用 NoSQL 后端,在我看来这和目标南辕北辙。唯一的好处是它能在 10 到 15 行代码内完成,所以我觉得这不能让维护的负担名正言顺。

 

BellSoft

BellSoft 已为 Liberica JDK 17 及 OpenJDK 11 的下游发行版本提供了补丁发布,其中包括对 JDK-8313765“无效 CEN 头(无效 zip64 额外数据字段大小)”这一关键问题修复,该回归问题中通过多个三方工具打开 APK、ZIP 或 JAR 文件会导致 ZipException 抛出。这一问题在 JDK-8302483“改善 ZIP64 额外字段验证”中出现,在打开 ZIP 文件时需要对 ZIP64 额外字段提供附加验证。

 

BellSoft 同样推出了基于 Alpaquita Linux专为 Spring Boot 应用程序设计的 Alpaquita 容器,前者是一款为 Java 编程语言和 Liberica JDK 量身定做、以 Alpine Linux 为基础的操作系统。Alpaquita 容器于 2022 年 9 月首次推出,其灵感来源是带有 Spring Boot 应用程序的小型容器可节省云资源这一发现

Spring 框架

Spring Boot 3.2.0 的第二里程碑版本的发布提供问题修复、文档优化,依赖升级以及新功能,其中包括:使用 jOOQ 功能判断 SQL 方言;替换已弃用的 TaskSchedulerBuilder类的新增 ThreadPoolTaskSchedulerBuilder 类;新增 SimpleAsyncTaskExecutorBuilder 类用于构建 SimpleAsyncTaskExecutor 类的实例。关于该版本的更多详情,请参见发布说明

 

Spring Boot 的 3.1.33.0.10 及 2.7.15 版本,均提供文档优化、依赖升级及重要问题修复,其中包括:记录检测到的非 XML 格式且带有查询参数的配置 URL;JobLauncherApplicationRunner 类的一个实例即使未执行任何任务也会返回成功退出码;添加 RabbitMQ 冒烟测试所缺的一个测试。关于这些版本的更多详情,请参见3.1.3 版本3.0.10 版本2.7.15 版本的发布说明。

 

Spring Modulith 1.0 版本 发布,主要提供:移除 Scenario 类的实验性声明;移除 BOM 中 Spring Modulith Events 的父 POM;升级至 Spring Asciidoctor Backends 0.0.7 版本及 jMolecules 2023.1.0 版本。关于该版本的更多详情,请参见发布说明。InfoQ 将跟进更为详细的报道。

 

Spring 授权服务器 1.1.2 版本发布,提供依赖升级及重要问题修复,其中包括:新增长度验证以避免无效 usercode 导致的 HTTP 500 内部服务器错误;示例测试套组 demo-authorizationserver 未能在构建流程中被一并执行;自定义表单登录类 DefaultErrorController 在抛出 NullPointerException 时缺失错误信息属性。关于该版本的更多详情,请参见发布说明

 

Spring Batch 的 5.1.0-M2、5.0.3 及 4.3.9 版本现已发布,提供问题修复、文档优化及功能增强:在 Jackson2ExecutionContextStringSerializer 类的可信列表中新增 Java 的 ConcurrentHashMapDate类;替换 mock() 方法中的 mock(Class<T> classToMock) 方法以实现自动检测需要模拟的类或接口。5.1.0-M2 版本中新增功能包括:支持批量插入,MongoItemWriter 类中新增访问器,以便于扩展。关于这些版本的更多详情,请参见 5.1.0-M2 版本5.0.3 版本4.3.9 版本的发布说明。

 

于上周 SpringOne 大会中推出Spring AI,据称是“用于开发 AI 应用程序的 Spring 友好 API 和抽象”,开发者们可通过这段由 VMware 公司 Spring 开发倡导者 Josh Long 及 高级资深工程师 Mark Pollack 带来的油管视频,或是 ACME 健身商城应用程序了解更多详情。InfoQ 将跟进更为详细的新闻报道。

AtomicJar

“为数据库、消息代理、网络浏览器或任何可运行于 Docker 容器内的东西提供可抛式轻量级实例的开源框架”的 Testcontainers 的制造商 AtomicJar推出了全新 Testcontainers 桌面版应用程序,面向 Java 社区免费使用。该版本所提供的功能包括:允许开发人员设置固定端口,以提升调试体验,连接至运行中容器,并可冻结容器避免其在调试过程中关闭。该应用还允许开发者轻松切换本地容器运行时,避免在通过 OrbStack、Colima、Rancher Desktop 或 Podman 运行 Testcontainers 时再操作 testcontainers.properties 文件。InfoQ 将跟进更为详细的新闻报道。

 

Testcontainers for Java 1.19.0 版本同样于上周发布,提供重大变更,其中包括:Wait 类中新增 forListeningPort(port) 方法便于检查特定端口;默认使用 SelinuxContext.SHARED 枚举; 新增 ClickHouseContainer 类实现,支持 withUsername()withPassword()withDatabaseName() 及 withUrlParam() 方法。

Open Liberty

IBM 已发布Open Liberty 23.0.0.8 版本,主要提供:支持 OpenID Connect 客户端保护授权代码授权(PKCE),可用于避免授权码拦截攻击;修复 CVE-2023-38737 漏洞,该漏洞可导致攻击者向 Open Liberty 22.0.0.13 版本至 23.0.0.7 版本发送特制请求,导致服务器占用内存资源从而导致拒绝服务;确保 featureUtility installFeature <featurename> 命令执行后会安装足够数量的功能,该命令在更新前无法保证正常工作。

Quarkus

红帽发布Quarkus 的 3.3.0 版本,提供重要变更,其中包括:优化 OpenTelemetry 扩展;新增 SmallRye Reactive Messaging Pulsar 扩展;可在 REST Client Reactive 扩展中自定义 Jackson ObjectMapper 类的功能。值得注意的是,从这一版本开始,版本名称中的 .Final 后缀将被移除,这种版本控制方式已经过时。关于该版本的更多详情,请参见发布说明

MicroProfile

在前往 MicroProfile 6.1 版本的路上,MicroProfile 工作组交付了 MicroProfile Metrics 5.1 规范的首个发布版本候选,提供的重要变更包括:引入 MicroProfile 配置属性,可自定义直方图和定时器指标追踪和输出的百分比、直方图桶的统计数据;@RegistryScope 注解变更为 Qualifier;新增 mp.metrics.defaultAppName 属性用于要求标签组的统一,这一问题曾在多应用程序服务器实现中造成问题。关于该版本的更多详情,请参见发布说明

 

同样,MicroProfile Telemetry 1.1 规范的第二发布版本候选也已发布,提供对 OpenTelemetry Java 1.29.0 版本的依赖升级;明确 Span 和 Baggage bean 在当前 span 或 baggage 变更时的行为;不依赖时间戳的测试实现。关于该版本的更多详情,请参见发布说明

Micronaut

Micronaut 基金会已交付 Micronaut 框架第五维护版本 4.0.5,提供模块更新如下:Micronaut CassandraMicronaut MicroStreamMicronaut SecurityMicronaut LiquibaseMicronaut FlywayMicronaut GCPMicronaut AWS 以及 Micronaut Servlet。关于该版本的更多详情,请参见发布说明

 

用于 JHipster 的 Micronaut Blueprint 2.0.0 版本也于上周发布。基于 JHipster 最新稳定版本 7.9.3 版本,该蓝图可为单体或微服务形式 JHipster 应用程序生成基于 Micronaut 框架 3.10.1 版本的后端服务器。

阿帕奇软件基金会

阿帕奇 Groovy 5.0.0 版本的首个 alpha 发布提供众多问题修复、依赖升级、优化及新功能,其中包括:DefaultGroovyMethods 类中新方法 asChecked() ,用于优化对 checkedCollection()checkedList()checkedMap() 等 Java Collections 类中的支持;新增 @OperatorRename 注解,用于优化 AST 转换; 增加对 JEP 445,未命名类和实例 main 方法(预览版)的初始支持。关于该版本的更多详情,请参见发布说明

 

阿帕奇 Groovy 4.0.14 及 3.0.19 版本同样提供问题修复、依赖升级及优化,其中包括:DefaultGroovyMethods 类中定义的 collectEntries() 方法支持空参数;支持静态类型检查时元组闭包参数类型推断。关于该版本的更多详情,请参见 4.0.14 版本3.0.19 版本的发布说明。

 

最后,阿帕奇 Groovy 2.5.23 版本的发布,提供两处问题修复:优化 Closure 类中变量解析的行为;执行 Groovy 脚本时抛出 NoSuchMethodError。关于该版本的更多详情,请参见发布说明

 

阿帕奇 Tomcat的 11.0.0-M1110.1.139.0.80 及 8.5.93版本于上周发布,四个版本均提供重要变更,其中包括:修复阿帕奇 Tomcat 的表单验证功能导致 URL 重定向至不受信任网站的 CVE-2023-41080 漏洞;应用程序或库同时设置了非 HTTP 500 内部服务器错误码及 jakarta.servlet.error.exception</code> 请求属性时,在处理错误页面时不会再使用默认 HTTP 500,而使用程序提供的错误码。11.0.0-M11 版本同样包含对 HTTP 参数处理的更新,以与 Jakarta Servlet 6.1 API 的 ServletRequest 接口方法定义变更保持一致。关于这些版本的更多详情,请参见 11.0.0-M11 版本10.1.13 版本9.0.80 版本8.5.93 版本的发布说明。

Grails

Grails 基金会推出Grails Spring Security Core 插件的 6.0.0 版本,该版本具有更高安全性、支持 Spring Security 5.8.6 版本、 Grails 6.0.0 版本兼容、优化了命令行界面、升级依赖关系,并改进了文档导航。

JHipster

JHipster Lite 的 0.41.0 版本已经发布,主要提供问题修复、依赖升级及优化,其中包括:使用 JHipster 的@ExcludeFromGeneratedCodeCoverage 注解替换 Java 的 @Generated 注解;移除 OAuth2Configuration 类中的 password() 方法;使用应用程序配置文件中的配置项执行集成测试。关于该版本的更多详情,请参见发布说明

Eclipse Vert.x

Eclipse Vert.x 团队已为用于分析工作负载的实时分布式数据存储,阿帕奇 Pinot Java 客户端推出了全新的 Pinot 客户端。这一新客户端可为 Eclipse Vert.x 应用程序查询阿帕奇 Pinot 服务器提供便利的 API。

Yupiik

Yupiik Fusion 的 1.0.6 版本现已发布,提供重要变更,其中包括:支持超过 255 行的嵌套式表格;可在 PartialResponse 类中自定义 JsonRpcHandler 类的 RESPONSE_HEADERS 字段;支持OffsetDateTimeZoneOffset 及 LocalDate 作为 JSON-RPC 端点的根参数。关于该版本的更多信息,请参见发布说明

SpringOne

SpringOne 及 VMware Explore 大会上周于内华达州拉斯维加斯的威尼斯人会展中心举行,大会内容受众为应用程序开发人员、平台操作员、DevOps、SRE 及应用程序架构师。涉及的 Spring 技术包括:Spring 应用程序的平台及工具、Spring 框架、Spring Boot、Spring Security、Spring Cloud、Spring Data/Stream 以及 Spring 社区。


原文链接:

Java News Roundup: Introducing Spring AI, Spring Modulith 1.0, Testcontainers Desktop


相关阅读:

Java 21:最新进展一览

Java 近期新闻:单查询加载、GraalVM、GlassFish、JReleaser、Quarkus、Micronaut

2023-09-20 09:595653

评论

发布
暂无评论
发现更多内容

容器化 | MySQL on K8s 开源开放的高可用容器编排方案

RadonDB

MySQL 容器 RadonDB KubeSphere

GO database/sql 连接池源码分析

非晓为骁

源码分析 Go 语言 连接池 database

“AI赋能”大学计划落地,英特尔联合生态伙伴推进产教融合

E科讯

有状态应用如何在Kubernetes平台上快速迁移和重建

焱融科技

云计算 Kubernetes 容器 云原生 高性能

继BAT之后,又一头部厂商开始构建低代码生态!=

优秀

低代码

Vue-3-生命周期管理

Python研究所

Vue 大前端 签约计划

和12岁小同志搞创客开发:设计一款亮度可调节灯

不脱发的程序猿

DIY pwm 创客开发

澳鹏Appen:用高质量的训练数据,赋能更好的智能驾驶

澳鹏Appen

人工智能 自动驾驶 训练数据

基于 Kubesphere 的 Nebula Graph 多云架构管理实践

青云技术社区

KubeSphere

分布式数据库在抖音春晚活动中的应用

火山引擎开发者社区

数据库 后端

在云原生场景下构建企业级存储方案

青云技术社区

云原生

极狐GitLab致力打造DevSecOps 行业标准

极狐GitLab

ci 修复措施 安全扫描器 安全测试

不管卷不卷,面试还是得问问你G1原理!

艾小仙

Java 编程 程序员

Python——默认字典 (defaultdict)

在即

6月日更

如何基于MindSpore实现万亿级参数模型算法?

华为云开发者联盟

算法 mindspore 万亿级参数 大模型

一次性搞清Java中的类加载问题

华为云开发者联盟

Java

文件保险箱——用区块链保护文件

趣链科技

区块链 区块链应用

使用 VideoToolbox 探索低延迟视频编码 | WWDC 演讲实录

网易云信

低延时

最新阿里+头条+腾讯大厂Android笔试真题,附详细答案

欢喜学安卓

android 程序员 面试 移动开发

jenkins-01 | 安装

Python研究所

持续集成 jenkins CI/CD

最新大厂Android校招面试经验汇总,看完没有不懂的

欢喜学安卓

android 程序员 面试 移动开发

在windows上用Nginx做正向代理

Python研究所

网络 Proxy 正向代理

迷惘的六月份

卢卡多多

生活状态 6月日更

技术干货 | macOS桌面端录屏采集实现教程

ZEGO即构

大前端 音视频 WebRTC 屏幕录制

云小课|RDS实例连接又失败?看我祭出杀手锏!

华为云开发者联盟

数据库 关系型数据库 云数据库 RDS GaussDB(for MySQL)

高可用 | Xenon:后 MHA 时代的选择

青云技术社区

万字长文详解HiveSQL执行计划

五分钟学大数据

sql 大数据 hive Hive SQL

云小课 | 华为云KYON之ELB混合负载均衡

华为云开发者联盟

负载均衡 华为云 云网络 KYON企业级云网络 弹性负载均衡ELB

Java进阶 | 泛型机制与反射原理

晨雨听风

Java

详解Java中static关键字和final关键字的功能

华为云开发者联盟

Java static关键字 final关键字 静态变量

阿里P8架构师(花名:霍州)Java程序性能优化“学习日记”

Java架构追梦

Java 阿里巴巴 架构 面试 性能优化

Java 近期新闻:Spring AI, Spring Modulith 1.0, Testcontainers桌面版_编程语言_Michael Redlich_InfoQ精选文章