闭包(非 Coin)
包括 Scheme、Ruby 和 SmallTalk 在内的许多编程语言都允许使用闭包或 lambda 函数。闭包实现有望添加在最终 Java 7 规范中;但是,详细实现尚不明确,因为有多个有竞争力的提议。
模块性支持
在每个新版本的 Java 平台中,SDK 的体积都有所增长 — 这一副作用是由各种环境中可用功能增加造成的。虽然许多功能都是资源,但过大的体积和复杂性会不可避免地影响一些关键性能指标:下载大小、启动时间和内存占用。
可伸缩性更新
随着多核系统的日益普及,以及这些系统中的内核数量不断增加,Java 语言向可伸缩性方面发展也是大势所趋。扩展是指开发人员需要访问可伸缩的集合、数据结构和算法。Java 语言在版本 7 中延续了在可伸缩性方面的增强,主要体现在两个特性中: 全新的 I/O 2 以及 Concurrency 和 Collections 更新。
全新的 I/O 2
Java 平台 1.4 发行版在 JSR 51 下引入了一组全新的 I/O (NIO) API,旨在允许开发可高度伸缩的 I/O,而不需要开发本地代码。JSR 51 主要专注于缓冲和渠道,并且提供了非阻塞复用 I/O。在版本 7 中,我们在 JSR 203 下加入了(全新的)New I/O API (NIO.2),从而进一步扩展了在 1.4 中开始的工作。
NIO.2 API 涵盖三个主要增强领域:异步 I/O、经过更新的 SocketChannel 功能以及更强的文件系统接口。这些更新都将继续提供生成高度可伸缩 I/O 基础设施的功能。
1.异步 I/O
Java 平台版本 7 为套接字和文件引入了异步 I/O:它提供了一组全新的 AsynchronousChannel,可允许线程继续工作,同时 I/O 也将继续,并在稍后通知 I/O 已经完成。版本 7 提供了两种通知机制:其一,异步 I/O 调用将返回一个 java.util.concurrent.Future 对象,它表示生成的对象,用于提供 API 以等待 I/O 完成或者轮询其当前状态;第二种机制是指定一个 java.nio.channels.CompletionHandler,这将在 I/O 完成时在回调中调用。
2.经过更新的 SocketChannel API
在 NIO.2 更新 SocketChannel API 之前,网络渠道实现并不是网络套接字的完整抽象:您需要使用套接字和渠道 API 来创建网络渠道。更新解决了此问题,每个面向网络的渠道都将实现一个新的 NetworkChannel 接口,其中定义了 bind()、getLocalAddress()、getOption() 和 setOption() 方法。此外,还通过新的 MulticastChannel 接口添加了多播支持。
3.经过改善的文件系统 API
经过改善的文件系统 API 修复了标准 Java File I/O API 中的一些基本问题(如在文件删除或重命名时缺少 I/O 异常),并为需要在所提供的 API 之上使用自定义代码执行的常见任务提供了新的支持。这包括对复制和移动文件、符号、链接和文件权限的支持,并提供了一个文件变更通知和监控 API。