作为近两年来首次重要更新,Oracle 在今天的 EclipseCon 上宣布 Java 8 的通用版本发布。可用下载包括Linux 和Windows 的32 及64 位安装包,Mac OS X 和Solaris 的64 位安装包,以及能用于Raspbian 和其他树莓派平台的ARM 专用(为Hard Float ABI 编译)安装包。
Java 8 发布了一系列改进和新特性。包括:
- Lambda**** 表达式 可以像传数据一样传函数。需要传过滤器或其他谓词的情况下,像传数据那样,把函数隐式转换为单一抽象方法类型(如
Runnable``)
,从而极大简化代码。(注意,此处称``lambda``表达式是因为,``Java``自``1.1``版就以内部类的形式支持闭包;而那些被部分人误认的闭包,实际上是``lambda``表达式)。好比,``x -> x +1``。
- 方法引用 允许将所引用的静态方法作为函数,传给其他函数。例如,
Integer::parseInt``,可以被映射成``String``集合,以便生成``Integer``集合。
- Stream 提供无穷序列(好比
ThreadLocalRandom``)或固定区间(诸如``IntStream``所生成的集合)
值集的动态遍历。像遍历数据一样,这种并行处理,约简、过滤及映射的能力;和``lambda``一同为``Java``提供了函数式编程支持。
- 扩展方法 提供了向已有接口添加新方法,而不重新编译接口实现类的途径。很多已有集合类利用这一特性为 stream 及其他参考工具的实现提供接口。没有这一特性,方法就要声明在 Collection 工具类中。
- JSR310提供了全新的日期和时间处理方案,从而避免
java.util.Date``类和相关包所导致的层出不穷的问题。
- PermGen不再使用:开发者不必再为加上
-XX:PermGen``,而
提前苦苦猜测应用中会留有的字符串数目。 - Nashorn 为 JVM 提供原生 JavaScript 支持,使得 Java 或其他基于 JVM 的语言在应用中充分利用 JavaScript。
- OpenJFX向 OpenJDK 引入 JavaFX,为下一代 IDE 中基于 JavaFX 构建的 GUI 系统奠定基础。
所有主流 IDE 厂商在 Java 8 发布的同一天宣布提供支持,包括 Eclipse 4.3.2 的可用补丁, IntelliJ 13.1 的微版本和 NetBeans 8.0 的全新版本,都向各自的 IDE 中添加了 Java 8 支持。作为下周开播的一部分,InfoQ 会跟进 Oracle,走访幕后。敬请关注。
查看英文原文: Oracle Releases Java 8 at EclipseCon
感谢杨赛对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论