JDK 8中的新功能

Last updated: ... / Reads: 120 Edit

原文链接: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。


Comments

Make a comment