技术开发 频道

Java SE 7最终版 语言和虚拟机将增强

  【IT168 文档

  导读:倍受期待的 Java™ SE 7 最终版预计将包括针对语言和虚拟机所有方面的增强。Oracle 和 IBM 已经发布了各自实现的 Early Access 下载,供评估和反馈。在本文中,IBM Java 技术中心 Java 服务战略架构师 Chris Bailey 将介绍库中的一些变化,包括 Oracle 规范和 IBM 提供的增值服务。

  预计于今年秋天将最终发布的 Java 平台最新更新意义重大且倍受期待。虽然尚未通过 Java Community Process (JCP) 正式创建 Java 7 平台 Java Specification Request (JSR),并且最终特性集仍然未知,但 Oracle 推出的 Early Access 下载(参见 参考资料)以及 Oracle 团队的公开声明为我们理解 Java SE 7 的内容提供了一些帮助。

  预计特性分为以下四类:

  1.非 Java 语言支持

  2.“易于开发” 更新

  3.模块化支持

  4.可伸缩性更新

  非 Java 语言支持和 JSR 292

  Java 7 将提供一些增强,可允许动态类型语言的编译器实现程序更加轻松地为 Java 运行时生成实现,并允许这些实现以更高的性能运行。JSR 292 是变化的推动力。它引入了新的字节码和一系列新的 Java 类。

  大多数情况下,Java 语言是强类型的,这需要指定在方法中传递或返回的参数类型。但是,在字节级,Java 则更加偏向于弱类型:操作数栈中的变量仅在属于相关原始类型或者一般为对象引用时才需要指定类型。在几乎所有情况中,字节级都使用弱类型。方法调用是一种例外情况,它会强制使用强类型 — 也就是说,调用方法时将使用它的完整签名,这包括参数和返回类型。在这种情况下,需要使用已知 Java 类型对 Java 方法进行调用。这会对动态语言造成问题,比如 Ruby、Python 和 Groovy,因为它们是动态类型(类型仅在运行时为可知)。

  可以采用一些机制(通常基于反射或使用生成的调用程序)来避免这些问题并允许在 JVM 上运行动态语言,但它们会受到显著的性能影响。JSR 292 的引入旨在通过添加新 Java 字节码 invokedynamic 以调用动态方法,并结合 Java 语言关联机制来处理允许在运行时重写方法结构,来解决这些问题。

0
相关文章