AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

欢迎来嫖!阿里P8高级技术专家携这份818页Java核心技术重磅来袭

钟奕礼

Java 编程 计算机 java程序员 java架构

阿里云研发工程师刘睿:阿里云消息生态及最佳实践

云布道师

阿里云 云原生

Linux内存泄露案例分析和内存管理分享

京东科技开发者

负载均衡 集群 内存泄漏 Linux Cron 运维、

让迁移不再开盲盒,让云也能省钱丨Hackathon 项目背后的故事第一期回顾

PingCAP

hackathon

太强了!终于有人整理出了仿京东电商项目,再次开源了

钟奕礼

Java 编程 架构 项目 java程序员

TiKV 源码阅读三部曲(三)写流程

PingCAP

源码阅读

数字先锋| 教育资源乘云而来!46万城乡学子共享名师课堂

天翼云开发者社区

【C语言】for 关键字

謓泽

11月月更

Alibaba最新推出的Spring Cloud手册惨遭开源

小小怪下士

Java 程序员 阿里 SpringCloud

高可用性集群软件就选Skybility HA!优势多多!

行云管家

高可用 双机热备

追求极致性能!RocketMQ消息通信详解

Java全栈架构师

Java 程序员 面试 RocketMQ 消息中间件

从零到一构建完整知识体系!阿里巴巴Java并发编程技术内幕全网首次公开

Java全栈架构师

源码 程序员 程序人生 Java并发 java面试

面向对象基础

断墨寻径

面向对象 java;

双11狂欢背后,火山引擎数智平台为品牌做了这件事

字节跳动数据平台

大数据 营销数字化 火山引擎

这次,听人大教授讲讲分布式数据库的多级一致性|TDSQL关键技术突破

腾讯云数据库

腾讯云 tdsql 腾讯云数据库 多级一致性 中国人民大学

如何杜绝 spark history server ui 的未授权访问?

明哥的IT随笔

hadoop spark

OpenHarmony开发之MQTT讲解

OpenHarmony开发者

OpenHarmony

手慢无!清华大牛熬夜整理Spring微服务架构设计第2版文档,限时删

钟奕礼

Java 编程 架构 计算机 java程序员

旺链科技出席Hyperledger区块链技术峰会,分享数字乡村新业态

旺链科技

区块链 hyperledger 产业区块链 企业号十月PK榜

共享开源技术,共建开放生态丨平凯星辰余梦杰出席 2022 世界互联网大会开源论坛圆桌对话

PingCAP

开源

想要设计一个良好的接口至少要考虑这14点!

程序员小毕

Java 编程 程序员 程序人生 java面试

Kubectl 命令总结

蜗牛也是牛

4.0体验站|我对OceanBase 4.0社区版的体验与看法

OceanBase 数据库

【#HDC2022】HarmonyOS体验官活动正式开启,赶快投稿赢限量奖品吧!

HarmonyOS开发者

HarmonyOS

互联网公司网络堡垒机首选哪家品牌?有什么优势?

行云管家

互联网 网络安全 信息安全 堡垒机

LED透明屏焊接和插接安装以及三招提升稳定性

Dylan

LED LED显示屏 led显示屏厂家

三面阿里java后台开发岗总结:进阿里必看这份究极面试文档

钟奕礼

Java 编程 java程序员 java面试 java架构

java文件流

hello java

文件 程序 Java core 11月月更

天翼云实时云渲染,助力打造世界VR产业大会云上之城

天翼云开发者社区

视频服务HDR Vivid 还原色彩,让所见成“真”

HarmonyOS SDK

视频 HMS Core

Jmix 1.4 功能概览

世开 Coding

企业级低代码 Jmix 企业级应用程序开发

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