当前位置: 首页 > 技术随笔 > Java SE 7 新特性详解

Java SE 7 新特性详解

Java 7,代号「海豚(Dolphin)」,是Java历史上一次非常重大的版本更新。Java 7 由Sun公司(2009年4月20日被Oracle以74亿美元收购)于2011年7月7日首次推出,并于2011年7月28日正式面向开发人员发布。Java 7 的开发周期分为13个阶段,并于2011年2月18日全部达成。平均每个阶段又更新发布了8个内部小版本,每个版本主要进行功能增强和bug修复。

Java 7 在Java 6的基础上对性能进行了进一步优化完善,部分功能得以进一步增强,此外还在基础语法上进行了一系列改进。那么Java 7 到底做了哪些更新,又有些什么令人惊喜振奋的新特性呢?Oracle在其官方网站上公布了《Java SE 7 Features and Enhancements》,其中详细介绍了Java SE 7 中所有主要的新特性和功能增强。不过原网站上全是密密麻麻的的英文,而且英文非常简洁,这让类似于笔者这样半吊子水平的中国Java爱好者只能望文兴叹,直呼「伤不起」。

为了再一次发扬「自己的折腾是为了让别人不再折腾」的「优良传统」,笔者对其进行了全文翻译,并添加了一部分理解性的文字,现发表在本文下面以飨读者。如果大家对其中的部分翻译有疑问或者有更好的翻译建议,还请发表评论告知。

Java 7 新特性及更新内容详情如下:

Java 编程语言特性

Swing

  • 新增javax.swing.JLayer 类,一个灵活而且功能强大的Swing组件修饰器。它使你能够直接利用组件和组件的事件响应而无需修改底层组件。你可以点击查看如何使用JLayer修饰组件
  • Nimbus Look & Feel (L&F) 从包com.sun.java.swing移动到标准的API包javax.swing;详细信息请查看javax.swing.plaf.nimbus。 尽管它不是默认的L&F,但是现在你可以非常方便地使用它了。你可以查看Java教程中Nimbus Look and Feel部分的详细信息,也可以在你的程序中运行三个使用Nimbus的简单方法的代码示例。
  • 在以前的版本中, 在同一个容器中混合使用重量级的AWT组件和轻量级的Swing组件可能会引发某些问。不过,现在你可以在Java SE 7完美地混合使用它们了。你可以点击这里查看相关文章
  • Java SE 7 支持以指定的透明度或非矩形的方式来显示窗体,你可以点击这里查看Java教程中关于如何创建带有指定透明度和非矩形的窗体的部分内容。
  • javax.swing.JColorChooser中新增了对以HSV方式来表现RGB色彩模型的支持。HSV和HSL是两种最常见的用于表示RGB色彩模型的表示方式。它们均表示色调、饱和度、亮度三个参数,不过取值形式不同。HSL的三个参数的取值范围均为0-255,HSV的三个参数的取值范围分别为0°-360°、0.0-1.0、0.0-1.0。

Java IO

网络

  • 类java.net.URLClassLoader新增close方法,该方法可以有效解决如何支持从特定代码库,尤其是jar文件中,加载类或资源的最新实现的问题。详情查看如何关闭URLClassLoader

安全

并发

  • 基于类java.util.concurrent.ForkJoinPool的fork/join框架,作为接口java.util.concurrent.Executor的一个实现,它被用来高效地运行工作线程池中的大量任务。其中还使用了一种名为work-stealing的技术,它可以充分利用多处理器来保证所有的工作线程一直正常工作。详情查看Java教程中的Fork/Join部分。目录%JAVA_HOME%/sample/forkjoin/中包含fork/join的演示示例。
  • 新增java.util.concurrent.ThreadLocalRandom类,它消除了使用伪随机数的线程之间的竞争。在多线程并发访问的情况下,使用ThreadLocalRandom比使用Math.random()可以减少并发线程之间的竞争,从而获得更好的性能。例如:
    int r = ThreadLocalRandom.current().nextInt(4, 77);
    //将返回一个4-77之间的随机整数(不包含77)。
  • 新增java.util.concurrent.Phaser类,它是一个新的类似于java.util.concurrent.CyclicBarrier的线程同步障碍辅助工具类(它允许一组线程互相等待,直到到达某个公共屏障点)。

Rich Internet Application(RIA)/部署

暂略。

Java 2D

  • 一个新的基于XRender的渲染管道能够提供改进的图形运行性能,以支持现在的基于DirectX 11的桌面应用。默认情况下,这个渲染管道并未启用,不过你可以使用命令行设置属性-Dsun.java2d.xrender=true来启用它。
  • 现在JDK可以通过诸如GraphicsEnvironment.getAvailableFontFamilyNames等方法来枚举并显示系统中已安装的OpenType/CFF字体了,并且这些字体都可以被方法Font.createFont识别。你可以查看Java教程选择指定的字体
  • java.awt.font.TextLayout现在可以支持西藏文字的脚本了。
  • 在Windows和Solaris操作系统中,文件fontconfig.properties中静态指定了JDK可以使用的逻辑字体。不过,在多数Linux系统的实现中,并没有保证在特定的语言环境下对特定字体表现的支持。在Java SE 7中,libfontconfig可选择在「未识别」的Linux平台上使用的逻辑字体。更多信息可以查看Fontconfig

Java XML

国际化

  • Java SE 7中添加或改进了对Unicode 6.0.0、本地化目录、本地化类文件以及ISO 4217货币符号扩展性的支持。

java.lang包

  • Java SE 7 修复了以前版本中多线程的自定义类加载器可能出现死锁的问题。

Java虚拟机(JVM)

Jdbc 4.1

  • 支持使用 try-with-resources 语句进行自动的资源释放,包括连接、语句和结果集
  • 支持 RowSet 1.1

本文主要参考Oracle Java官方文档 Java SE 7 Features and Enhancements

4 0
我们认为: 用户的主要目的,是为了获取有用的信息,而不是来点击广告的。因此本站将竭力做好内容,并将广告和内容进行分离,确保所有广告不会影响到用户的正常阅读体验。用户仅凭个人意愿和兴趣爱好点击广告。
我们坚信:只有给用户带来价值,用户才会给我们以回报。
CodePlayer技术交流群1CodePlayer技术交流群1

帮朋友打一个硬广告:

P2P网贷系统(Java版本) 新年低价大促销,多年P2P技术积累,系统功能完善(可按需定制,可支持第三方存管、银行存管),架构稳定灵活、性能优异、二次开发快速简单。 另可提供二次开发、安装部署、售后维护、安全培训等一条龙服务。

外行看热闹,内行看门道。可以自信地认为,在系统设计上,比市面上的晓风、迪蒙、方维、绿麻雀、国融信、金和盛等P2P系统要好。
深圳地区支持自带技术人员现场考察源代码、了解主要技术架构,货比三家,再决定是否购买。

也可推荐他人购买,一旦完全成交,推荐人可获得实际售价 10% 的返现。
有意向者,详情请 点击这里 联系,工作时间立即回复。

Java7
Java7新特性