写点什么

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:523547
用户头像

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

关注

评论

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

揭秘2022冬奥黑科技,阿里云视频云「Cloud ME」如何实现全息会面?

阿里云CloudImagine

阿里云 音视频 全息显示 视频云 冬奥会

如何用AI技术增强企业认知智能?超详细架构解读

博文视点Broadview

FinClip邀你来出战|Hackthon Coding Party 一触即发

FinClip

如何通过 Jira Service Management 打造员工自助服务工具实现高效分布式工作

Atlassian

敏捷 Jira 远程协作 ITSM 开发管理

某神奇App data加密算法解析(一)

奋飞安全

android js 移动安全

【游戏研发必看】3 步配置 P4IGNORE + 精彩问答解析(用户文章转载)

龙智—DevSecOps解决方案

perforce P4IGNORE 游戏研发

什么是规划物料清单(Planning BoM)?

龙智—DevSecOps解决方案

BOM Planning BoM 规划物料清单 半导体行业

大厂晋升指南:材料准备,PPT写作和现场答辩

邴越

大厂技能 2月月更 晋升 职级

看懂这5幅图,研发效能分析和改进就容易了

阿里云云效

阿里云 运维 数据分析 云原生 研发

拥抱国产化,推动产业互联网,拍乐云发布RTC私有云解决方案

拍乐云Pano

音视频 产业互联网 私有云 国产化

手把手带你开发一款提效工具--VScode插件

得物技术

效率工具 前端 vscode 前端开发 插件

不要害怕XXE漏洞:了解它们的凶猛之处以及检测方法

龙智—DevSecOps解决方案

代码安全 静态代码分析 漏洞检测 XXE 漏洞

会声会影2022全新GIF功能详解

懒得勤快

Linux之lsof命令

入门小站

netty系列之:EventLoop,EventLoopGroup和netty的默认实现

程序那些事

Java Netty 程序那些事

大数据培训:Flink面试连环17问

@零度

flink 大数据开发

全球案例 | 凯捷如何通过 Jira Software 和 Confluence 将全球产品团队联系起来

龙智—DevSecOps解决方案

Jira Atlassian Atlassian 凯捷 共享平台

研究了2.1亿个皇堡后,英特尔BigDL发现了真相

科技新消息

前端SSR的落地实践

百度Geek说

百度 前端 SSR

【营】在开局,提升【豹】发力 - vivo活动插件管理平台

vivo互联网技术

前端 插件系统 构架

知名服务器运维软件厂商堡塔加入龙蜥社区,并完成与 Anolis OS 兼容适配

OpenAnolis小助手

Linux 开源 服务器 安全技术

2021年中国在线婚恋交友行业分析

易观分析

婚恋行业

在线键盘按键检测工具

入门小站

工具

混合多云环境下的云成本管理与优化

鲸品堂

成本优化 实践案例 云资源

使用CSS绘制一支口红

战场小包

CSS 口红 2月月更

如何在TypeScript/JavaScript项目里引入MD5校验和

华为云开发者联盟

JavaScript typescript npm md5 MD5校验

前端培训:Vue3添加公共方法与使用

@零度

前端开发 Vue3

开源免费的舆情系统的架构

思通数科

爬虫 数据采集 舆情 舆情分析

HarmonyOS Lottie组件,让动画绘制更简单

HarmonyOS开发者

UI HarmonyOS ArKUI 3.0

IOS技术分享| 你画我猜小游戏快速实现

anyRTC开发者

音视频 移动开发 互动白板 你画我猜 社交娱乐

【云管平台】三大知名云管平台简单介绍

行云管家

云计算 云管平台 云资源 云 云时代 2B

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