2016年Java虚拟机语言峰会:展望JVM的未来
2016年Java虚拟机语言峰会(JVMLS)汇聚了语言设计师和JVM工程师,共同探讨JVM的未来发展及其对Java语言的影响。本次峰会重点关注了Project Jigsaw、Project Valhalla和虚拟机未来等关键议题。
模块化:Project Jigsaw
Project Jigsaw是Java 9的核心特性,它为Java语言引入了模块化机制。开发者可以创建模块,实现可靠的配置、强大的封装以及改进的可扩展性、安全性与性能。Java 9将允许创建模块(本质上是包含新结构——模块描述符的JAR包)。模块描述符通过指定模块名称、列出所需模块以及导出的包来描述模块。在运行时,模块主要只能看到其依赖的模块(可读性),并且只有在读取该模块且该模块导出包含该类型的包时才能访问其他模块中的类型(可访问性)。这意味着编译器和JVM最终放弃了以往将所有代码和依赖项整合到一起的大泥球模式,取而代之的是一个更贴近我们对软件结构认知的真实图谱。编译器和JVM都能理解这个图谱,从而在编译或启动时检测到缺失的模块、相同模块的多个版本或多个模块导出相同包等问题,避免运行时错误或难以察觉的细微错误。
值类型:Project Valhalla
Project Valhalla旨在引入值类型,可以将其概括为用户自定义的原始类型。值类型与原始类型一样,不会产生内存开销或间接寻址。一个包含两个int字段x和y的自定义点将被内联到其使用位置,只需要两个int所需的内存,而点的数组本质上就是一个x/y对的数组。与原始类型一样,这样的点没有标识——虽然可以有两个值为5的不同Integer对象,但不能有两个不同的int值5。与类一样,值类型可以具有方法和字段,并实现接口。因此,其口号是:“像类一样编码,像int一样工作”。这将使我们不再需要在首选的抽象和所需的性能之间权衡。
然而,该项目很快偏离了轨道。众所周知,泛型不适用于原始类型——无法创建ArrayList
因此,我们需要能够将泛型与值类型一起使用——原始类型也可以一起使用。最终,我们不仅希望实例化ArrayList
如果幸运的话,部分甚至全部内容都将包含在Java 10中。
虚拟机未来
John Rose谈到了吸引虚拟机走向未来的几个方向:
许多内容都超出了我的理解范围,但聆听他的演讲仍然受益匪浅,即使只是为了感受他的热情。
与Rose的展望精神相符的是Project Panama(Mikel Vidstedt和Tobi Ajila在“Going Native”中进行了讨论),Ian Graves补充了“Java向量API”。Christian Wimmer关于“One Compiler”的演示也旨在弥合差距。
总结
JVM是一个强大的工具,许多聪明的人正在努力使其更强大,同时控制其复杂性。
关于2016年JVM语言峰会的常见问题解答 (此部分内容与原文相同,略)
以上是JVMLS 2016:Java虚拟机器语言峰会的回顾的详细内容。更多信息请关注PHP中文网其他相关文章!