当地时间 5 月 20 日,oracle java 平台组首席架构师 mark reinhold 在其 twitter 宣布正式启动莱顿计划(),该计划的最终目标是解决 java 启动时间慢,达到峰值性能的时间慢以及占用空间大等长期痛点。
此消息让不少 java 用户感到振奋。
好消息,终于来了!我们快开始吧!—— roman kennke @rkennke
我希望 crac 将成为 leyden 的一部分。它看起来很有希望。—— marc savy @marcsavy
我猜 quarkus 应用程序会从中受益。—— vano beridze @vanuatoo
据悉,2 年多前,mark reinhold 曾公开征集开发者对莱顿计划的想法(详见:),他建议通过向 java 平台和 jdk 引入静态运行时映像的概念来解决以上痛点。
静态映像是一个独立的程序,从一个应用程序和一个运行该应用程序的 jdk 派生出来的 ,而不是其他的。
静态映像相对于它可以加载的类来说是一个封闭的世界:在运行时,它不能从映像外部加载类,也不能动态创建类。
封闭世界约束对 java 的自然活力施加了严格的限制,尤其是对许多现有 java 库和框架所依赖的运行时反射和类加载功能。并非所有应用程序都非常适合此约束,也不是所有开发人员都愿意接受它。
因此,与其在一开始就采用封闭世界的约束,mark reinhold 建议采取一种循序渐进的方法——探索一系列比封闭世界的约束更弱一些的约束,找出它们能够实现哪些优化。几乎可以肯定的是,由此产生的优化会比封闭世界约束所实现的优化弱。但是,正因为约束较弱,这些优化才有可能适用于更广泛的现有代码,那么,它们也将对更多开发人员更有用。
mark reinhold 表示,他们将沿着这些约束范围逐步工作,从小而简单的开始,以便能够深入了解 java 平台规范所需的更改。当然,在此过程中,他们将努力保持 java 的可读性、兼容性和通用性的核心价值。
他们将大量依赖 jdk 的现有组件,包括 hotspot jvm、c2 编译器、应用程序类数据共享 (cds) 和 jlink 连接工具。
“从长远来看,我们可能会接受完全封闭世界的约束,以产生完全静态的图像。但是,从现在到那时,我们将开发和提供渐进式改进,开发人员可以尽早使用。”mark reinhold 最后写道。
评论