发行版要点说明
IANA Data 2015e
JDK 8u60 包含 IANA 时区数据版本 2015e。有关详细信息,请参阅 JRE 软件中的时区数据版本。
Bug 修复:dns_lookup_realm 默认情况下应为 false
Kerberos krb5.conf 文件中的 dns_lookup_realm 设置默认情况下为 false。请参阅 8080637。
Bug 修复:禁用 RC4 密码套件
基于 RC4 的 TLS 密码套件(例如 TLS_RSA_WITH_RC4_128_SHA)现在被视为有漏洞,不再使用(请参阅 RFC 7465)。相应地,默认情况下,在 Oracle JSSE 实现中通过将 "RC4" 添加到 "jdk.tls.disabledAlgorithms" 安全属性,并将其从默认启用的密码套件列表中删除,已停用了基于 RC4 的 TLS 密码套件。通过从 java.security 文件包含的 "jdk.tls.disabledAlgorithms" 安全属性中删除 "RC4",或者动态调用 Security.setProperty() 并使用 SSLSocket/SSLEngine.setEnabledCipherSuites() 方法将其读取到启用的密码套件列表中,可以重新激活这些密码套件。您还可以使用 -Djava.security.properties 命令行选项来覆盖 jdk.tls.disabledAlgorithms 安全属性。例如:
java -Djava.security.properties=my.java.security ...
其中 my.java.security 是包含不带 RC4 的属性的文件:
jdk.tls.disabledAlgorithms=SSLv3
即使从命令行设置了此选项,仍必须使用 SSLSocket/SSLEngine.setEnabledCipherSuites() 方法向启用的密码套件列表重新添加基于 RC4 的密码套件。请参阅 8076221。
Bug 修复:支持 JKS 和 PKCS12 密钥库的密钥库类型检测
密钥库兼容性模式:为了提升互操作性,Java 密钥库类型 JKS 现在默认支持密钥库兼容性模式。此模式使得 JKS 密钥库可以访问 JKS 和 PKCS12 文件格式。要禁用密钥库兼容性模式,请将安全属性 keystore.type.compat 设置为字符串值 false。请参阅 8062552。
Bug 修复:JDK 8u 发行版中不安全的监视方法已过时
sun.misc.Unsafe 上的方法 monitorEnter、monitorExit 和 tryMonitorEnter 在 JDK 8u60 中被标记为已过时,将在以后的发行版中删除。这些方法不在 JDK 自身内部使用,也极少在 JDK 之外使用。请参阅 8069302。
Bug 修复:使用 SA 从核心文件提取 JFR 记录
DumpJFR 是基于可服务性代理的工具,可用于从核心文件和实时 Hotspot 进程提取 Java 飞行记录器 (JFR) 数据。可以通过以下方法使用 DumpJFR:将 DumpJFR 附加到实时进程:java -cp $JAVA_HOME/lib/sa-jdi.jar sun.jvm.hotspot.tools.DumpJFR <pid>将 DumpJFR 附加到核心文件:java -cp $JAVA_HOME/lib/sa-jdi.jar sun.jvm.hotspot.tools.DumpJFR <java> <core>DumpJFR 工具可将 JFR 数据转储到当前工作文件夹中名为 recording.jfr 的文件。请参阅 8065301(非公共)。
Bug 修复:名为 "enum" 的本地变量导致虚假的编译器崩溃
javac 语法分析器未正确对名为 "enum" 的本地变量进行语法分析;当程序包含此类本地变量时,如果在编译过程中使用的 "source" 标记对应于不支持枚举构造的发行版(例如 "-source 1.4"),则会产生虚假的失败。请参阅 8069181。
用于 ARM 的 Java 开发工具包发行版 8u60
此发行版包含用于 ARM 的 Java 开发工具包发行版 8u60(用于 ARM 的 JDK 8u60)。有关 ARM 设备支持信息,请参阅用于 ARM 的 JDK 下载页。有关系统要求、安装说明和故障排除提示,请参阅安装说明页。
限制:本机内存跟踪支持仅限于用于 ARM 的 JDK。ARM 目标不支持 Java 命令行选项 XX:NativeMemoryTracking=detail(会向用户显示一条错误消息)。请改为使用以下选项:
XX:NativeMemoryTracking=summary
针对 Nashorn 增强功能对文档进行了更新
JDK 8u60 包括针对 Nashorn 的全新增强功能。因此,应该随最新 Nashorn 文档一起阅读以下文档更改:
补充:在以前的章节中,我们提到了每个 JavaScript 对象在公开到 Java API 时会实现 java.util.Map 接口。这甚至对于 JavaScript 数组也成立。但是,当 Java 代码预期的是通过 JSON 进行语法分析的对象时,这通常不是所需或预期的行为。对于处理通过 JSON 进行语法分析的对象的 Java 库,通常的预期是数组会公开 java.util.List 接口。如果您需要公开 JavaScript 对象,从而将数组作为列表而非映射公开,您可以使用 Java.asJSONCompatible(obj) 函数,其中 obj 是您的 JSON 对象树的根。
更正:在映射数据类型一节末尾提到的注意事项不再适用。Nashorn 确保在向外部公开内部 JavaScript 字符串时,将这些字符串转换为 java.lang.String。
更正:在映射数据类型一节中提到的“例如,必须显式转换数组...”的说法不正确。数组会自动转换为 Java 数组类型,例如 java.util.List、java.util.Collection、java.util.Queue 和 java.util.Deque 等等。
对部署规则集 v1.2 进行了更改
JDK 8u60 实现了部署规则集 (DRS) 1.2,其中包括以下更改:
添加 "checksum" 元素作为 "id" 的子元素,这可允许通过未解压缩形式 jar 的 SHA-256 校验和来标识未签名的 jar:"checksum" 元素只与未签名的 jar 匹配,指定的散列将只与未解压缩形式的 jar 比较。"checksum" 元素(类似于 "certificate" 元素)具有两个参数 "hash" 和 "algorithm",但是,与 "certificate" 元素不同,"algorithm" 唯一支持的值为 "SHA-256"。将忽略提供的所有其他值。
允许将 "message" 元素应用到所有规则类型,而以前只能应用到阻塞规则:在一个运行规则中,message 子元素将导致显示消息对话框,而在没有运行规则时,默认行为是显示证书或未签名对话框。消息将显示在消息对话框中。在默认规则中,只有在默认操作为“阻塞”时才会显示消息。在这种情况下,消息将包括在阻塞对话框中。
在 Java 控制台、跟踪文件和 Java Usage Tracker 记录中回显 "customer" 块。在 DRS 1.2 之前,"customer" 元素(以及任意子元素)可以包括在 ruleset.xml 文件中。忽略此元素及其所有子元素。在 DRS 1.2 中,仍会从功能方面忽略这些元素。但是:对 ruleset.xml 文件进行语法分析时,所有 "customer" 块都将回显到 Java 控制台和部署跟踪文件(如果启用了“控制台”和“跟踪”)。使用规则时,包括在该规则中的所有 "customer" 记录都将添加到 Java Usage Tracker (JUT) 记录中(如果启用了 JUT)。
作为上述更改的结果,DRS 1.2 的 DTD 如下所示:
<!ELEMENT ruleset (rule*)> <!ATTRIBUTE ruleset href CDATA #IMPLIED> <!ATTRIBUTE ruleset version CDATA #REQUIRED> <!ELEMENT rule (id, action)> <!ELEMENT id (certificate?) (checksum?) > <!ATTRIBUTE id title CDATA #IMPLIED> <!ATTRIBUTE id location CDATA #IMPLIED> <!ELEMENT certificate EMPTY> <!ATTLIST certificate algorithm CDATA #IMPLIED> <!ATTLIST certificate hash CDATA #REQUIRED> <!ELEMENT checksum EMPTY> <!ATTLIST checksum algorithm CDATA #IMPLIED> <!ATTLIST checksum hash CDATA #REQUIRED> <!ELEMENT action (message?)> <!ATTRIBUTE permission (run | block | default) #REQUIRED> <!ATTRIBUTE version CDATA #IMPLIED> <!ATTRIBUTE force (true|false) "false"> <!ELEMENT message (#PCDATA)> <!ATTLIST message locale CDATA #IMPLIED>Java 到期日期
8u60 的到期日期为 2015 年 10 月 20 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u60)于 2015 年 11 月 20 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供其他警告和提醒以更新到较新版本。
Bug 修复
有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u60 Bug 修复页。