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

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
定制电信软件的好处定制电信软件的好处May 11, 2025 am 08:28 AM

定制电信软件开发无疑是一项相当大的投资。然而,从长远来看,您可能会意识到,这样的项目可能更具成本效益,因为它可以像市场上任何现成的解决方案一样提高您的生产力。了解构建定制电信系统的最重要优势。 获取您所需的确切功能 您可以购买的现成电信软件有两个潜在问题。有些缺乏可能显着改善您工作效率的有用功能。有时您可以通过一些外部集成来增强它们,但这并不总是足以使它们变得出色。 其他软件功能过多,使用起来过于复杂。您可能不会使用其中的一些(永远不会!)。大量的功能通常还会增加价格。 基于您的需求

CNCF触发了ARM64和X86的平台平等突破CNCF触发了ARM64和X86的平台平等突破May 11, 2025 am 08:27 AM

Arm64 架构开源软件的 CI/CD 难题与解决方案 在 Arm64 架构上部署开源软件需要一个强大的 CI/CD 环境。然而,Arm64 和传统 x86 处理器架构的支持水平之间存在差异,Arm64 通常处于劣势。面向多种架构的基础设施组件开发人员对工作环境有一定的期望: 一致性:跨平台使用的工具和方法保持一致,避免因采用不太流行的平台而需要改变开发流程。 性能:平台和支持机制具有良好的性能,确保在支持多个平台时部署方案不会因速度不足而受影响。 测试覆盖率:对所有平台同时进行效率、合规性和

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

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

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

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

CNCF ARM64飞行员:影响和见解CNCF ARM64飞行员:影响和见解Apr 15, 2025 am 08:27 AM

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

See all articles

热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

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

热门文章

热工具

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

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

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器