Quarkus 3.0发布前的关键信息
为了准备即将发布的Quarkus 3.0,InfoQ采访了Red Hat的杰出工程师兼Quarkus联合负责人Max Rydahl Andersen,了解更多关于该项目的目标和当前进展。
Quarkus的背景与目标
Quarkus于2018年和2019年首次引入Java社区,与Helidon和Micronaut一起,旨在为被Jakarta EE和Spring主导的市场提供替代的应用开发框架。这些新框架的主要目标是帮助开发者创建云原生应用。
2022年,Java社区的“云适配”意图明显。Project Leyden被重新启动,以改善Java程序的启动时间、达到峰值性能的时间和占用空间,而Spring 6.0的发布则迈出了支持原生Java的第一步。
Quarkus的核心原则
Quarkus的指导原则包括:
- 框架效率:承诺超音速、亚原子级的快速启动和低内存占用。
- Kube-Native:使Java开发者能够轻松地在Kubernetes上部署和维护应用。
Quarkus的持续发展在2021年12月的InfoQ Java趋势报告中得到了确认,并被归类为“早期多数”,并在2021年10月的ThoughtWorks技术雷达中移至“试验”阶段。遵循每18个月发布一次主要版本的传统,Quarkus即将发布的下一个主要版本承诺在其既定任务上提供进一步的改进。
Quarkus 3.0的主要主题
Max Rydahl Andersen表示,Quarkus 3.0的主要主题包括:
- 集成Hibernate ORM 6和Eclipse MicroProfile 6。
- 虚拟线程和结构化并发。
- 性能改进,如引入io_uring(下一代异步IO)以及从Reactive Streams转向使用Java的Flow API。
从Reactive Streams转向Java Flow API的原因
Julien Ponge解释说,最初在Java 8时代,SmallRye Mutiny基于Reactive Streams API开发。现在Java 9及以上版本支持Flow API,因此决定采用现代API。Mutiny 2.0在设计时就考虑到了这一点,并提供了无开销的适配器来桥接Java Flow和Reactive Streams API。
对Project Leyden和JPMS的支持
Andersen表示,JPMS的限制对框架和用户体验不利,因此Quarkus对完全支持JPMS持保留态度。他们正在与OpenJDK和GraalVM合作,寻找不排除依赖类路径库的Java生态系统的解决方案。GraalVM原生镜像已经证明了死代码消除在减少存储和提供运行时节省方面的显著效果。
开发者需谨慎使用的功能
Andersen建议开发者在迁移时注意Apache Camel的使用,建议等待支持Jakarta命名空间的Camel 4版本。
开发Quarkus 3.0的技术挑战
Andersen表示,Jakarta命名空间迁移是一个多年努力的过程,涉及与多个Red Hat Runtime团队的紧密合作。在迁移过程中,他们确保底层堆栈准备就绪,并开发了半自动化的迁移工具。
Quarkus的愿景
Quarkus旨在使Java能够在容器原生应用中使用,并重新思考Java生态系统在过去25年中的方法。除了高效运行,Quarkus还致力于改善开发者体验(DX),提供热代码替换、持续测试和开发者服务。团队鼓励开发者尝试Quarkus框架并提供反馈。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。