好吧,我们已经讨论了2022年Java发生了什么,以及2023年将发生什么。但是,在本文中,我们将深入一点,告诉你Java生态系统以及对最近未来的预测。无论如何,这是不同的附加工具和改进,可以提高生产力、稳定性、安全性和Java的性能。
Project Loom和虚拟线程
我们想从Project Loom中创建的期待已久的虚拟线程(JEP 425)开始,这些线程最终于2022年在Java 19版本中出现,以解决传统并发模型中的限制。虽然它们现在仅在预览模式下可用,但我们相信它会随着2023年的下一个版本而改变。
什么是Project Loom?这是Oracle的一个新项目,其主要目标是显著减少编写、维护和观察高吞吐量并发应用程序的工作量。换句话说,Project Loom旨在支持和推进Java中的高吞吐量、轻量级并发模型,因为传统的操作系统线程(在Java并发模型的核心)有一些缺点,并且在计算上相当昂贵。
而虚拟线程则是更轻量级的线程,不与OS线程连接(它们由JVM管理)。这意味着虚拟线程是“每请求线程数”编程的理想选择,可以在不降低吞吐量的情况下创建大量虚拟线程。因此,我们看到Java19中引入的虚拟线程非常易于使用,它们允许开发人员使用现有的JDK工具和技术快速诊断、调试和评测并发应用程序。
正如专家们所说,Project Loom和虚拟线程的引入可能是Java历史上最重要的事件之一。实际上,许多开发人员现在都在期待虚拟线程从“预览状态”转变为“Java 21 LTS的一部分”(预计2023年9月发布)。我们预测,虚拟线程的采用将随着框架的发展而不断增长,并最终使Java开发人员能够更容易地编写需要数百万个同时连接的更具可扩展性的软件。
Jakarta EE
Jakarta EE只是Java EE(Java Enterprise Edition)的新名称,它主要是构建关键业务软件的平台。尽管在项目在Eclipse基金会的控制下移动后,平台获得了新名称,但这并没有改变平台的本质。Jakarta EE在你运行大型企业应用程序时发挥了重要作用,该应用程序应具有可扩展性、安全性和处理大量信息的能力。
Jakarta EE由一套用于创建企业Java应用程序的软件组件API组成。这些组件通常被称为“雅加达EE规范”,用于扩展Java SE版本(标准版本)。这些规范对开发人员有很大帮助,因为他们免除了开发人员自己编写代码的需要。因此,开发人员可以专注于应用程序的业务逻辑,而不是次要的基础设施任务。这不仅仅是为了节省时间和精力。它还涉及为用户创建一个更高效的系统。
当谈到Jakarta EE在2023年的期望时,我们相信它将成为一个主流框架,使你能够轻松提升业务应用程序。它将成为涉及微服务或单片开发的项目的理想解决方案。然而,你应该记住,你需要使用即将发布的Vaadin 24(计划于2023年3月发布)来利用Spring Boot 3或Jakarta EE 10兼容应用程序服务器等应用程序框架。
容器
当你对Java应用程序进行容器化时,通常应首先考虑容器的可用CPU时间。然后,考虑有多少内存可用(内存总量和JVM、Java虚拟机的大小)。在容器化环境中,应用程序可以访问所有处理器,因此可以同时运行多个线程。
展开全文
如今,Java应用程序的容器化继续取得进展,这种趋势似乎不会很快改变。由于越来越多的Java工作负载现在在容器中运行,我们可以看到从只讨论“如何”将Java应用程序容器化到“如何更好地”将其容器化的转变。此外,我们还可以看到更多关于在容器中运行应用程序的最佳实践的信息和指南。
Leyden项目
该项目的主要目标是改善Java的长期痛点——启动时间慢、性能达到峰值的时间慢,以及Java应用程序的占地面积大。通过将静态运行时映像集成到Java平台和JDK中。所谓静态图像,我们指的是从应用程序和运行该应用程序的JDK派生的独立程序。静态映像实际上是关于它可以加载的类的“封闭世界”(它既不从映像外部加载类,也不动态创建类)。
然而,我们要注意的是,Leyden项目并不是为了提高Java应用程序的整体性能。它只是修复了启动部分,并依赖于另一个项目GraalVM,该项目正在不断改进并越来越受欢迎。此外,它开始支持更多的用例,如Spring应用程序。
总结
简单性、安全性和健壮性的结合是Java在顶级技术中保持领先地位的主要原因之一。2023年有望成为更深入地采用虚拟线程的一年(在JDK 20中,将于3月发布),以进一步将轻量级并发构造推广到Java。虚拟线程将专注于更好的扩展能力;虚拟线程的线程API采用;以及简化的故障排除、调试和分析。
据预测,GraalVM社区版Java代码的一部分将转移到OpenJDK,以便与GraalVM和Java技术的开发相关联。Oracle已经宣布GraalVM JIT和AOT编译器的社区版本将在2023年迁移到OpenJDK。正如你所看到的,Java生态系统中的变化是重大的,它们展示了行业如何向前发展。