原文链接:https://www.oracle.com/java/technologies/javase/8-whats-new.html
JDK 8中的新功能
Java平台标准版8是一个重要的特性发布。本文档总结了Java SE 8和JDK 8中的功能和增强功能,JDK 8是Oracle的Java SE 8实现。单击组件名称以获取有关该组件增强功能的详细描述。
Java编程语言
- 在此版本中引入了新的语言特性Lambda表达式。它们使您能够将功能作为方法参数处理,或者将代码视为数据。Lambda表达式可以更简洁地表示单方法接口的实例(称为函数接口)。
- 方法引用提供了易于阅读的具有名称的Lambda表达式,用于已经具有名称的方法。
- 默认方法允许向库接口添加新功能,并确保与为旧版本接口编写的代码具有二进制兼容性。
- 重复注解允许将同一注解类型多次应用于同一声明或类型使用上。
- 类型注解允许在任何使用类型的地方应用注解,而不仅仅是在声明上。与可插拔类型系统一起使用,此功能可以改进代码的类型检查。
- 改进的类型推断。
- 方法参数反射。
集合
- 新的java.util.stream包中的类提供了Stream API,支持对元素流进行函数式操作。Stream API集成到Collections API中,使得可以对集合进行批量操作,例如顺序或并行的映射-规约转换。
- HashMap在键碰撞方面的性能改进。
紧凑配置包含Java SE平台的预定义子集,可以在小型设备上部署和运行不需要整个平台的应用程序。
安全性
- 默认启用客户端TLS 1.2。
- 新的AccessController.doPrivileged变体使代码能够断言其特权的子集,而不会阻止完全遍历堆栈以检查其他权限。
- 密码基础加密算法更强大。
- JSSE服务器中支持SSL/TLS服务器名称指示(SNI)扩展。
- 支持AEAD算法:SunJCE提供程序增强支持AES/GCM/NoPadding密码实现以及GCM算法参数。SunJSSE提供程序增强支持基于AEAD模式的密码套件。请参阅Oracle提供程序文档,JEP 115。
- KeyStore增强,包括新的Domain KeyStore类型java.security.DomainLoadStoreParameter,以及keytool实用程序的新命令选项-importpassword。
- SHA-224消息摘要。
- 增强对NSA Suite B密码学的支持。
- 更好的高熵随机数生成支持。
- 用于配置X.509证书吊销检查的新java.security.cert.PKIXRevocationChecker类。
- Windows的64位PKCS11。
- Kerberos 5 Replay Caching中的新rcache类型。
- 支持Kerberos 5协议转换和受限委托。
- Kerberos 5弱加密类型默认禁用。
- GSS-API/Kerberos 5机制的无绑定SASL。
- 适用于多个主机名的SASL服务。
- 在Mac OS X上提供了与本机JGSS的JNI桥接。
- SunJSSE提供程序增强了对更强强度临时DH密钥的支持。
- JSSE中支持服务器端密码套件首选项自定义。
JavaFX
- 在此版本中实现了新的Modena主题。有关更多信息,请参阅fxexperience.com的博客。
- 新的SwingNode类使开发人员能够将Swing内容嵌入JavaFX应用程序中。请参阅SwingNode javadoc和在JavaFX应用程序中嵌入Swing内容。
- 新的UI控件包括DatePicker和TreeTableView控件。
- javafx.print包提供了JavaFX打印API的公共类。有关更多信息,请参阅javadoc。
- 3D图形功能现在包括3D形状、相机、光源、子场景、材质、拾取和抗锯齿。JavaFX 3D图形库中新增了Shape3D(Box、Cylinder、MeshView和Sphere子类)、SubScene、Material、PickResult、LightBase(AmbientLight和PointLight子类)和SceneAntialiasing API类。此外,本版本还更新了Camera API类。请参阅javafx.scene.shape.Shape3D、javafx.scene.SubScene、javafx.scene.paint.Material、javafx.scene.input.PickResult和javafx.scene.SceneAntialiasing的相应类javadoc,以及入门JavaFX 3D图形指南。
- WebView类提供了新的功能和改进。请查看HTML5的支持功能,了解有关其他HTML5功能(包括Web Sockets、Web Workers和Web Fonts)的更多信息。
- 增强的文本支持,包括控件中的双向文本和复杂文本脚本(如泰语和印地语),以及文本节点中的多行、多样式文本。
- 此版本添加了对Hi-DPI显示器的支持。
- CSS Styleable*类成为公共API。有关详细信息,请参阅javafx.css javadoc。
- 新增了ScheduledService类,允许自动重启服务。
- JavaFX现在可用于ARM平台。JDK for ARM包括JavaFX的基本、图形和控件组件。
工具
- 提供了jjs命令以调用Nashorn引擎。
- java命令用于启动JavaFX应用程序。
- 重新制作了java man页。
- 提供了jdeps命令行工具,用于分析类文件。
- Java管理扩展(JMX)提供对诊断命令的远程访问。
- jarsigner工具具有用于向时间戳授权机构(TSA)请求签名时间戳的选项。
Javac工具
- javac命令的-parameters选项可用于存储形式参数名称,并使反射API能够检索形式参数名称。
- javac命令正确执行了Java语言规范(JLS)第15.21节中的等号运算符类型规则。
- javac工具现在具有检查javadoc注释内容的功能,以查找可能导致各种问题(例如无效的HTML或辅助功能问题)的问题。该功能通过新的-Xdoclint选项启用。有关更多详细信息,请参阅运行"javac -X"后的输出。这个功能在javadoc工具中也可用,并且在那里默认启用。
- javac工具现在提供了根据需要生成本机头文件的能力。这消除了在构建流程中单独运行javah工具的需要。通过使用新的-h选项在javac中启用此功能,该选项用于指定应写入头文件的目录。将为具有本机方法或使用新的类型为java.lang.annotation.Native的常量字段注释的任何类生成头文件。
Javadoc工具
- javadoc工具支持新的DocTree API,使您能够以抽象语法树形式遍历Javadoc注释。
- javadoc工具支持新的Javadoc访问API,使您能够直接从Java应用程序中调用Javadoc工具,而无需执行新进程。有关更多信息,请参阅javadoc的新功能页面。
- javadoc工具现在具有检查javadoc注释内容的功能,以查找可能导致各种问题(例如无效的HTML或辅助功能问题)的问题。该功能默认启用,并且还可以通过新的-Xdoclint选项进行控制。有关更多详细信息,请参阅运行"javadoc -X"后的输出。这个功能在javac工具中也可用,尽管在那里默认情况下未启用。
国际化
- Unicode增强功能,包括对Unicode 6.2.0的支持。
- 采用Unicode CLDR数据和java.locale.providers系统属性。
- 新的Calendar和Locale API。
- 能够将自定义资源包安装为扩展。
部署
- 对于沙箱小程序和Java Web Start应用程序,现在使用URLPermission允许从它们启动的服务器连接回来。不再授予SocketPermission。
- 在所有安全级别下,主JAR文件的JAR文件清单中需要Permissions属性。
- 日期时间包-提供了全面的日期时间模型的新一套包。
脚本
Rhino JavaScript引擎已被Nashorn JavaScript引擎取代。
Pack200
- 为JSR 292引入的常量池条目和新字节码的Pack200支持
- JDK8支持由JSR-292、JSR-308和JSR-335指定的类文件更改
IO和NIO
- 在Solaris上基于Solaris事件端口机制的新SelectorProvider实现。要使用,请在系统属性java.nio.channels.spi.Selector中设置值为sun.nio.ch.EventPortSelectorProvider,然后运行。
/jre/lib/charsets.jar文件的大小减小。
- java.lang.String(byte[], *)构造函数和java.lang.String.getBytes()方法的性能改进。
java.lang和java.util包
- 并行数组排序。
- 标准编码和解码Base64。
- 无符号算术支持。
JDBC
- 已删除JDBC-ODBC桥。
- JDBC 4.2引入了新功能。
Java DB
JDK 8包含Java DB 10.10。
网络
- 添加了java.net.URLPermission类。
- 在java.net.HttpURLConnection类中,如果安装了安全管理器,要求打开连接的调用需要权限。
并发
- 添加了java.util.concurrent包中的类和接口。
- 添加了java.util.concurrent.ConcurrentHashMap类的方法,以支持基于新增的流式处理和lambda表达式的聚合操作。
- 添加了java.util.concurrent.atomic包中的类,以支持可扩展的可更新变量。
- 添加了java.util.concurrent.ForkJoinPool类的方法,以支持公共池。
- 添加了java.util.concurrent.locks.StampedLock类,提供了具有三种模式的基于能力的锁,用于控制读/写访问。
Java XML - JAXP
HotSpot
- 添加了使用高级加密标准(AES)的硬件内置功能。可以使用UseAES和UseAESIntrinsics标志启用针对英特尔硬件的基于硬件的AES内置功能。硬件必须是2010年或更新的Westmere硬件。注意:AES内置功能仅受Server VM支持。例如,要启用硬件AES,请使用以下标志:-XX:+UseAES -XX:+UseAESIntrinsics
要禁用硬件AES,请使用以下标志:-XX:-UseAES -XX:-UseAESIntrinsics
- 移除PermGen。
- Java编程语言中的默认方法由字节码指令支持。
Java Mission Control 5.3版本说明
JDK 8包含Java Mission Control 5.3。