QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Java SE 7 发布:2006 年 12 月后的首次重要更新

  • 2011-07-31
  • 本文字数:1631 字

    阅读完需:约 5 分钟

Java 7 于 7 月 28 日开始提供下载,这是 Oracle 收购 Sun 之后 Java 平台的首次发布。该版本包含了多个对语言的变更,虽然很小但却深受欢迎,还有新的文件 API 和 Fork/Join 框架,并改善了 JVM 的动态语言支持。

Java 7 之前是 Project Coin( JSR 334 )的一部分,它是 JSR 201 的继任者,通过一些能改善生产率的小变化来增强 Java 语言。尤其值得一提的是引入了“try-with-resources”,它和 C#中的 using 语句很像,不过是基于 try 语句的形式,using 语句只能处理单个资源,而 try-with-resources 可以在一个块中处理多个资源。

关于异常处理有两个变化。首先,一个 catch 块中可以处理多个指定类型的异常。Java 7 对 try 的 catch 子句的语法做了扩展,能接受一系列异常类型,在声明异常参数的地方用“或”操作符(即“|”)来进行分隔。其次,如果异常参数没被修改,而且在 catch 块里又被重新抛了出来,现在你不需要在方法签名上添加该异常了(译注:此处表达的含义不太准确,其实是说在 catch 块中如果重新抛出该异常,现在会有更细致的类型检查,详见官方文档)。

其他语言变更包括:

  1. switch 语句包含了对字符串的支持。
  2. 为了增强可读性,数字增加了二进制表示和下划线分隔符――例如 long creditCardNumber = 1234_5678_9012_3456L
  3. 简化了 Varargs 方法的调用:对编译器的警告做了调整,以前在结合了 Varargs 和非具体化数组类型的方法被调用时会有警告,现在这个警告从调用方移到了方法声明上。
  4. 改善了针对泛型实例创建(< > 或菱形)的类型推断:在类实体创建时使用有限类型推断,虽然需要显式声明参数类型,但从上下文中能把它们确定下来,这样一来就可以直接使用空的类型参数集合了。以前要这么写:Map<String, List<String>> anagrams = new HashMap<String, List<String>>(); 现在可以这么写:

Map<String, List<String>> anagrams = new HashMap<>();

引入了两个主要的新 API。第一个是 JSR 203 ,针对文件系统访问、可扩展异步 I/O 操作、多播数据包、Socket 通道绑定和配置添加了新的 API。企业开发者特别感兴趣的是增加了真正的异步 I/O API,这对需要跨多连接的低延时、高吞吐的高端服务器应用程序来说尤为重要。JSR 203 还为 Java 添加了一个真的文件系统 API,提供了对某些 OS 特定功能的支持。例如,你可以在支持符号链接的系统中创建符号链接。但这一特性也备受争议,虽然 JSR 203 提供了可运行于所有平台、支持平台特定特性的通用 API,但它并非严格意义上的“一次编写到处运行”。

第二个新 API 是 Fork/Join 框架( JSR 166 的一部分),起初是计划放在 Java 5 里的。它为开发者提供了一种机制,可以将问题拆解为多个任务,在任意数量的处理器核心上并行执行。

此外,平台中还有新的网络和安全特性,对国际化的扩展支持中还包括了 Unicode 6.0 支持。

最后,Java SE 7 使用了 InvokeDynamic 关键字来标记 Java 诞生后的首个新字节码指令。InvokeDynamic 添加了一种新的调用模式和链接模式,可以通过编程支持用户定制的规范。特别是在缺乏静态类型信息的方法调用中,它能支持高效、灵活的方法执行,这大幅改善了动态语言的性能,例如运行于 JVM 之上的 JRuby 和 Jython。

新特性受到了大家的欢迎,但最重要的是这个新版本终于发布了。Sun 和 Apache Software Foundation 的长期分歧,还有 Sun 最后的日子里的领导和资源问题,都是导致两个版本之间超长间隔时间的原因。正如 Mark Reinhold 在最近的采访中所说的:

… 出于商业和政治原因,Java 曾进入短期的休眠状态。但现在我们回来了,将要发布 Java 7,这不是一个革命性的版本,而是一个进化版本,其中不乏一些好内容。

对如何着手使用 Java SE 7 感兴趣的开发者不妨使用一下 NetBeans IDE 7.0 IntelliJ IDEA 10.5,它们都支持 Java SE 7 平台的最新特性。 Eclipse Indigo 同样也有 beta 级别的 Java 7 支持,Oracle JDeveloper 预计在今年下半年会有一个支持 JDK 7 的版本。

查看英文原文: Java SE 7 Released: First Major Update Since December 2006

2011-07-31 00:523508
用户头像

发布了 135 篇内容, 共 61.1 次阅读, 收获喜欢 43 次。

关注

评论

发布
暂无评论
发现更多内容

【LeetCode】最长连续序列Java题解

Albert

LeetCode 6月月更

【首发】根据壁纸修改App主题,它真的来了

yechaoa

android 6月月更 material design

linux之Ansible快速入门

入门小站

Linux

浅谈企业自媒体如何才能脱颖而出

石头IT视角

Django API 开发:视图设置和路由

宇宙之一粟

django 6月月更

马志强:语音识别技术研究进展和应用落地分享丨RTC Dev Meetup

声网

音视频 语音识别

运算符 (第二天)

Jason199

运算符 js 6月月更

MySql事务

工程师日月

6月月更

Python时区转换的两种方式

红毛丹

Python 6月月更

手慢无!阿里P8架构师力荐Spring生态全家桶全彩笔记

Java全栈架构师

spring 编程 源码 程序员 面试

服务器运维环境安全体系(下篇)

融云 RongCloud

流程测试支持批量参数导入,测试效率直接拉满!

Xd

数据库 后端 接口测试 测试工具

在线JSON转CSV工具

入门小站

工具

只需八步将小程序一键打包生成App

Geek_99967b

小程序 小程序转app

python小知识-python作用域和闭包

AIWeker

Python python小知识

致广大、尽精微,曙光问道算力服务“神经系统”

脑极体

hashmap的底层机制

卢卡多多

集合 6月月更

Vue中created和mounted的区别

devpoint

Vue Vue3 InfoQ极客传媒15周年庆

漫谈测试覆盖率

老张

软件测试 质量保障 质量度量

『Three.js』起飞!

德育处主任

JavaScript canvas 前端可视化 three.js 6月月更

IPSec的特征与功能

阿泽🧸

6月月更 IPsec

Java异常处理机制

未见花闻

6月月更

SAAS服务能有哪些优势

Geek_99967b

小程序 SaaS SaaS系统架构

设计千万级学生管理系统的考试试卷存储方案

Fan

架构师实战营

SDN特有的网络安全问题

穿过生命散发芬芳

SDN网络 6月月更

GameFi新的启程,AQUANEE将于6.9日登陆Gate以及BitMart

BlockChain先知

企业无忧 | Apipost私有化部署活动即将火热开启

Xd

后端 apipost 接口测试工具

Vue-4-模板语法-1

Python研究所

前端 6月月更

SpringBoot应用使用自定义的ApplicationContext实现类

程序员欣宸

Java spring springboot Spring Framework 6月月更

知识图谱、图数据平台、图技术如何助力零售业飞速发展

GPU算力

图计算 图数据分析 图数据一体机

在线文本字符串批量替换工具

入门小站

工具

Java SE 7发布:2006年12月后的首次重要更新_Java_Charles Humble_InfoQ精选文章