Sun 的 Java SE 团队最近发布了 JDK7 的第 5 个重要的版本 M5。该版本包括了 Coin 项目大致一半的特性,由 Doug Lea 等更新了 java.util.concurrent 包,还包括其他一些增强特性。
Coin 项目的新特性有:
- 改善了泛型实例创建的类型推断,原来它对类实例创建的类型推断比较有限,因此必须显示声明构造函数的参数类型,但如果这些参数能从上下文推断出来的话,就可以用一个类型参数的空集合来代替。这样,对于如下代码:
Map<String, List> anagrams = new HashMap<String, List >();
你现在可以写为:
Map<String, List> anagrams = new HashMap<>(); - 支持二进制文字,在数字中支持下划线分隔符帮助阅读——比如:long creditCardNumber = 1234_5678_9012_3456L
- 在 Switch 语句中支持 String 了。
对于 java.util.concurrent 包的更新包括对 Phasers、TransferQueues 以及 fork/join 框架的支持。对这些已包含特性和那些还未确定包含的特性(如 Fences API 及 ParallelArray),Alex Miller 提供了一个非常好的总结。
除此之外,Swing 加了一个新组件—— JLayer ,用来美化复合的组件以及截获子组件事件。而且 Sun 还扩展了椭圆曲线加密算法(elliptic curve cryptography)的实现,进而覆盖到所有其提供了JRE 的平台(以前只在Solaris 上可用)。M5 还包括了一系列性能相关的强化,比如一个新的更快的合并排序算法,它是Josh Bloch 根据Python 的“TimSort”改写而来的。在VM 层,逃逸分析和把64 位指针压缩为32 位都是HotSpot VM 默认支持的了,这样不仅降低了内存的消耗,而且提高了性能。
还有很多其他的修改,完整的列表可以参看这里。
原以为M5 是Java 7 第一个功能完备的版本,但实际上在某些方面还有差距。下表详细列出了M5 包含的主要特性。
vm 压缩的 64 位对象指针
G1 垃圾收集器(Garbage First GC)
JSR 292:VM 对非 Java 语言(动态调用)的支持 lang JSR 308:Java 类型的注解 core 升级类加载器架构
关闭 URLClassLoader 的方法
Unicode 5.1
JSR 166y:并发性和集合的更新
JSR 203:更多针对 Java 平台的新 I/O API(NIO.2)
SCTP(Stream Control Transmission Protocol——流控制传输协议)
SDP(Sockets Direct Protocol——套接字直连协议)
Elliptic-curve cryptography(ECC——椭圆曲线加密算法) client 向前兼容 6u10 部署特性
针对 6u10 图形特性的新平台 API
Swing 的 Nimbus 外观还需要完成的主要特性有:
- 模块化(Jigsaw 项目)及支持模块化编程的相关语言和虚拟机(JSR 294)。
- Coin 项目中的自动资源管理、集合文本、JSR-292 的语言级支持,以及简化变长参数方法的调用等。
- 原来要在 M4 发布的 XML 堆栈更新。
- Java2D 的 XRender 管道。
- dual-pivot 快速排序的实现。
这些特性中有一些已经差不多快完成了,比如 dual-pivot 快速排序代码极可能在 M6 的第一个构建里出现,也就是 2009 年 12 月 3 日的 build77 。其他的还有一些差距。Jigsaw 项目一直在进展但现在只有 Linux 下 alpha 版的 M5 二进制版本能下载。JSR 294 也还没有完,而且 Alex Buckley 在专家邮件组里建议不要再继续推进简单模块系统的提议了:
既然 Jigsaw 和 OSGi 最初都在 JCP 之外定义,JSR 294 不见得就是定义一个统一这两者的模块系统的最佳场所。这一设计将取两者的最小交集,虽然初衷很好,但这种妥协却让人不悦。由于专家组(EG)对简单模块系统提议并没有明确支持,我希望以后不要在这上面浪费时间了。
JDK7 还有很长的路要走,Sun 已经决定在日程中再加 3 个里程碑发布,并且把完成版推迟到 M8(2010 年 6 月 3 日)。这样就可以让 JDK7 发布版包含更多的其他特性,如 multi-catch 和以前谈到过的闭包,但是这样会把最终发布日期推迟6 个月,大概到2010 年9 月。
查看英文原文: JDK 7 Milestone 5 Includes Concurrency and Performance Updates, But Is Not Feature Complete
评论