首页 >科技周边 >IT业界 >JVMLS 2016:Java虚拟机器语言峰会的回顾

JVMLS 2016:Java虚拟机器语言峰会的回顾

William Shakespeare
William Shakespeare原创
2025-02-18 10:26:10522浏览

JVMLS 2016: A Recap of Java Virtual Machine Language Summit

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。对于八种原始类型(参见Stream或Trove等库的原始类型特化),这已经很痛苦了,但当开发者可以定义更多类型时,这将变得难以忍受。如果值类型必须被装箱才能与泛型交互(就像今天的原始类型一样),那么它们的使用将非常有限,并且将无法启动。

因此,我们需要能够将泛型与值类型一起使用——原始类型也可以一起使用。最终,我们不仅希望实例化ArrayList或ArrayList,还希望它分别由int[]或point[]支持。这被称为特化,它打开了一个全新的难题。

如果幸运的话,部分甚至全部内容都将包含在Java 10中。

JVMLS 2016: A Recap of Java Virtual Machine Language Summit

虚拟机未来

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn