Java 21+引入虚拟线程(Project Loom),简化并发编程,提升I/O密集型应用性能。虚拟线程由JVM管理,支持数百万并发任务,适合Web应用和数据库服务,使用Spring Boot可轻松替代传统线程池。
2024年11月4日的Java新闻包括:发布Spring Cloud 2024首个候选版本,更新Project Loom,发布Open Liberty 24.0.0.11,Apache Groovy多个版本更新,以及Jakarta EE 11的进展。JDK 24的多个JEP已完成审查,开发者可报告bug。Jakarta EE 11核心配置即将进行发布审查,目标在12月完成。
本周Java回顾的亮点包括JEP 485流聚合器晋升为候选状态、Project Loom Build 24-loom+7-60、Hibernate Validator 9.0.0.Beta3、LangChain4j 0.34.0和Clojure 1.12.0。JEP 485增强了Stream API以支持自定义中间操作,Project Loom Build 24-loom+7-60改进了Java监视器的实现。其他版本更新包括TornadoVM、Helidon、Micronaut、Quarkus、Hibernate、Clojure、Eclipse Vert.x、Apache Maven、LangChain4j和Jox。
本周Java回顾:Hazelcast 5.5发布;Project Loom和Project Valhalla的早期访问版本发布;Hibernate ORM 7.0和Hibernate Validation 9.0的Beta版本发布;Quarkus、Helidon、GlassFish、JobRunr和Testcontainers for Java的点发布。OpenJDK JEP 404(Generational Shenandoah)已更新,将在JDK 24中包含。GlassFish 7.0.16发布了bug修复和新功能。Jakarta EE 11即将发布。Apache Kafka 3.8.0发布了bug修复和新功能。
本文介绍了使用Spring Boot 3.2、GraalVM原生镜像、Java 21和Project Loom的虚拟线程的方法。GraalVM提供了一个名为native-image的程序,可以对代码进行预编译,生成的二进制文件启动速度很快,在运行时占用的RAM也少很多。Spring Boot 3.2可以让Spring Boot使用虚拟线程执行器。
Project Loom是Java运行时的一个稳定功能,旨在将异步编程的性能优势与同步编程的简单性结合起来。它使用虚拟线程和载体线程来提高性能,并改造了一些并发原语以适应虚拟线程。然而,并非所有阻塞API都能适应虚拟线程,需要采取解决方案来避免线程钉住现象。统一接口的抽象是否是一个好主意取决于情况。运行时需要提供适当的配置来确定I/O操作的执行方式。
Apache Tomcat 11 是下一个主要版本,预计在一年后发布。它将引入 Project Loom 提供的虚拟线程支持,支持 Java 21 及更高版本,并计划在 Tomcat 11 中添加基于 HTTP/3 的 QUIC 传输协议支持。Tomcat 11 与 Tomcat 10 的主要区别在于规范的更新和 JDK 功能的利用。迁移到 Tomcat 11 需要注意包名称的更改。未来的 Tomcat 11.x 版本将实现 Jakarta EE 11 中的所有规范。宣布主要版本稳定取决于项目核心提交者的判断,但未来版本将尝试保持代码库一致性和减少版本之间的差异。
完成下面两步后,将自动完成登录并继续当前操作。