JDK 8

 

Java Platform,Standard Edition 8是一个主要功能版本。本文档总结了Java SE 8和JDK 8(Oracle的Java SE 8实现)中的功能和增强功能。单击组件名称可获得该组件增强功能的更详细说明。

  • Lambda Expressions是一种新的语言功能,已在此版本中引入。它们使您可以将功能视为方法参数,或将代码视为数据。Lambda表达式允许您更紧凑地表达单方法接口(称为功能接口)的实例。
  • 方法引用为已经具有名称的方法提供易于阅读的lambda表达式。
  • 默认方法允许将新功能添加到库的接口,并确保与为这些接口的旧版本编写的代码的二进制兼容性。
  • 重复注释提供了对同一声明或类型使用多次应用相同注释类型的功能。
  • 类型注释提供了在使用类型的任何地方应用注释的功能,而不仅仅是在声明上。与可插拔类型系统一起使用时,此功能可以改进代码的类型检查。
  • 改进的类型推断。
  • 方法参数反射。
  • java.util.stream包中的类提供Stream API以支持对元素流的功能样式操作。Stream API集成到Collections API中,可以对集合进行批量操作,例如顺序或并行map-reduce转换。
  • 具有关键冲突的HashMaps的性能改进
  • Compact Profiles包含Java SE平台的预定义子集,并支持不需要在小型设备上部署和运行整个Platform的应用程序。
  • 安全
  • 默认情况下启用客户端TLS 1.2
  • 新的变体AccessController.doPrivileged使代码能够断言其特权的子集,而不会阻止堆栈的完整遍历来检查其他权限
  • 更强大的基于密码加密的算法
  • JSSE服务器中的SSL / TLS服务器名称指示(SNI)扩展支持
  • 支持AEAD算法:SunJCE提供程序已得到增强,可支持AES / GCM / NoPadding密码实现以及GCM算法参数。SunJSSE提供商已得到增强,可支持基于AEAD模式的密码套件。请参阅Oracle Providers文档,JEP 115。
  • KeyStore增强功能,包括新的Domain KeyStore类型java.security.DomainLoadStoreParameter,以及-importpasswordkeytool实用程序的新命令选项
  • SHA-224消息摘要
  • 增强了对NSA Suite B密码学的支持
  • 更好地支持高熵随机数生成
  • java.security.cert.PKIXRevocationChecker用于配置X.509证书的吊销检查的新类
  • 适用于Windows的64位PKCS11
  • Kerberos中的新rcache类型5重播缓存
  • 支持Kerberos 5协议转换和约束委派
  • 默认情况下禁用Kerberos 5弱加密类型
  • 用于GSS-API / Kerberos 5机制的未绑定SASL
  • 多个主机名的SASL服务
  • JNI在Mac OS X上桥接到本机JGSS
  • 在SunJSSE提供商中支持更强大的临时DH密钥
  • 支持JSSE中的服务器端密码套件首选项定制
  • 新的Modena主题已在此版本中实施。有关更多信息,请访问fxexperience.com上的博客。
  • SwingNode类使开发人员能够将Swing内容嵌入到JavaFX应用程序中。请参阅JavaFX应用程序中SwingNodejavadoc和嵌入Swing内容
  • 新的UI控件包括控件DatePickerTreeTableView控件。
  • javafx.print包提供JavaFX Printing API的公共类。有关更多信息,请参阅javadoc
  • 3D图形功能现在包括3D形状,相机,灯光,子场景,材质,拾取和抗锯齿。新的Shape3DBoxCylinderMeshView,和Sphere子类), ,SubSceneMaterial,(PickResult 和子类),以及API类已添加到JavaFX的3D图形库。此版本中的API类也已更新。请参见相应的类Javadoc ,,,,,和入门JavaFX的3D图形文件。LightBaseAmbientLightPointLightSceneAntialiasingCamerajavafx.scene.shape.Shape3Djavafx.scene.SubScenejavafx.scene.paint.Materialjavafx.scene.input.PickResultjavafx.scene.SceneAntialiasing
  • WebView课程提供了新功能和改进。查看HTML5的支持功能,以获取有关其他HTML5功能的更多信息,包括Web套接字,Web工作者和Web字体。
  • 增强的文本支持包括双向文本和复杂的文本脚本,如控件中的泰语和印地语,以及文本节点中的多行,多样式文本。
  • 此版本中添加了对Hi-DPI显示的支持。
  • CSS Styleable *类成为公共API。有关javafx.css更多信息,请参阅javadoc。
  • ScheduledService类允许自动重启服务。
  • JavaFX现在可用于ARM平台。JDK for ARM包括JavaFX的基础,图形和控件组件。
  • jjs提供该命令以调用Nashorn引擎。
  • java命令启动JavaFX应用程序。
  • java男子页面已经被重新设计。
  • jdeps命令行工具提供了一种分析类文件。
  • Java Management Extensions(JMX)提供对诊断命令的远程访问。
  • jarsigner工具具有从时间戳管理局(TSA)请求签名时间戳的选项。
  • Javac工具
  • 该命令的-parameters选项javac可用于存储形式参数名称,并使Reflection API能够检索形式参数名称。
  • 现在,该javac命令可以正确实施Java语言规范(JLS)第15.21节中的相等运算符的类型规则。
  • javac工具现在支持检查javadoc注释的内容,以查找可能导致javadoc运行时生成的文件中的各种问题(例如无效的HTML或可访问性问题)的问题。该-Xdoclint选项启用了该功能。有关更多详细信息,请参阅运行“ javac -X” 的输出。此功能也可在该javadoc工具中使用,默认情况下在此处启用。
  • javac工具现在可以根据需要生成本机标头。这样就无需将javah工具作为构建管道中的单独步骤运行。javac通过使用new -h选项启用该功能,该选项用于指定应在其中写入头文件的目录。将为任何具有本机方法的类或使用新注释类型注释的常量字段生成头文件java.lang.annotation.Native
  • javadoc工具支持新的DocTreeAPI,使您可以将Javadoc注释作为抽象语法树进行遍历。
  • javadoc工具支持新的Javadoc Access API,使您可以直接从Java应用程序调用Javadoc工具,而无需执行新进程。有关更多信息,请参阅javadoc的新页面。
  • javadoc工具现在支持检查javadoc注释的内容,以查找可能导致javadoc运行时生成的文件中的各种问题(例如无效的HTML或可访问性问题)的问题。默认情况下启用该功能,也可以通过新-Xdoclint选项进行控制。有关更多详细信息,请参阅运行“ javadoc -X” 的输出。此javac工具也可以使用此功能,但默认情况下不会启用此功能。
  • Unicode增强功能,包括对Unicode 6.2.0的支持
  • 采用Unicode CLDR数据和java.locale.providers系统属性
  • 新日历和区域设置API
  • 能够将自定义资源包安装为扩展
  • 对于沙盒小程序和Java Web Start应用程序,URLPermission现在用于允许连接返回到启动它们的服务器。SocketPermission不再被授予。
  • 所有安全级别的主JAR文件的JAR文件清单中都需要Permissions属性。
  • Rhino javascript引擎已被Nashorn Javascript引擎取代
  • Pack200支持常量池条目和新的字节码由JSR 292引入
  • JDK8支持JSR-292,JSR-308和JSR-335指定的类文件更改
  • SelectorProvider基于Solaris事件端口机制的Solaris 新实现。要使用,请在系统属性java.nio.channels.spi.Selector设置为值的情况下运行sun.nio.ch.EventPortSelectorProvider
  • 减小<JDK_HOME>/jre/lib/charsets.jar文件的大小
  • java.lang.String(byte[], *)构造函数和java.lang.String.getBytes()方法的性能改进。
  • 并行阵列排序
  • 标准编码和解码Base64
  • 无符号算术支持
  • JDBC-ODBC Bridge已被删除。
  • JDBC 4.2引入了新功能。
  • Java DB
  • JDK 8包括Java DB 10.10。
  • Networking
  • 该课程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班已添加到提供基于能力的锁有三种模式控制读/写访问。
  • 添加了硬件内在函数以使用高级加密标准(AES)。在UseAESUseAESIntrinsics标志是可用的启用Intel硬件的基于硬件的AES内部函数。硬件必须是2010或更新的Westmere硬件。

    注意: AES内在函数仅受服务器VM支持。

    例如,要启用硬件AES,请使用以下标志:
-XX:+ UseAES -XX:+ UseAESIntrinsics

要禁用硬件AES,请使用以下标志:

-XX:-UseAES -XX:-UseAESIntrinsics
  • 去除PermGen。
  • 方法调用的字节代码指令支持Java编程语言中的缺省方法。
  • JDK 8包括Java Mission Control 5.3。