Java 近期新闻:Java 29 岁生日、Kotlin 2.0、Java 语义内核 1.0、OpenJDK
1995 年 5 月 23 日,在 Sun World 95 大会上,Java 1.0 面向开发者发布。Java 社区从此诞生,29 年后,这个社区已经发展到包括 370 个全球 Java 用户组、370 个 Java Champions,每年举办多次 Java 相关的大会。Java 已经发布了 22 个正式版本。
在 Devnexus 2024 大会上,Oracle 高级总监、产品管理与开发者参与负责人 Sharat Chander 宣布 JavaOne 将回归,庆祝 Java 的 30 岁生日。大会将于 2025 年 3 月 17 日至 20 日在红木海岸举行。请读者继续关注征文通告。
在结束了评审之后,JEP 477(隐式声明类和实例主方法(第三次预览))已从 Proposed to Target 进入到 Targeted 状态,目标版本为 JDK 23。该 JEP 也就是之前的未命名类和实例主方法(预览)、灵活的主方法和匿名主类(预览)和隐式类和增强的主方法(预览),并根据之前两轮的预览反馈进行了增强,即在 JDK 22 中交付的 JEP 463(隐式类和实例主方法(第二次预览))和在 JDK 21 中交付的 JEP 445(未命名类和实例主方法(预览))。该 JEP 提议“让学生可以在不需要理解太多语言特性的前提下编写他们的第一个程序。”2022 年 9 月,Oracle 的 Java 语言架构师 Brian Goetz 为此撰写了 “Paving the on-ramp” 一文。Oracle 技术委员会成员 Gavin Bierman 已发布规范文档初稿,供 Java 社区评审。关于 JEP 445 的更多细节可以在 InfoQ 的其他报道中找到。
JEP 482(灵活的构造函数体(第二次预览))已从 Candidate 进入到 Proposed to Target 状态,目标版本为 JDK 23。该 JEP 提议进行第二轮预览和名称更改,以获取来自上一轮预览的反馈,即在 JDK 22 中交付的 JEP 447(super() 前置语句(预览))。该功能允许在构造函数中的 this()
或 super()
调用之前出现不引用正在创建的实例的语句,并保留构造函数已有的安全性和初始化保证。该 JEP 的变化包括:局部类的处理,不得在显式构造函数调用之前访问字段的限制已经放宽为在显式构造函数调用之前不能读取字段。Oracle 技术顾问成员 Gavin Bierman 为 Java 社区提供了该 JEP 的初始规范供评审并提供反馈。评审于 2024 年 5 月 27 日结束。
JEP 481(作用域值(第三次预览))已从 Candidate 进入到 Proposed to Target 状态,目标版本为 JDK 23。该 JEP 也就是之前的范围局部变量(孵化器),提议进行第三轮预览,以获取从一轮孵化和两轮预览中获得的更多经验和反馈,即在 JDK 22 中交付的 JEP 464(“作用域值(第二次预览))、在 JDK 21 中交付的 JEP 446(作用域值(预览))以及在 JDK 20 中交付的 JEP 429(作用域值(孵化器))。这个特性允许在线程内部和跨线程之间共享不可变数据。这比线程局部变量更好,尤其是在使用大量虚拟线程时。这个特性的变化与 callWhere()
方法的参数有关,该方法定义在 ScopedValue 类中,现在是一个函数接口,允许 Java 编译器推断是否可能抛出已检查异常。有了这个变化,就不再需要 getWhere()
方法,并且已被移除。评审于 2024 年 5 月 29 日结束。
JEP 480(结构化并发(第三次预览))已从 Candidate 进入到 Proposed to Target 状态,目标版本为 JDK 23。该 JEP 提议进行第三轮预览,以获得前两轮预览的反馈,即在 JDK 22 中交付的 JEP 462(结构化并发(第二次预览))和在 JDK 21 中交付的 JEP 453(结构化并发(预览))。该特新通过引入结构化并发来简化并发编程,将在不同线程中运行的相关任务组视为单个工作单元,从而简化错误处理和取消操作,提高可靠性,并增强可观察性。评审于 2024 年 5 月 27 日结束。
JEP 471(弃用 sun.misc.Unsafe 的内存访问方法)已从 Candidate 进入到 Proposed to Target 状态,目标版本为 JDK 23。该 JEP 提议在未来版本中弃用 Unsafe 类的内存访问方法。这些方法已经被标准 API 取代,即在 JDK 9 中交付的 JEP 193(变量句柄)和在 JDK 22 中交付的 JEP 454(外部函数和内存 API)。评审于 2024 年 5 月 27 日结束。
JDK 23 早期访问版本 的 Build 24 在过去的一周中进行了更新,包含对 Build 23 各种问题的修复。关于该版本的更多详细信息可以在 发布说明 中找到。
Eclipse 基金会 Jakarta EE 开发者布道师 Ivar Grimstad 在 Hashtag Jakarta EE 博客中提供了有关即将发布的 Jakarta EE 11 GA 版本的更新。9 个规范已经定稿,分别是 Jakarta Annotations 3.0、Jakarta Authorization 3.0、Jakarta Contexts and Dependency Injection 4.1、Jakarta Expression Language 6.0、Jakarta Interceptors 2.2、Jakarta RESTful Web Services 4.0、Jakarta Persistence 3.2、Jakarta Validation 3.1 和 Jakarta WebSocket 2.2。其余的 7 个规范处于各自的评审阶段。
Spring 团队发布多个里程碑和点版本,包括 Spring Boot、Spring Framework、Spring Cloud Data Flow、Spring Security、Spring Authorization Server、Spring for GraphQL、Spring Session、Spring Integration、Spring Modulith、Spring Batch、Spring AMQP、Spring for Apache Kafka 和 Spring for Apache Pulsar。有关这些更新的更多细节可以在 InfoQ 的新闻报道中找到。
JetBrains 发布 Kotlin 2.0,最终确定了 Kotlin 编译器的新前端,代号为 K2。通过这个新前端,所有受支持的 Kotlin 平台现在可以共享大量逻辑和统一的流程。Kotlin 2.0 将带来更快的编译速度,并支持 Compose Multiplatform 项目。JetBrains 一直在为 IntelliJ IDEA 开发 K2 Kotlin 模式,目前还处于 alpha 阶段。关于该版本的更多细节可以在新功能页面找到。InfoQ 将跟进更详细的新闻报道。
Quarkus 的第二个维护版本 3.10.2 带来了一些显着的变化,例如:解决了在调用包含 @BeanParam 注解的 bean 上包含带有 @RestForm 注解的 List<T>
字段的 REST 客户端端点时出现的 QuarkusErrorHandler 运行时错误;在 Gradle 进行原生构建时设置正确的配置密钥。关于该版本的更多详细信息可以在变更日志中找到。
IBM 发布 Open Liberty 24.0.0.5,解决了以下的 CVE(远程攻击者可以发送特制请求,导致服务器过度消耗内存资源,进而拒绝服务):
CVE-2024-27268,WebSphere Application Server Liberty 18.0.0.2 至 24.0.0.4 的漏洞。
CVE-2024-22353,WebSphere Application Server Liberty 17.0.0.3 至 24.0.0.4 的漏洞。
CVE-2024-25026,WebSphere Application Server 8.5 和 9.0,以及 IBM WebSphere Application Server Liberty 17.0.0.3 至 24.0.0.4 的漏洞。
一些值得注意的问题修复包括:在使用 SIP Servlet 1.1 和 WebSocket 特性时抛出的 ClassCastException;在使用 featureUtility 对自定义存储库 URL 进行连接测试时返回 HTTP 400 响应码。关于所有问题修复的更多详细信息可以在这个问题列表中找到。
经过一年多的开发,微软宣布 Java 语义内核普遍可用。这是一个将大型语言模型(LLM)与流行的编程语言结合在一起的 SDK。1.0 版本包含:工具调用,允许 AI 服务请求调用本机 Java 函数;支持文本到音频和音频到文本转换的音频服务;增强的类型转换,允许用户注册类型并实现它们与提示词之间的序列化 / 反序列化;引入钩子,可用于监控诸如函数调用之类的关键点,让用户能更好进行跟踪和调试。InfoQ 将跟进更详细的新闻报道。
Infinispan 第四个维护版本 15.0.4 带来了一些显着变化,例如:针对 TracingSecurityTest 类中的一个不稳定的测试的解决方案;在追踪 Span 中添加节点名称;简化默认服务器配置文件。关于该版本的更多详细信息可以在发布说明和 InfoQ 的新闻报道中找到。
JHipster Lite 1.9.0 发布,包含了问题修复、依赖项升级和新特性 / 增强,例如:添加 Gradle 前端服务器插件;删除 generate.sh
中的 gradleapp
属性,因为现在完全支持 Gradle;简化 lint-staged 配置。关于该版本的更多详细信息可以在发布说明中找到。
LangChain for Java(LangChain4j)0.31.0 新增了以下这些特性:嵌入模型、Cohere 和 Jina 集成;Web 搜索引擎、Google 和 Tavily;Jina 评分(重新排序)模型;以及 Azure Cosmos DB for NoSQL 嵌入存储。重大变更包括:将 Judge0 包重命名为 dev.langchain4j.code.judge0
,将 Anthropic 语言模型从 Gson 迁移到 Jackson。有关该版本的更多详细信息,请参阅发布说明。
查看英文原文:
https://www.infoq.com/news/2024/05/java-news-roundup-may20-2024/
声明:本文为 InfoQ 翻译,未经许可禁止转载。
德国再次拥抱Linux:数万系统从windows迁出,能否避开二十年前的“坑”?
Rust 不是“解药”!25 年经验资深安全从业者:可能比 C 更不安全
Meta首席科学家:不要从事LLM工作;代打卡成产业链,刘强东怒了:业绩不好不拼搏全部淘汰;上千页文档揭谷歌搜索黑幕 | Q资讯
微信扫码关注该文公众号作者