Java的新提案:Project Leyden

22-10-18 banq

Project Leyden目的是改善 Java 程序的启动时间、达到峰值性能的时间和占用空间。

我们通常可以通过在时间上转移一些计算来改善程序的启动时间、预热时间和占用空间,这些计算可以提前到运行时间的后期(如通过懒惰的初始化),或向后到比运行时间更早的时间(如通过时间提前编译)。
我们可以通过限制一些与Java的动态特性(如类的加载、类的重新定义和反射)相关的计算来进一步提高性能,这可以使我们更好地分析代码,从而进行更多的优化。

在Project Leyden中,我们将以冷凝器condensers的形式实现这些移位、约束和优化的转换。
冷凝器condensers是一个在编译时间和运行时间之间的阶段运行的程序转换器。
它将一个程序转换为一个新的、更快的、可能更小的程序,同时保留Java平台规范赋予原程序的意义。

我们将根据需要对《规范》进行演化,以接纳和支持这些类型的转换。我们还将研究新的语言特性,使开发者能够自己转移计算,从而实现进一步的浓缩。

冷凝器模型给了开发者很大的灵活性。他们选择应用哪些冷凝器,并通过这样做选择是否以及如何接受限制Java自然动态的约束。没有必要容忍一个一刀切的启动、预热和足迹优化模型。

浓缩模型也给了Java实现相当大的自由。只要凝结器保留了程序的意义,并且不强加除开发者所接受的约束之外的其他约束,实现者就有很大的自由度来优化结果。

如果开发者选择了冷凝器,将足够的计算从运行时间转移到早期阶段,那么一个符合要求的Java实现甚至可以产生一个完全静态的平台特定可执行文件。

详细点击标题