JDK 7新特性简介

JDK7 新特性系列之一 总览

JDK 全称 Java Development Kit,是一套供 Java 开发人员使用的软件开发工具, 其中包括了 JRE(Java Runtime Environment),以及 Java、Jar、Javac、 Javap、Javah、Javaws 等工具。自从 Sun 公司 于 2006 年 12 月 11 日发布 JDK6 到 Oracle 公司于 2011 年 7 月 28 日发布 JDK7,历时长达 5 年之久,期间经历了 不少大大小小的事件。所以首先,让我们来回顾一下 JDK7 发展历史上的风风雨雨。

2009 年 1 月,Sun 开始开发 JDK7 Milestone 1。

2009 年 11 月,Sun 在 Devoxx 2009 大会上宣布将闭包特性加入 JDK7,并将 JDK7 的发布日 期推迟到 2010 年底。

2010 年 4 月,Oracle 收购 Sun。

2010 年 9 月,Mark Reinhold 在 JavaOne 大会 上宣布 JDK7 将砍去 Lambda、Jigsaw 和部分 Coin 新特性并于 2011 年中发布,其余部分的新特性将于 2012 年底同 JDK8 一同发布。

2010 年 10 月,IBM 宣布加入 OpenJDK,将与 Oracle 合作共同开发 JDK。此后,Apple 和 SAP 也陆续加入 OpenJDK 社区。

2011 年 7 月 28 日,Oracle 正式发布 JDK7,并指定 OpenJDK7 为参考实现。

2011 年 9 月 19 日,IBM 正式发布 IBM JDK7。

在经历了推迟发布,Sun 被收购,新特性删减,再推迟发 布等一系列事件之后,JDK7 终于还是来到了大家的面前,那么 JDK7 到底有哪些重要的新特性呢?本系列文章将为读者逐 一展现。

JSR292:支持动态类型语言(InvokeDynamic)

图 1. 项目图标--达芬奇设计的直升机

近年来越来越多 的基于 JVM 的动态语言的出现,对于 JVM 提出了新的需求和挑战。其实在 JDK6 中就已经支持 JSR223:Java 平台上的脚 本语言,通过一个脚本语言引擎在 JVM 上执行 JavaScript 等脚本语言。但由于 JVM 本身的设计原来是针对 Java 这种静 态类型语言的,所以脚本语言无论是解释执行,或者是编译时用虚拟类型,还是运用反射机制,都会对执行效率产生很大程 度的影响。

JSR292 的实现增加了一个 InvokeDynamic 的字节码指令来支持动态类型语言,使得在把源代码编译成 字节码时并不需要确定方法的签名,即方法参数的类型和返回类型。当运行时执行 InvokeDynamic 指令时,JVM 会通过新 的动态链接机制 Method Handles,寻找到真实的方法。

有了 InvokeDynamic,动态类型语言在 JVM 上的执行速度 得到了大大提升,具体的实现细节和实例将在今后的系列文章中有详细介绍。

G1 垃圾回收器(Garbage-First Collector)

G1 垃圾回收器是一个服务器端的垃圾回收器,针对大内存多核 CPU 的环境,目的在于减少 Full GC 带来的暂停次数,增加吞吐量。从长远来看,G1 会代替 Concurrent Mark-Sweep Collector(CMS)。实现上,G1 在堆上 分配一系列相同大小的连续区域,然后在回收时先扫描所有的区域,按照每块区域内存活对象的大小进行排序,优先处理存 活对象小的区域,即垃圾对象最多的区域,这也是 Garbage First 这个名称的由来。G1 把要收集的区域内的存活对象合并 并且复制到其他区域,从而避免了 CMS 遇到的内存碎片问题。此外,G1 采用了一个可预测暂停时间模型来达到软实时的要 求。

JSR334:小的语言改进(Project Coin)

Coin 项目提供了一系列语言上的改进,为 Java 开发者提供 了更多的便利。其中包括了支持 String 的 switch 语句,在 try 之后自动关闭资源(try-with-resources),更简洁的 泛型,数字可以用下划线分割和多重 catch 的改进等等。

核心类库改进

ClassLoader 新增 API

为了 防止自定义多线程 ClassLoad 产生的死锁问题,java.lang.ClassLoader 类增加了以下 API。

protected Object getClassLoadingLock(String className)
protected static boolean registerAsParallelCapable()

详 细信息请参考 JDK7 的 官方文档。

URLClassLoader 新增 API

URLClassLoader 新增 close 方法可以关闭该 类加载器打开的资源。

Concurrent 包的改进

java.util.concurrent 包引入了一个轻量级的 fork/join 的 框架来支持多核多线程的并发计算。此外,实现了 Phaser 类,它类似于 CyclicBarrier 和 CountDownLatch 但更灵活。 最后,ThreadLocalRandom 类提供了线程安全的伪随机数生成器。

国际化(i18n)

支持 Unicode 6.0。改进 java.util.Locale 以支持 IETF BCP 47 和 UTR 35,并且在 get/set locale 的时候分成了用于显示的 locale 和用于格 式化的 locale。

I/O 与网络

Java 平台的更多新 NIO 2 的 API(JSR 203)

NIO2 主要包括了 3 个 方面的改进:

新的文件系统 API 支持大量文件属性的访问、文件系统监控服务、平台相关的 API,如 DosFileAttributes 和 PosixFileAttributes 等,以及一个可插拔文件系统的 SPI。

Socket 和文件的异步 IO。

Socket channel 的功能完善,支持 binding、多播等。

支持 zip/jar 的 FileSystemProvider 实现

时间: 2024-11-02 15:07:50

JDK 7新特性简介的相关文章

Oracle 10G First Release的新特性简介(下)

oracle Oracle 10G First Release的新特性简介(下) By Fenng 2003-07-10 注:近日Oracle已经正式宣布该版本的Oracle命名为10G,其中的G为Grid之意.特此更正. 高可用性的加强 1.缩短应用和数据库升级的宕机时间 通过使用standby数据库.允许在不同版本的standby和产品数据库间切换.现有的联机重定义功能能够支持一步克隆所有相关的数据库对象. 2.回闪(Flashback)任何错误 该版本的Oracle也扩展了Flashbac

Oracle 10G First Release的新特性简介(上)

oracle Oracle 10G First Release的新特性简介(上)   By Fenng 2003-6-8   Oracle(www.oracle.com)公司早已经宣称,Oracle 9i数据库只是一个过渡性的产品,真正的技术革新很可能在下一版,也就是通常说的10i(内部可能的版本号是2003,以下简称10i,估计在正式发行的时候会有一个新的名字)中体现出来.很多技术人员可能都会比较关心Oracle 10i究竟能有哪些新功能,是否能提供一些激动人心的新特性?我们在这里对Oracl

Flash MX 新特性简介(二)

flash mx无论是用户界面(UI),还是使用工具.这不是上个世纪的已经过去的那个flash.新版的flash 内建的动作脚本(Action Script)足可以使你热情满怀,信心十足,动作脚本开发环境的改进和功能的增强绝不是轻量级的.看看FlashMX到底有什么新的和改进的特征. 说到界面特征,不得不先说到全新的组件面板,智能剪辑被新的拖曳组件所替代,可以说现在没有智能剪辑的说法,如果你想把新的Check box, List box Scrolls bar看做Flash5的智能剪辑也可以,但

Worklight V6新特性简介

手机应用生命周期 IBM 从 2012 年初收购 Worklight 平台之后,就一直致力于企业级手机应用开发的研究.为了更好的规范相应的流程,IBM 提出了手机企业级应用开发生命周期的概念.在这个概念中,所有的流程被定义为九个部分,相应的内容如表 1 所示: 从表 1 中可以看到,企业级手机应用的开发从整个生命周期来看,每个阶段都有其各自的任务,但总体目标都是为了提高应用的质量:并且利用工具后,不但可以缩短手机应用开发的整体时间,还可以通过这些工具分析手机应用在不同阶段的质量.在实际工作中,开

三个不常见的HTML5 实用新特性简介

 都已经到了 2014 年了,再来说 HTML5 的新特性,实在是够晚了,不过这几个在介绍 HTML5 的书上很少见到,但又可以方便的应用在自己的网站上,所以特地来介绍一下 一.DNS 预解析缓存   众所周知,解析 DNS 是网站性能优化的比较重要的一部分,虽然加载时间不太长,但是很难压缩起来.特别是为了并发下载资源而使用多个 CDN 域名来加载资源的大型网站,更不可忽视,每加载资源之前都要先进行 CDN 域名的 DNS 解析转换. 如果采用 DNS 预加载,支持该功能的浏览器就会提前对该域名

SQL Server2008 R2新特性简介

SQL Server 2008的R2版本马上就要放出CTP了,其中最令人兴奋的就是R2中提供了主数据管理的功能,下面简单说一下R2中到底为我们带来了哪些新特性: 对超过64个内核CPU的支持.在SQL2008中最多只支持64个CPU核,现在R2中可以支持256个核了!!! 提供对硬件资源进行深入监控的仪表.报表之类的,可以帮助用户调优SQL Server,提高硬件资源的发挥和保证系统的健康运行. SSMS得到了进一步的增强,以提供更多的功能.策略.报表等来帮助用户管理数据库. 提供了主数据服务(

Flash MX 新特性简介(一)

MX 拥有为设计师.漫画师等等开发者可订制的.直观的.友好的界面.可订制的特性包括:面板布局.快捷键和发布设定.用户界面和 Macromedia 的其他工具一样,这样给使用者在应用方面带来很大的好处. 图层文件夹可以你让将 timeline 的内容组织到一个可伸缩的文件夹中. 类似文件夹的组织和层操作,timeline 的强化可以让你的工作更快速.工组量更少.比如:改善的鼠标指针变形,多帧的修改长短.剪切和粘贴可以更加方便的使用 timeline. 在你使用工具和对象时,只显示与之相关的操作参数

三个不常见的 HTML5 实用新特性简介_经验交流

一.DNS 预解析缓存 众所周知,解析 DNS 是网站性能优化的比较重要的一部分,虽然加载时间不太长,但是很难压缩起来.特别是为了并发下载资源而使用多个 CDN 域名来加载资源的大型网站,更不可忽视,每加载资源之前都要先进行 CDN 域名的 DNS 解析转换.如果采用 DNS 预加载,支持该功能的浏览器就会提前对该域名进行 DNS 解析并且缓存一下,而不会在需要请求资源再进行解析.而且这个功能应用实在是太简单: 复制代码 代码如下: <link rel="dns-prefetch"

Flash MX 新特性简介(三)

谢天谢地,我们终于可以见到 Flash 6 了,管它是不是 MX 还是什么,这次是真的了-- 我刚刚拿到这个 Flash MX,所以只能从表面给大家做一些简单的介绍,请不要见怪,不远的将来,大家将可以亲自用上这个大家伙. 首先,进入 Flash MX,你会奇怪的发现,怎么 Flash 的 Logo 换了?管它呢,这并不重要. 兴致勃勃的进入到 Flash MX 以后,您会发现,界面还是比较熟悉的,只是有一些改变而已--但是不要被它的表面所迷惑了,一个软件如果只在表面下功夫,我们还会使用它吗? 在