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

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

Feb 18, 2025 am 10:26 AM

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1238
24
CNCF ARM64飞行员:影响和见解 CNCF ARM64飞行员:影响和见解 Apr 15, 2025 am 08:27 AM

该试点程序是CNCF(云本机计算基础),安培计算,Equinix金属和驱动的合作,简化了CNCF GitHub项目的ARM64 CI/CD。 该计划解决了安全问题和绩效

使用AWS ECS和LAMBDA的无服务器图像处理管道 使用AWS ECS和LAMBDA的无服务器图像处理管道 Apr 18, 2025 am 08:28 AM

该教程通过使用AWS服务来指导您通过构建无服务器图像处理管道。 我们将创建一个部署在ECS Fargate群集上的next.js前端,与API网关,Lambda函数,S3桶和DynamoDB进行交互。 Th

21个开发人员新闻通讯将在2025年订阅 21个开发人员新闻通讯将在2025年订阅 Apr 24, 2025 am 08:28 AM

与这些顶级开发人员新闻通讯有关最新技术趋势的了解! 这个精选的清单为每个人提供了一些东西,从AI爱好者到经验丰富的后端和前端开发人员。 选择您的收藏夹并节省时间搜索REL

See all articles