Oracle宣布了针对Java的Valhalla项目。这是一个实验性 OpenJDK项目,用于开发需要更改Java语法以及VM层支持的主要的Java新特性。Valhalla项目负责人Brian Goetz强调,该项目尚处于早期实验阶段,社区不应该期望任何Valhalla技术会成为JDK 9(计划在2016年发布)的一部分。该项目与一些现有的OpenJDK项目,如Lambda项目和DaVinci Machine项目(它使Java 7增加了invokedynamic功能),有类似的目标。 对于Valhalla,在最初讨论过的特性中,其中一个是对Java泛型进行 重大修改。Java的当前版本只允许泛型类型包含引用类型,而且Java编译器会在编译时删除它所包含类型的详细信息。这种泛型实现方式(称为类型擦除) 一直是Java类型系统中最受诟病的特性之一。 Valhalla项目将探索一种新的泛型实现方式,希望能够提供一种新型的泛 型类型,它将允许开发人员使用基本类型的泛型集合。目标是,在JDK未来的某个版本中,像List<int>这样的类型成为合法的Java类 型。这一称为“泛型专门化(generic specification)”的特性已经在其它一些JVM语言中存在,而且自JDK 5首次推出泛型以来,Java开发人员一直在要求这一特性。 目前,Valhalla提议的另一个重要特性是值类型。值类型将同时具有 Java对象和基本类型的部分属性,但其实现方式使得开发人员可以仅仅将它们看作一种新的用户定义的基本类型。John Rose、Brian Goetz和Guy Steele已经发布了一份值类型的初步提案。 Valhalla特性的原型阶段将马上开始。感兴趣的开发人员可以加入OpenJDK网站上的valhalla-dev邮件列表。读者可以点击这里,阅读Brian Goetz最初的公告。 |