Java 8 发行版要点说明


本文适用于:
  • 平台:
  • 浏览器:
  • Java 版本: 8.0

本页着重说明了各 Java 发行版中影响最终用户的更改。有关更改的更多信息,请参见各发行版的发行说明。
» Java 发行日期


Java 8 Update 441 (8u441)

发行版要点说明
  • JDK 8u441 包含 IANA 时区数据 2024b
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • JavaFX 将不再包括在 JDK/JRE 8 中
    此发行版(JDK 和 JRE 8 Update 441)是捆绑 JavaFX 的最后一个发行版。正如 2020 年所公布,对 JDK 8 上的 JavaFX(Oracle 提供商业支持的最后一个 JavaFX 版本)的支持将于 2025 年 3 月结束。因此,JDK 8 Update 441 是包含 JavaFX 的 JDK/JRE 8 的最后一次升级。Oracle 将仅针对最新版本的 Java,继续通过 OpenJFX 项目以独立模块形式开发和发布 JavaFX。有关更多详细信息,请参见 Java SE Spring 2024 Roadmap Update(Java SE Spring 2024 路线图更新)。
  • 其他说明:对时区数据库 2024b 的支持
    IANA 时区数据库已升级到 2024b。此版本主要包括为改善墨西哥、蒙古和葡萄牙的历史数据而进行的更改。还更改了一个时间戳缩写,采用时区 'MET'。此外,亚洲/乔巴山现在是亚洲/乌兰巴托的别名。
    请参见 JDK-8339637
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2025 年 4 月 15 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u441)。

Java 管理服务(向所有用户提供)可帮助您查找系统中易受攻击的 Java 版本。在 Oracle Cloud 中运行的 Java SE 订户 和客户可使用 Java 管理服务更新 Java 运行时,并执行进一步的安全审查,如确定您的 Java 程序使用的可能易受攻击的第三方库。现有 Java 管理服务用户请单击此处登录面板。Java 管理服务文档列出了向所有人提供的功能以及仅向客户提供的功能。了解有关使用 Java 管理服务监视和保护 Java 安装的更多信息。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u441)于 2025 年 05 月 15 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 8u441 发行说明


Java 8 Update 431 (8u431)

发行版要点说明
  • JDK 8u431 包含 IANA 时区数据 2024a
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 解决了以下重要问题:JDK RPM 升级留下孤立的替代条目
    修复了在 RPM 升级期间未正确管理 "java" 和 "javac" 组中条目的问题。
    在从安装在共享目录 (/usr/lib/jvm/jdk-${FEATURE}-oracle-${ARCH}) 中的旧版 Java RPM 升级到安装在特定于版本的目录 (/usr/lib/jvm/jdk-${VERSION}-oracle-${ARCH}) 中的 Java RPM 时,未删除 "java" 和 "javac" 组中的旧 Java 条目
    JDK-8336107(未公开)
  • 其他说明:在 JDK HTTP 实现中提供了新的默认限制
    JDK 中的 HTTP 添加了新的默认限制。
    现在,在 HTTP 的 URL 协议处理程序的 JDK 内置实现 (HttpURLConnection) 中,从远程一方接受的最大响应标头大小具有默认限制。该限制默认设置为 384kB(393216 字节),计算方式为:所有标头名称和标头值的累计大小加一个额外大小(每个标头名称值对 32 字节)。
    JDK-8328286(未公开)
  • 其他说明:添加了 2022 年颁发的 SSL.com TLS 根 CA 证书
    以下根证书已添加到 cacerts 信任库:
    + SSL.com
    + ssltlsrootecc2022
    DN:CN=SSL.com TLS ECC Root CA 2022,O=SSL Corporation,C=US
    + SSL.com
    + ssltlsrootrsa2022
    DN:CN=SSL.com TLS RSA Root CA 2022,O=SSL Corporation,C=US
    请参见 JDK-8341057
  • 其他说明:不再信任 2024 年 11 月 11 日后颁发的锚定到 Entrust 根证书的 TLS 服务器证书
    JDK 将不再信任 2024 年 11 月 11 日后颁发的锚定到 Entrust 根证书的 TLS 服务器证书,与 Google 和 Mozilla 最近公布的类似计划保持一致。受影响证书列表中包括由 Entrust 管理的品牌为 AffirmTrust 的证书。
    请参见 JDK-8337664
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2025 年 1 月 21 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u431)。

Java 管理服务(向所有用户提供)可帮助您查找系统中易受攻击的 Java 版本。在 Oracle Cloud 中运行的 Java SE 订户 和客户可使用 Java 管理服务更新 Java 运行时,并执行进一步的安全审查,如确定您的 Java 程序使用的可能易受攻击的第三方库。现有 Java 管理服务用户请单击此处登录面板。Java 管理服务文档列出了向所有人提供的功能以及仅向客户提供的功能。了解有关使用 Java 管理服务监视和保护 Java 安装的更多信息。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u431)于 2025 年 2 月 21 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 8u431 发行说明


Java 8 Update 421 (8u421)

发行版要点说明
  • JDK 8u421 包含 IANA 时区数据 2024a
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 已知问题:在 Windows 上使用浏览器密钥库
    在 Windows 上启用了“使用浏览器密钥库中的证书和密钥”功能(默认启用)后,Java WebStart 和 Java 插件可访问本地计算机当前信任的证书。由于证书是动态加载的,不保证有完整的一组可信证书可用。因而,Java 小应用程序和 Java WebStart 应用程序可能会遇到因缺少相关证书导致的签名验证和安全连接问题。这是因为部署框架只能访问应用程序启动时处于“活动”状态的证书。
    JDK-8330728(未公开)
  • 其他说明:JRE 安装程序添加 STATIC=1 参数
    此修复将添加 STATIC=1 安装程序参数,并废弃 RETAIN_ALL_VERSIONS=1 安装程序参数。传递 STATIC=1 将避免较早的 JRE 8 版本在手动升级或自动更新期间被卸载。
    JDK-8313223(未公开)
  • 其他说明:添加了 GlobalSign R46 和 E46 根 CA 证书
    向 cacerts 信任库添加了以下根证书:
    + GlobalSign
    + globalsignr46
    DN:CN=GlobalSign Root R46,O=GlobalSign nv-sa,C=BE

    + GlobalSign
    + globalsigne46
    DN:CN=GlobalSign Root E46,O=GlobalSign nv-sa,C=BE

    请参见 JDK-8316138
  • 其他说明:安装程序将在新位置创建 Junction 目录
    JRE 将安装在以下位置:C:\Program Files\Java\latest\jre-$fullversion,其中 $fullversion 是 JRE 的技术版本。对于实例,8u421 将安装到 C:\Program Files\Java\latest\jre-1.8.0_421

    对于 32 位 Java,"C:\Program Files" 将调整到 "C:\Program Files (x86)"

    将在 C:\Program Files\Java\latest\jre-1.8 创建 junction。它指向最新的 8 系列 JRE。
    JDK-8329700(未公开)
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2024 年 10 月 15 日按计划发布下一个关键补丁程序更新后,建议不要再使用此 JDK(版本 8u421)。

Java 管理服务(向所有用户提供)可帮助您查找系统中易受攻击的 Java 版本。在 Oracle Cloud 中运行的 Java SE 订户 和客户可使用 Java 管理服务更新 Java 运行时,并执行进一步的安全审查,如确定您的 Java 程序使用的可能易受攻击的第三方库。现有 Java 管理服务用户请单击此处登录面板。Java 管理服务文档列出了向所有人提供的功能以及仅向客户提供的功能。了解有关使用 Java 管理服务监视和保护 Java 安装的更多信息。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u421)于 2024 年 11 月 15 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 8u421 发行说明


Java 8 Update 411 (8u411)

发行版要点说明
  • JDK 8u411 包含 IANA 时区数据 2024a
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 新功能:添加了 Certainly R1 和 E1 根证书
    向 cacerts 信任库添加了以下根证书:+ Certainly
    + certainlyrootr1
    DN:CN=Certainly Root R1,O=Certainly,C=US
    + Certainly
    + certainlyroote1
    DN:CN=Certainly Root E1,O=Certainly,C=US

    请参见 JDK-8321408
  • 新功能:默认启用 XML 签名安全验证模式
    默认启用 XML 签名安全验证模式(以前,默认不启用此模式,除非通过安全管理器运行)。启用后,对 XML 签名进行验证时,会更加严格地检查算法,并且需要符合 jdk.xml.dsig.secureValidationPolicy 安全属性指定的其他约束条件。
    如有必要,可以在应用程序中使用 DOMValidateContext.setProperty() API 将 org.jcp.xml.dsig.secureValidation 属性设置为 Boolean.FALSE 来禁用该模式,并自行承担风险。
    请参见 JDK-8259801
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2024 年 7 月 16 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u411)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u411)于 2024 年 8 月 16 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 8u411 发行说明


Java 8 Update 401 (8u401)

发行版要点说明
  • JDK 8u401 包含 IANA 时区数据 2023c
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 新功能:用于切换 XML 签名安全验证模式的新系统属性
    新增了名为 org.jcp.xml.dsig.secureValidation 的系统属性。它可用于启用或禁用 XML 签名安全验证模式。该系统属性应设置为 "true" 以启用,或设置为 "false" 以禁用。为该系统属性指定的任何其他值都被视为 "false"。如果设置了该系统属性,它将取代 XMLCryptoContext 属性值。如果使用 SecurityManager 运行代码,则默认启用安全验证模式,否则默认禁用安全验证模式。
    请参见 JDK-8301260
  • 新功能:JDK 飞行记录器反序列化事件
    新增了一种 JDK 飞行记录器 (JDK Flight Recorder, JFR) 事件来监视对象反序列化。当 JFR 已启用并且 JFR 配置包括反序列化事件时,每当运行中的程序尝试反序列化对象时,JFR 就会发出此事件。反序列化事件名为 java/deserialization,默认处于禁用状态。反序列化事件包含序列化筛选器机制使用的信息。此外,如果启用了筛选器,则该 JFR 事件将指示筛选器是接受还是拒绝了对象反序列化。
    请参见 JDK-8261160
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2024 年 4 月 16 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u401)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅产品客户应考虑使用 Java 管理服务 (Java Management Service, JMS)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u401)于 2024 年 05 月 16 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 8u401 发行说明


Java 8 Update 391 (8u391)

发行版要点说明
  • JDK 8u391 包含 IANA 时区数据 2023c
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 新功能:新增了 JFR 事件:jdk.SecurityProviderService
    添加了一个新的 Java 飞行记录器 (Java Flight Recorder, JFR) 事件,用于记录 java.security.Provider.getService(String type, String algorithm) 调用的详细信息。
    请参见 JDK-8254711
  • 删除的功能:删除了 SECOM Trust System 的 RootCA1 根证书
    cacerts 密钥库中删除了来自 SECOM Trust System 的以下根证书:
    + alias name "secomscrootca1 [jdk]"
    唯一判别名:OU=Security Communication RootCA1,O=SECOM Trust.net,C=JP

    请参见 JDK-8295894
  • 删除的功能:删除了 JDK 8 对 Linux ARM32 的支持
    JDK 8 中删除了对 Linux ARM32 的平台支持。因此,将不提供 ARM32 硬浮点 ABI 下载。支持 ARM32 的操作系统已达到其生命周期终止期限,因此没有已知的操作系统支持可用。
    JDK-8305927(未公开)
  • 其他说明:添加了 Certigna 根 CA 证书
    cacerts 信任库添加了以下根证书:
    + Certigna (Dhimyotis)
    + certignarootca
    DN:CN=Certigna Root CA,OU=0002 48146308100036,O=Dhimyotis,C=FR

    请参见 JDK-8314960
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2024 年 1 月 16 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u391)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u391)于 2024 年 02 月 16 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 8u391 发行说明


Java 8 Update 381 (8u381)

发行版要点说明
  • JDK 8u381 包含 IANA 时区数据 2023c
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 新功能:允许使用其他字符以支持 GB18030-2022
    中国国家标准化组织 (CESI) 最近发布了 GB18030-2022,这是更新版本的 GB18030 标准,旨在使 GB18030 与 Unicode 版本 11.0 同步。此新标准的字符集实现现已替换之前的 2000 标准。但是,此新标准有一些与之前实现不兼容的更改。为了满足用户使用旧映射的需求,引入了新的系统属性 jdk.charset.GB18030。将此属性的值设置为 2000 后,将使用先前 JDK 发行版的 GB18030 字符集映射,这些映射基于 2000 标准。
    请参见 JDK-8307229
  • JDK 现在接受 PKCS#1 格式的 RSA 密钥
    JDK 提供方现在可以接受 PKCS#1 格式的 RSA 私有密钥和公共密钥,例如来自 SunRsaSign 提供方的 RSA KeyFactory.impl。RSA 私有密钥或公共密钥对象的格式应为 PKCS#1 格式,并且 PKCS#1 RSA 私有密钥和公共密钥的编码应与 ASN.1 语法匹配。
    请参见 JDK-8023980
  • 其他说明:8u381 中的 Cgroup v2 支持和改进
    JDK 8u381 包含多项增强功能和修复,旨在改进对容器的 cgroup v1 和 v2 支持。这些改进包括准确检测容器的资源限制、正确报告收集的容器度量、输出其他容器信息以及改进应用程序在容器化环境中的稳定性。
    请参见 JDK-8307634
  • 其他说明:添加了 TWCA 根 CA 证书
    以下根证书已添加到 cacerts 信任库:
    + TWCA
    + twcaglobalrootca
    DN: CN=TWCA Global Root CA, OU=Root CA, O=TAIWAN-CA, C=TW

    请参见 JDK-8305975
  • 其他说明:添加了 4 个 GTS 根 CA 证书
    以下根证书已添加到 cacerts 信任库:
    + Google Trust Services LLC
    + gtsrootcar1
    DN: CN=GTS Root R1, O=Google Trust Services LLC, C=US
    + Google Trust Services LLC
    + gtsrootcar2
    DN: CN=GTS Root R2, O=Google Trust Services LLC, C=US
    + Google Trust Services LLC
    + gtsrootecccar3
    DN: CN=GTS Root R3, O=Google Trust Services LLC, C=US
    + Google Trust Services LLC
    + gtsrootecccar4
    DN: CN=GTS Root R4, O=Google Trust Services LLC, C=US

    请参见 JDK-8307134
  • 其他说明:添加了 Microsoft Corporation 的 2 个 TLS 根 CA 证书
    以下根证书已添加到 cacerts 信任库:
    + Microsoft Corporation
    + microsoftecc2017
    DN: CN=Microsoft ECC Root Certificate Authority 2017, O=Microsoft Corporation, C=US
    + Microsoft Corporation
    + microsoftrsa2017
    DN: CN=Microsoft RSA Root Certificate Authority 2017, O=Microsoft Corporation, C=US

    请参见 JDK-8304760
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2023 年 10 月 17 日按计划发布下一个关键补丁程序更新后,建议不要再使用此 JDK(版本 8u381)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u381)于 2023 年 11 月 17 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 8u381 发行说明


Java 8 Update 371 (8u371)

发行版要点说明
  • JDK 8u371 包含 IANA 时区数据 2022g
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 新功能:在 Windows 上添加了默认的本机 GSS-API 库
    在 Windows 平台上,已向 JDK 中添加了本机 GSS-API 库。该库仅用于客户端,并使用默认身份证明。当 sun.security.jgss.native 系统属性设置为 "true" 时,将加载该库。用户仍然可以加载第三方本机 GSS-API 库,方法是将系统属性 sun.security.jgss.lib 设置为其路径。
    请参见 JDK-6722928
  • 删除的功能和选项:删除了 macOS AArch64 的 javax.script 引擎实现和 com.apple.concurrent.Dispatch
    已删除实现 javax.script 引擎 API 的 AppleScript 引擎,且没有替换功能。AppleScript 引擎运行不稳定。在已经有 Apple 版本的 AppleScriptEngine.jar 的系统上安装 JDK 7 或 JDK 8 时,服务配置 (META-INF/services) 文件缺失,且只是偶尔起作用。
    com.apple.concurrent.Dispatch API 是仅适用于 Mac 的 API。它通过移植 Apple JDK 6 代码实施到 JDK 7u4 中。我们鼓励开发人员使用标准的 java.util.concurrent.Executorjava.util.concurrent.ExecutorService API。
    请参见 JDK-8297475
  • 其他说明:添加了 Certigna(Dhimyotis) 根 CA 证书
    以下根证书已添加到 cacerts 信任库:
    + Certigna (Dhimyotis)
    + certignarootca
    DN: CN=Certigna, O=Dhimyotis, C=FR

    请参见 JDK-8245654
  • 其他说明:从默认启用的 TLS 协议中删除了 SSLv2Hello 和 SSLv3
    已从默认启用的 TLS 协议中删除 SSLv2Hello 和 SSLv3。

    进行此更新后,如果从 jdk.tls.disabledAlgorithms 安全属性中删除 SSLv3,SSLSocket.getEnabledProtocols()SSLServerSocket.getEnabledProtocols()SSLEngine.getEnabledProtocols()SSLParameters.getProtocols() API 将返回 "TLSv1.3, TLSv1.2, TLSv1.1, TLSv1"。不会在此列表中返回 "SSLv3"。
    如果客户端或服务器仍然需要使用 SSLv3 协议,则可以通过 jdk.tls.client.protocolsjdk.tls.server.protocols 系统属性或者使用 SSLSocket.setEnabledProtocols()SSLServerSocket.setEnabledProtocols()SSLEngine.setEnabledProtocols() API 启用该协议来实现。
    请参见 JDK-8190492
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在关键补丁程序更新、安全预警和公告中公布。在 2023 年 7 月 18 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u371)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u371)于 2023 年 08 月 18 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 8u371 发行说明


Java 8 Update 361 (8u361)

发行版要点说明
  • JDK 8u361 包含 IANA 时区数据 2022d2022e2022f
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 新功能:OCSP 响应中支持 RSASSA-PSS
    现在支持使用 RSASSA-PSS 算法签名的 OCSP 响应。
    请参见 JDK-8274471
  • 其他说明:默认情况下禁用 FXML JavaScript 引擎
    现在,默认情况下禁用 FXML 的“JavaScript 脚本引擎”。默认情况下,将不再加载任何具有 "javascript" 处理指令 (Processing Instruction, PI) 的 .fxml 文件,并且将引发异常错误。
    可以通过设置以下系统属性启用此功能:-Djavafx.allowjs=true
    JDK-8294779(未公开)
  • 其他说明:ProcessBuilder 中带引号参数的处理不正确
    Windows 中的 ProcessBuilder 恢复了以往的行为,以解决 JDK-8250568 引起的回归问题。以前,以双引号开头、以反斜杠后跟双引号结尾的 ProcessBuilder 参数未正确传递给命令,且可能导致命令失败。例如,参数 "C:\\Program Files\" 被命令视为带有额外的双引号。此更新恢复了长期以来的行为,即不特殊处理末尾双引号之前的反斜杠。
    请参见 JDK-8282008
  • 其他说明:可配置 HttpURLConnection 保持活动的默认超时值
    添加了两个系统属性,用于在服务器未指定保持活动时间时控制 HttpURLConnection 的保持活动行为。定义了两个属性,分别用于控制与服务器和代理的连接。它们分别是 http.keepAlive.time.serverhttp.keepAlive.time.proxy网络属性提供了有关这两个属性的更多信息。
    请参见 JDK-8278067
  • 其他说明:不再捆绑 VisualVM 工具
    此版本的 JDK 不再包含 Java VisualVM 的副本。现在可以从 https://visualvm.github.io 单独下载 VisualVM。
    请参见 JDK-8294184
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2023 年 4 月 18 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u361)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u361)于 2023 年 5 月 18 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 8u361 发行说明


Java 8 Update 351 (8u351)

发行版要点说明
  • IANA TZ Data 2022b、2022c
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 其他说明: 升级了默认 PKCS12 MAC 算法
    更新了 PKCS #12 密钥库中使用的默认 MAC 算法。新算法基于 SHA-256,并且加密性比基于 SHA-1 的旧算法更强。有关详细信息,请参见 java.security 文件中以 keystore.pkcs12 开头的安全属性。
    请参见 JDK-8267880
  • 其他说明:禁用了 SHA-1 签名 JAR
    现在默认限制使用以 SHA-1 算法签名的 JAR,并将这类 JAR 视为未签名。这适用于为 JAR 设置摘要、签名以及可选时间戳的算法。还适用于代码签名者和时间戳服务机构证书链中证书的签名和摘要算法,以及用于验证的 CRL 或 OCSP 响应(如果撤销了这些证书)。这些限制也适用于 JCE 提供方。
    请参见 JDK-8269039
  • 其他说明: 废弃了 Kerberos 中的 3DES 和 RC4
    des3-hmac-sha1rc4-hmac Kerberos 加密类型 (etype) 现在已废弃,默认处于禁用状态。用户可以在 krb5.conf 配置文件中设置 allow_weak_crypto = true,以重新启用这些加密类型(以及其他弱 etype,包括 des-cbc-crcdes-cbc-md5),并自己承担风险。要禁用部分弱 etype,用户可以在 default_tkt_enctypesdefault_tgs_enctypespermitted_enctypes设置中明确列出首选 etype。
    请参见 JDK-8139348
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2023 年 1 月 17 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u351)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u351)于 2023 年 02 月 17 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u351 Bug 修复页。

» 8u351 发行说明


Java 8 Update 341 (8u341)

发行版要点说明
  • IANA TZ Data 2022a
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 新功能:Java GSS/Kerberos 的 HTTPS 通道绑定支持

    对于通过 javax.net.HttpsURLConnection 基于 HTTPS 进行协商/Kerberos 验证,已添加了对 TLS 通道绑定令牌的支持。

    越来越需要通道绑定令牌作为增强的安全形式。它们的工作原理是,从客户机向服务器传达客户机对连接安全性(由 TLS 服务器证书表示)和更高级别验证身份证明(例如用户名和密码)之间绑定的理解。然后,服务器可以检测客户机是否被 MITM 欺骗并关闭会话/连接。

    请参见 JDK-8279842
  • 新功能:默认情况下在 JDK 8u 上为客户机角色启用 TLSv1.3

    TLSv1.3 实现从 8u261 开始在 JDK 8u 中可用,并且默认情况下对服务器角色启用,但默认情况下对客户机角色禁用。从此发行版开始,现在,默认情况下也为客户机角色启用 TLSv1.3。您可以在 Oracle JRE and JDK Cryptographic Roadmap(Oracle JRE 和 JDK 加密路线图)的 "Additional Information"(其他信息)部分中找到更多详细信息。

    请参见 JDK-8245263
  • 其他说明:更新 java.net.InetAddress 以检测不明确的 IPv4 地址文字

    java.net.InetAddress 类已进行更新,以严格接受采用十进制 quad 记号的 IPv4 地址文字。InetAddress 类方法进行更新,以针对无效 IPv4 地址文字引发 java.net.UnknownHostException。要禁用此检查,新的 "jdk.net.allowAmbiguousIPAddressLiterals" 系统属性可以设置为 "true"。

    请参见 JDK-8277608(未公开)
  • 其他说明:使用 Firefox 102 下载时,JDK 包扩展名被截断

    在 oracle.com 和 java.com 上,使用 Firefox 版本 102 下载时,某些 JDK 包扩展名被截断。下载的包没有 ".exe"、".rpm"、".deb" 等文件扩展名。如果在 Firefox ESR 102.0.1 或 Firefox 103 发布时您无法升级到相应版本,那么可以采用以下解决方法:
        — 在下载后将文件扩展名手动添加到文件名。
        — 使用其他浏览器
    请参见 JDK-8277093

使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2022 年 10 月 18 日按计划发布下一个关键补丁程序更新后,建议不要再使用此 JDK(版本 8u341)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u341)于 2022 年 11 月 18 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u341 Bug 修复页。

» 8u341 发行说明


Java 8 Update 333 (8u333)

发行版要点说明
  • IANA TZ Data 2021a
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 更改:默认启用 Windows 备用数据流

    更改了 java.io.File 的 Windows 实施,因而默认对文件路径进行严格的有效性检查。这包括允许在路径中更多样化地使用冒号 (‘:’),而不是仅允许在单个驱动器盘符后使用冒号。还允许使用表示 NTFS 备用数据流 (Alternate Data Streams, ADS) 的路径,例如 "filename:streamname"。这将 java.io.File 的默认行为恢复到 2022 年 4 月 CPU 之前的状态,即默认不对 Windows 文件路径进行严格的有效性检查。要在 java.io.File 中重新启用严格的路径检查,应将系统属性 jdk.io.File.enableADS 设置为 false(忽略大小写)。在某些情况下这种设置可能更可取,例如使用 NUL: 这类 Windows 特殊设备路径。

    请参见 JDK-8285445
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2022 年 7 月 19 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u333)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u333)于 2022 年 08 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版基于以前的 CPU,且不包含额外的安全修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u333 发行说明页。

» 8u333 发行说明


Java 8 Update 331 (8u331)

发行版要点说明
  • IANA TZ Data 2021e
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 新功能:新增 XML 处理限制
    增加了三个处理限制。这些限制为:
    • jdk.xml.xpathExprGrpLimit
      说明:限制 XPath 表达式可以包含的组数。
      类型:整数
      值:正整数。小于或等于零的值表示无限制。如果值不是整数,将引发 NumberFormatException。默认值为 10。
    • jdk.xml.xpathExprOpLimit
      说明:限制 XPath 表达式可以包含的运算符数。
      类型:整数
      值:正整数。小于或等于零的值表示无限制。如果值不是整数,将引发 NumberFormatException。默认值为 100。
    • jdk.xml.xpathTotalOpLimit
      说明:限制 XSL 样式表中的 XPath 运算符总数。
      类型:整数
      值:正整数。小于或等于零的值表示无限制。如果值不是整数,将引发 NumberFormatException。默认值为 10000。

    支持的处理器
    • XPath 处理器支持 jdk.xml.xpathExprGrpLimitjdk.xml.xpathExprOpLimit
    • XSLT 处理器支持全部三个限制。

    设置属性

    对于 XSLT 处理器,可以通过 TransformerFactory 更改属性。例如,

    <code>        TransformerFactory factory = TransformerFactory.newInstance();
    
            factory.setAttribute("jdk.xml.xpathTotalOpLimit", "1000");
    

    对于 XPath 和 XSLT 处理器,可以通过系统属性和 jaxp.properties 配置文件(位于 Java 安装的 conf 目录)来设置属性。例如,

    <code>        System.setProperty("jdk.xml.xpathExprGrpLimit", "20");
    
    
    或在 jaxp.properties 文件中设置:
    <code>        jdk.xml.xpathExprGrpLimit=20
    
    
    JDK-8270504(未公开)
  • 其他说明:只有具备正确信任设置的证书才会在 macOS KeychainStore 中公开为可信证书条目。
    在 macOS 中,只有在用户密钥链中具备正确信任设置的证书才会在类型为密钥库的 KeychainStore 中公开为可信证书条目。此外,现在对 KeychainStore 密钥库调用 KeyStore::setCertificateEntry 方法或 keytool -importcert 命令会失败,并出现 KeyStoreException。请改为调用 macOS "security add-trusted-cert" 命令向用户密钥链中添加可信证书。
    JDK-8278449(未公开)
  • 其他说明:在 LDAP、DNS、RMI 和 CORBA 内置 JNDI 提供程序中对 URL 进行语法分析变得更加严格。可以通过系统属性控制语法分析的强度:
    在 LDAP、DNS 和 RMI 内置 JNDI 提供程序中对 URL 进行语法分析变得更加严格。可以通过系统属性控制语法分析的强度:
    <code>  -Dcom.sun.jndi.ldapURLParsing="legacy" | "compat" | "strict" (to control "ldap:" URLs)
    
    
      -Dcom.sun.jndi.dnsURLParsing="legacy" | "compat" | "strict" (to control "dns:" URLs)
    
      -Dcom.sun.jndi.rmiURLParsing="legacy" | "compat" | "strict" (to control "rmi:" URLs)
    
      -Dcom.sun.jndi.corbaURLParsing="legacy" | "compat" | "strict" (to control "iiop:" and "iiopname:" URLs)
    
    
    对于上述所有项,默认值为 "compat"。
    • "legacy" 模式会关闭新验证机制。
    • "compat" 模式会限制不兼容情况。
    • "strict" 模式更加严格,并可能因拒绝应用程序视为有效的 URL 而导致回归。

    如果发现非法 URL 字符串,将引发 javax.naming.NamingException(或其子类)。
    JDK-8278972(未公开)

使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2022 年 7 月 19 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u331)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u331)于 2022 年 08 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u331 Bug 修复页。

» 8u331 发行说明

 


Java 8 Update 321 (8u321)

发行版要点说明
  • IANA TZ Data 2021b、2021c、2021d、2021e
    JDK 8u321 包含 IANA 时区数据 2021b2021c2021d2021e。有关更多信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:新的 SunPKCS11 配置属性
    SunPKCS11 提供程序增加了新的提供程序配置属性,以便您更好地控制本机资源的使用。SunPKCS11 提供程序使用本机资源来操作本机 PKCS11 库。为了管理和更好地控制本机资源,新增了一些配置属性,以控制清除本机引用的频率,以及是否在注销后销毁底层 PKCS11 令牌。
    请参见 JDK-8240256
  • 删除的功能和选项:删除了 Google 的 GlobalSign 根证书
    以下 Google 根证书已从 cacerts 密钥库中删除:
    + alias name "globalsignr2ca [jdk]"
    Distinguished Name: CN=GlobalSign, O=GlobalSign, OU=GlobalSign Root CA - R2

    请参见 JDK-8225083
  • 其他说明:将时区数据更新到 2021c
    2021c 以来,JDK 的日期/时间库所基于的 IANA 时区数据库对某些时区规则进行了调整。请注意,自此更新以来,1970 年之前的一些时区规则已根据 2021b 引入的更改进行了修改。有关更多详细信息,请参阅 2021b 的公告
    请参见 JDK-8274407
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update, CPU) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在关键补丁程序更新、安全预警和公告中公布。在 2021 年 7 月 20 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u291)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u291)于 2021 年 8 月 20 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u321 Bug 修复页。

» 8u321 发行说明


Java 8 Update 311 (8u311)

发行版要点说明
  • IANA TZ Data 2021a
    有关更多信息,请参阅 Timezone Data Versions in the JRE Software(JRE 软件中的时区数据版本)。
  • 新功能:JDK 8u 中的 Marlin 呈现器
    从版本 8u311 开始,将构建 Marlin 图形光栅器及其构件,并将其作为 JDK/JRE 包的一部分进行分发。它不是默认呈现引擎,但有一个通过设置以下系统属性来启用它的选项:
    sun.java2d.renderer=sun.java2d.marlin.MarlinRenderingEngine
    请参见 JDK-8143849
  • 新功能:特定于上下文的反序列化筛选器子集
    允许应用程序通过一个 JVM 范围的筛选器工厂(可调用此工厂来为每个反序列化流选择筛选器)来配置特定于上下文的动态选择的反序列化筛选器。该行为是 JEP 415:特定于上下文的反序列化筛选器的严格子集,允许使用在命令行上或安全属性文件中配置的属性来配置筛选器工厂。
    有关详细信息,请参阅特定于上下文的反序列化筛选器序列化筛选指南
    JDK-8268680(未公开)
  • 删除的功能和选项:删除了 IdenTrust 根证书
    以下 IdenTrust 根证书已从 cacerts 密钥库中删除:
    + alias name "identrustdstx3 [jdk]"
    Distinguished Name: CN=DST Root CA X3, O=Digital Signature Trust Co.
    请参见 JDK-8225082
  • 其他说明:此发行版无法正确识别 Windows 11
    此发行版无法正确识别 Windows 11。在 Windows 11 上,属性 os.name 设置为 Windows 10。在 HotSpot 错误日志中,操作系统标识为 Windows 10;但是,HotSpot 错误日志显示的是工作版本号。Windows 11 具有工作版本 22000.194 或更高版本。
    请参见 JDK-8274840
  • 其他说明:更新了默认启用的密码套件首选项
    调整了 TLS 1.0 到 TLS 1.3 的密码套件的默认优先级顺序。
    对于 TLS 1.3,TLS_AES_256_GCM_SHA384 现在优先于 TLS_AES_128_GCM_SHA256。
    对于 TLS 1.0 到 TLS 1.2,一些中间套件的优先级已降低,如下所示:
    • 不保留正向保密的密码套件的优先级现在低于支持正向保密的密码套件。
    • 降低了使用 SHA-1 的密码套件的优先级。
    请参见 JDK-8163326
  • 其他说明:修改了未找到合适代理时 HttpURLConnection 的行为
    在此 JDK 发行版中,修改了使用 ProxySelectorHttpURLConnection 的行为。以前,在配置的代理无法建立连接时,HttpURLConnection 回退到尝试进行直接连接。从此发行版开始,默认行为已更改为当首次代理连接尝试失败时,不再使用直接连接。
    请参见 JDK-8161016
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在“关键补丁程序更新、安全预警和公告”中公布。在 2022 年 1 月 18 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u311)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u311)于 2022 年 2 月 18 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u311 Bug 修复页。

» 8u311 发行说明


Java 8 Update 301 (8u301)

发行版要点说明
  • IANA TZ Data 2021a
    JDK 8u301 包含 IANA 时区数据 2021a。有关更多信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:定制 PKCS12 密钥库生成
    添加了新系统和安全属性,从而用户可以定制 PKCS #12 密钥库的生成。这包括用于密钥保护、证书保护和 MacData 的算法和参数。这些属性的详细说明和可能值位于 java.security 文件的 "PKCS12 KeyStore properties" 部分。
    请参见 JDK-8076190
  • 删除的功能和选项:删除了具有 1024 位密钥的根证书
    具有弱 1024 位 RSA 公共密钥的根证书已从 cacerts 密钥库中删除。
    请参见 JDK-8243559
  • 删除的功能和选项:删除了 Telia Company 的 Sonera Class2 CA 证书
    以下根证书已从 cacerts 信任库中删除:
    + Telia Company
    + soneraclass2ca
    DN: CN=Sonera Class2 CA, O=Sonera, C=FI

    请参见 JDK-8225081
  • 其他说明:升级了默认 PKCS12 加密算法
    更新了 PKCS #12 密钥库中使用的默认加密算法。新算法基于 AES-256 和 SHA-256,比基于 RC2、DESede 和 SHA-1 的旧算法更强。有关详细信息,请参见 java.security 文件中以 keystore.pkcs12 开头的安全属性。
    为了兼容性,定义了一个名为 keystore.pkcs12.legacy 的新系统属性,该属性会将算法还原为使用较旧的较弱算法。没有为此属性定义值。
    请参见 JDK-8153005
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在关键补丁程序更新、安全预警和公告中公布。在 2021 年 10 月 19 日按计划发布下一个关键补丁程序更新后,建议不要再使用此 JDK(版本 8u301)。

管理大量桌面的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u301)于 2021 年 11 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u301 Bug 修复页。

» 8u301 发行说明


Java 8 Update 291 (8u291)

发行版要点说明
  • IANA TZ Data 2020e、2020f、2021a
    JDK 8u291 包含 IANA 时区数据 2020e2020f2021a。有关更多信息,请参阅 JRE 软件中的时区数据版本
  • 其他说明:新增了系统和安全属性,用于控制 JDK 的内置 JNDI RMI 和 LDAP 实现对远程对象的重构
    jdk.jndi.object.factoriesFilter:此系统和安全属性允许指定一个串行筛选器来控制对象工厂类的集合,这些对象工厂类允许从命名/目录系统返回的对象引用中实例化对象。远程引用重构期间,引用实例命名的工厂类将与此筛选器进行匹配。此筛选器属性支持基于模式的筛选器语法,其格式由 JEP 290 指定。此属性同时适用于 JNDI/RMI 和 JNDI/LDAP 内置提供程序实现。默认值允许引用中指定的任何对象工厂类重新创建引用的对象。
    JDK-8244473(未公开)
  • 其他说明:双击 jar 执行文件时不更新默认 Java 版本
    如果 PATH 环境变量包含由较新发行版中的 Oracle JDK 安装程序配置的记录,则 Oracle JRE 安装程序会在该记录后面的 PATH 环境变量中插入一个路径,该路径指向包含 Java 命令(java.exejavaw.exejavaws.exe)的目录。以前,Oracle JRE 安装程序忽略较新发行版中的 Oracle JDK 安装程序对 PATH 环境变量进行的更改,并且会错误地更新 PATH 环境变量的值。有关其他技术信息,请参见以下 CSR:https://bugs.openjdk.java.net/browse/JDK-8259858
    请参见 JDK-8259215
  • 其他说明:禁用 TLS 1.0 和 1.1
    TLS 1.0 和 1.1 是 TLS 协议的不再被认为安全的版本,已被更安全和现代的版本(TLS 1.2 和 1.3)取代。
    现在,这些版本在默认情况下处于禁用状态。如果您遇到问题,可以通过从 java.security 配置文件中的 jdk.tls.disabledAlgorithms 安全属性中删除 "TLSv1" 和/或 "TLSv1.1" 来重新启用这些版本,但需要自担风险。
    请参见 JDK-8202343
  • 其他说明:针对 Java 插件小应用程序和 Java Web Start 应用程序禁用 TLS 1.0 和 1.1
    TLS 1.0 和 1.1 已被禁用。默认情况下,Java 插件小应用程序和 Java Web Start 应用程序不使用这些协议。如果遇到任何问题,可以通过 Java 控制面板中的选项来重新启用这些协议。
    JDK-8255892(未公开)
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update, CPU) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在关键补丁程序更新、安全预警和公告中公布。在 2021 年 7 月 20 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u291)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u291)于 2021 年 8 月 20 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u291 Bug 修复页。

» 8u291 发行说明


Java 8 Update 281 (8u281)

发行版要点说明
  • IANA Data 2020d
    JDK 8u281 包含 IANA 时区数据版本 2020d。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:groupname 选项已添加到 keytool 密钥对生成
    新的 -groupname 选项已添加到 keytool -genkeypair,因此用户可以在生成密钥对时指定命名组。例如,通过使用 secp384r1 曲线,keytool -genkeypair -keyalg EC -groupname secp384r1 将生成 EC 密钥对。因为可能有多条大小相同的曲线,所以与 -keysize 选项相比,首选使用 -groupname 选项。
    请参见 JDK-8213400
  • 新功能:Apache Santuario 库已更新到版本 2.1.4
    Apache Santuario 库已升级到版本 2.1.4。因此,引入了新的系统属性 com.sun.org.apache.xml.internal.security.parser.pool-size
    此新系统属性可设置在处理 XML 签名时使用的内部 DocumentBuilder 高速缓存的池大小。该功能等效于 Apache Santuario 中使用的 org.apache.xml.security.parser.pool-size 系统属性,并且具有相同的默认值 20。
    请参见 JDK-8231507
  • 新功能:支持 certificate_authorities 扩展
    "certificate_authorities" 扩展是 TLS 1.3 中引入的可选扩展。它用于指示端点支持的证书颁发机构 (certificate authority, CA),并且应该由接收端点用于指导证书选择。
    请参见 JDK-8206925
  • 其他说明:已更改 Properties.loadFromXML 以符合规范
    已更改 java.util.Properties loadFromXML 方法的实现以符合其规范。具体而言,通过引发如 loadFromXML 方法所指定的 InvalidPropertiesFormatException,底层 XML 语法分析器实现现在可拒绝不符合规范的 XML 文档。
    请参见 JDK-8213325
  • 其他说明:已在 tzdata2020b 中删除美国/新太平洋区名
    在 JDK 更新到 tzdata2020b 后,已删除名为 pacificnewsystemv 的久已过时的文件。因此,pacificnew 数据文件中声明的“美国/新太平洋”区名不再可用。
    请参见 JDK-8254177
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update, CPU) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在关键补丁程序更新、安全预警和公告中公布。在 2021 年 4 月 20 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u281)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u281)于 2021 年 5 月 15 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关更多信息,请参见《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u281 Bug 修复页。

» 8u281 发行说明


Java 8 Update 271 (8u271)

发行版要点说明
  • IANA Data 2020a
    JDK 8u271 包含 IANA 时区数据版本 2020a。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:默认禁用 TLS、CertPath 和签名的 JAR 中的弱命名曲线
    通过将弱命名曲线添加到以下 disabledAlgorithms 安全属性,可使弱命名曲线在默认情况下处于禁用状态:jdk.tls.disabledAlgorithmsjdk.certpath.disabledAlgorithmsjdk.jar.disabledAlgorithms。通过将各个命名曲线添加到每个 disabledAlgorithms 属性来禁用 47 个弱命名曲线会过于繁琐。为了缓解此问题,实施了一个名为 jdk.disabled.namedCurves 的新安全属性,该属性可以列出对所有 disabledAlgorithms 属性公用的命名曲线。要在 disabledAlgorithms 属性中使用该新属性,请在完整属性名称之前加上关键字 include。用户仍可以将单个命名曲线添加到 disabledAlgorithms 属性,而不使用该新属性。disabledAlgorithms 属性中不能包括任何其他属性。
    请参见 JDK-8233228
  • 新功能:支持 Kerberos 跨领域引用 (RFC 6806)
    Kerberos 客户端已经进行了增强,现在支持 RFC 6806 协议扩展定义的主体名称规范化和跨领域引用。
    由于此新功能,Kerberos 客户端可以利用更加动态的环境配置,而且不必(事先)知道如何到达目标主体(用户或服务)的领域。
    请参见 JDK-8223172
  • 已删除的功能:Java 插件已从适用于 Linux、Solaris 和 MacOS 平台的 JDK 8u 中删除
    NPAPI 被视为易受攻击的插件,已在许多浏览器中被禁用。当前没有浏览器在 Linux、Solaris 和 MacOS 平台上支持基于 NPAPI 的 Java 插件。
    从 8u271 开始,将不会构建 Java 插件中负责与浏览器(特别是 libnpjp2 库)及其关联构件进行集成和交互的部分。该部分也不包含在 Linux、Solaris 和 MacOS 平台上的 JRE 发行版中。
    JDK-8240210(未公开)
  • 其他说明:添加了一个属性来控制允许通过 Clear 连接进行验证的 LDAP 验证机制
    添加了一个名为 jdk.jndi.ldap.mechsAllowedToSendCredentials 的新环境属性,该属性用来控制允许哪些 LDAP 验证机制通过 clear LDAP 连接(未使用 TLS 保护的连接)发送凭据。encrypted LDAP 连接是使用 ldaps 方案打开的连接,或者是在使用 ldap 方案打开后又通过 STARTTLS 扩展操作升级到 TLS 的连接。
    JDK-8237990(未公开)
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update, CPU) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用以下“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在关键补丁程序更新、安全预警和公告中公布。在 2021 年 1 月 19 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u271)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u271)于 2021 年 2 月 20 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关详细信息,请参阅《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u271 Bug 修复页。

» 8u271 发行说明


Java 8 Update 261 (8u261)

发行版要点说明
  • IANA Data 2020a
    JDK 8u261 包含 IANA 时区数据版本 2020a。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:JDK/JRE 运行时 Windows Visual Studio 库 (DLL) 相关性更改
    在当前进行的维护中,包括将使用 Microsoft Visual Studio 2017 工具链构建适用于 Windows 的 JDK 7 和 JDK 8。2020 年 7 月 CPU 中的 JDK 8u261 是使用 Visual Studio 2017 构建的。随着 2020 年 10 月 CPU 的发布,JDK 7u281 将移至 Visual Studio 2017。
    JDK-8246783(未公开)
  • 新功能:JEP 332 传输层安全 (Transport Layer Security, TLS) 1.3
    JDK 8u261 中实施了传输层安全 (Transport Layer Security, TLS) 1.3 规范 (RFC 8446)。有关包括支持的功能列表在内的更多详细信息,请参阅 Java 安全套接字扩展 (Java Secure Socket Extension, JSSE) 参考文档和 JEP 332
    请参见 JDK-814252
  • 新功能:新增了用于配置 TLS 签名方案的系统属性
    添加了两个新系统属性,用于在 JDK 中定制 TLS 签名方案。
    针对 TLS 客户端添加了 jdk.tls.client.SignatureSchemes,针对服务器端添加了 jdk.tls.server.SignatureSchemes
    请参见 JDK-8242141
  • 新功能:为 TLS 协商了有限字段 Diffie-Hellman 临时参数
    JDK SunJSSE 实施现在支持 RFC 7919 中定义的 TLS FFDHE 机制。如果服务器无法处理 supported_groups TLS 扩展或扩展中的指定组,应用程序可以使用 jdk.tls.namedGroups 定制支持的组名,或者通过将系统属性 jsse.enableFFDHE 设置为 false 来禁用 FFDHE 机制。
    请参见 JDK-8140436
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update, CPU) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用以下“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在关键补丁程序更新、安全预警和公告中公布。在 2020 年 10 月 13 日按计划发布下一个关键补丁程序更新后,建议不要再使用此 JDK(版本 8u261)。

管理大量台式机的 JRE 更新/安装的 Java SE 订阅客户应考虑使用 Java 高级管理控制台 (Advanced Management Console, AMC)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u261)于 2020 年 11 月 13 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关详细信息,请参阅《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u261 Bug 修复页。

» 8u261 发行说明


Java 8 Update 251 (8u251)

发行版要点说明
  • IANA Data 2019c
    JDK 8u251 包含 IANA 时区数据版本 2019c。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:添加了对 PKCS#1 v2.2 算法(包括 RSASSA-PSS 签名)的支持
    对 SunRsaSign 和 SunJCE 提供方进行了增强,支持 PKCS#1 v2.2 中定义的更多算法,例如使用 FIPS 180-4 摘要算法的 RSASSA-PSS 签名和 OAEP。向 java.security.specjavax.crypto.spec 程序包下的相关 JCA/JCE 类添加了新的构造器和方法,以支持更多的 RSASSA-PSS 参数。
    请参见 JDK-8146293
  • 其他说明:WebEngine 限制对特定类的 JavaScript 方法调用
    在 WebEngine 加载的 Web 页上下文中运行的 JavaScript 程序可以与应用程序传递到 JavaScript 程序的 Java 对象通信。引用 java.lang.Class 对象的 JavaScript 程序现在只能使用以下方法:
    getCanonicalName
    getEnumConstants
    getFields
    getMethods
    getName
    getPackageName
    getSimpleName
    getSuperclass
    getTypeName
    getTypeParameters
    isAssignableFrom
    isArray
    isEnum
    isInstance
    isInterface
    isLocalClass
    isMemberClass
    isPrimitive
    isSynthetic
    toGenericString
    toString


    不能对以下类调用任何方法:
    java.lang.ClassLoader
    java.lang.Module
    java.lang.Runtime
    java.lang.System

    java.lang.invoke.*
    java.lang.module.*
    java.lang.reflect.*
    java.security.*
    sun.misc.*


    JDK-8236798(未公开)
  • 其他说明:新增了特定于 Oracle 的 JDK 8 Updates 系统属性,以回退到传统 Base64 编码格式
    Oracle JDK 8u231 已将 Apache Santuario 库升级到 v2.1.3。此升级引入了一个问题,即使用 Base64 编码的 XML 签名导致向编码的输出附加 &#xd&#13。在 Apache Santuario 代码库中进行此行为更改是为了符合 RFC 2045。Santuario 团队已采取措施使其库符合 RFC 2045。
    请参见 JDK-8236645
使 JDK 保持最新

Oracle 建议通过每个关键补丁程序更新 (Critical Patch Update, CPU) 更新 JDK。要确定某个发行版是否是最新发行版,可以使用以下“安全基线”页确定每个发行版系列的最新版本。

包含安全漏洞修复的关键补丁程序更新将提前一年在关键补丁程序更新、安全预警和公告中公布。在 2020 年 7 月 14 日按计划发布下一个关键补丁程序更新后,建议不要使用此 JDK(版本 8u251)。

对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u251)于 2020 年 8 月 14 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。有关详细信息,请参阅《Java Platform, Standard Edition Deployment Guide》中的 23.1.2 JRE Expiration Date

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u251 Bug 修复页。

» 8u251 发行说明


Java 8 Update 241 (8u241)

发行版要点说明
  • IANA Data 2019c
    JDK 8u241 包含 IANA 时区数据版本 2019c。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:允许限制 SASL 机制
    现在添加了名为 jdk.sasl.disabledMechanisms 的安全属性,它可用于禁用 SASL 机制。如果在 Sasl.createSaslClientmechanisms 参数或 Sasl.createSaslServermechanism 参数中指定了任何禁用的机制,该机制将被忽略。此安全属性的默认值为空,这表示没有现成的禁用机制。
    请参见 JDK-8200400
  • 新功能: 升级后的 SunPKCS11 提供程序支持 PKCS#11 v2.40
    SunPKCS11 提供程序已更新,现在支持 PKCS#11 v2.40。此版本支持的算法进一步增加,例如 AES/GCM/NoPadding 密码、使用 SHA-2 消息摘要系列的 DSA 签名和 RSASSA-PSS 签名(当 PKCS11 基础库支持相应的 PKCS11 机制时)。
    请参见 JDK-8080462
  • 其他说明:对信任锚证书的新检查
    增加了新的检查,以确保信任锚是 CA 证书且包含合适的扩展。信任锚用于验证 TLS 和签名代码中使用的证书链。信任锚证书必须包括 cA 字段设置为 true 的基本约束条件扩展。此外,如果证书包括密钥使用扩展,则必须设置 keyCertSign 位。
    JDK-8230318(未公开)
  • 其他说明:可信 TLS 服务器证书需要完全匹配
    TLS 服务器证书必须与客户端上的可信证书完全匹配,这样在建立 TLS 连接时才可信任。
    JDK-8227758(未公开)
  • 其他说明:添加了 LuxTrust 全局根 2 证书
    向 cacerts 信任库中添加了 LuxTrust 根证书
    请参见 JDK-8232019
  • 其他说明:添加了 4 个 Amazon 根 CA 证书
    向 cacerts 信任库中添加了 Amazon 根证书
    请参见 JDK-8233223
  • Bug 修复:支持 OpenType CFF 字体
    以前,Oracle JDK 8 未将 OpenType CFF 字体(.otf 字体)包括在标准逻辑字体(如 "Dialog" 和 "SansSerif")中。这导致在呈现文本时缺少字形。在系统上仅安装了 CFF 字体的最极端的情况下,可能会引发 Java 异常错误。
    多个 Linux 发行版受到此问题的影响,因为它们依赖于 CFF 字体来支持一些语言,这在 CJK(中文、日文和韩文)语言中很常见。
    Oracle JDK 8 现在使用这些 CFF 字体,此问题已解决。
    请参见 JDK-8209672
  • Bug 修复:改善了串行筛选器的处理
    jdk.serialFilter 系统属性只能在命令行中设置。如果未在命令行中设置筛选器,则可以使用 java.io.ObjectInputFilter.Config.setSerialFilter 进行设置。使用 java.lang.System.setProperty 设置 jdk.serialFilter 不起作用。
    JDK-8231422(未公开)
Java 到期日期

8u241 的到期日期为 2020 年 4 月 14 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u241)于 2020 年 5 月 14 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u241 Bug 修复页。

» 8u241 发行说明


Java 8 Update 231 (8u231)

发行版要点说明
  • IANA Data 2019b
    JDK 8u231 包含 IANA 时区数据版本 2019b。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:新增了 jdk.jceks.iterationCount 系统属性
    引入了一个新的系统属性来控制用于 jceks 密钥库的迭代计数值。默认值保持为 200000,但可以指定介于 10000 和 5000000 之间的值。该新系统属性的名称为 jdk.jceks.iterationCount,提供的值应为可接受范围内的整数。如果遇到语法分析错误,则将使用默认值。
    JDK-8223269(未公开)
  • 新功能:新增了 Java 飞行记录器 (Java Flight Recorder, JFR) 安全事件
    向安全库区域添加了四个新的 JFR 事件。这些事件默认情况下处于禁用状态,可以通过 JFR 配置文件或通过标准 JFR 选项启用这些事件。
    请参见 JDK-8148188
  • 删除的功能和选项:从 JavaFX 中删除了 T2K 光栅器和 ICU 布局引擎
    已从 JavaFX 中删除了 T2K 光栅器和 ICU 布局引擎。
    请参见 JDK-8187147
  • 其他说明:[client-libs 和 javaFX] 现在在 Linux/Unix 上默认使用 GTK3
    较新版本的 Linux、Solaris 及其他 Unix 风格的桌面环境使用 GTK3,同时仍支持 GTK2。
    以前,JDK 默认加载旧版 GTK2 库。但在此发行版中,其默认加载 GTK3 库。加载通常通过使用 Swing GTK 外观来触发。
    可以通过使用以下系统属性恢复旧行为:-Djdk.gtk.version=2.2
    请参见 JDK-8222496
  • 其他说明:从默认 TLS 算法中删除过时的 NIST EC 曲线
    此项更改是从 TLS 协商期间使用的默认指定组中删除过时的 NIST EC 曲线。删除的曲线为 sect283k1、sect283r1、sect409k1、sect409r1、sect571k1、sect571r1 和 secp256k1。
    要重新启用这些曲线,请使用 jdk.tls.namedGroups 系统属性。该属性包含按首选项顺序排列的已启用指定组的逗号分隔列表(用引号引住)。例如:
    java -Djdk.tls.namedGroups="secp256r1, secp384r1, secp521r1, sect283k1, sect283r1, sect409k1, sect409r1, sect571k1, sect571r1, secp256k1" ...
    JDK-8228825(未公开)
Java 到期日期

8u231 的到期日期是 2020 年 1 月 14 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u231)于 2020 年 2 月 14 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u231 Bug 修复页。

» 8u231 发行说明


Java 8 Update 221 (8u221)

发行版要点说明
  • IANA Data 2018i
    JDK 8u221 包含 IANA 时区数据版本 2018i。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:HotSpot Windows OS 检测正确标识 Windows Server 2019
    在此修复之前,Windows Server 2019 被识别为 "Windows Server 2016",这在 os.name 系统属性和 hs_err_pid 文件中生成了不正确的值。
    请参见 JDK-8211106
  • 删除的功能和选项:删除两个 DocuSign 根 CA 证书
    两个 DocuSign 根 CA 证书已到期,已从 cacerts 密钥库中删除:
    • 别名 "certplusclass2primaryca [jdk]"
      唯一判别名:CN=Class 2 Primary CA,O=Certplus,C=FR
    • 别名 "certplusclass3pprimaryca [jdk]"
      唯一判别名:CN=Class 3P Primary CA,O=Certplus,C=FR
    请参见 JDK-8223499
  • 删除的功能和选项:删除两个 Comodo 根 CA 证书
    两个 Comodo 根 CA 证书已到期,已从 cacerts 密钥库中删除:
    • 别名 "utnuserfirstclientauthemailca [jdk]"
      唯一判别名:CN=UTN-USERFirst-Client Authentication and Email,OU=http://www.usertrust.com,O=The USERTRUST Network,L=Salt Lake City,ST=UT,C=US
    • 别名 "utnuserfirsthardwareca [jdk]"
      唯一判别名:CN=UTN-USERFirst-Hardware,OU=http://www.usertrust.com,O=The USERTRUST Network,L=Salt Lake City,ST=UT,C=US
    请参见 JDK-8222136
  • 删除的功能和选项:删除 T-Systems Deutsche Telekom 根 CA 2 证书
    T-Systems Deutsche Telekom 根 CA 2 证书已到期,已从 cacerts 密钥库中删除:
    • 别名 "deutschetelekomrootca2 [jdk]"
      唯一判别名:CN=Deutsche Telekom Root CA 2,OU=T-TeleSec Trust Center,O=Deutsche Telekom AG,C=DE
    请参见 JDK-8222137
  • 其他说明:Java Access Bridge 安装解决方法
    在具有先前安装的 Java 版本和正在运行的 JAWS 实例的 Windows 系统上安装 Java 时,会有破坏 Java Access Bridge 功能的风险。重新引导后,在系统的系统目录 C:\Windows\System32(对于 64 位 Java 产品)或 WOW64 使用的系统目录 C:\Windows\SysWoW64(对于 32 位 Java 产品)中,可能会没有 WindowsAccessBridge-64.dll
    要防止破坏 Java Access Bridge 功能,请使用以下解决方法之一:
    • 运行 Java 安装程序之前停止 JAWS。
    • 安装新的 Java 版本之前卸载现有 JRE。
    • 安装新的 Java 版本并且重新引导计算机之后卸载现有 JRE。
    解决方法的目的是避免在 JAWS 运行时从 Java 安装程序卸载现有 JRE 的情况。
    JDK-8223293(未公开)
Java 到期日期

8u221 的到期日期为 2019 年 10 月 15 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u221)于 2019 年 11 月 15 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版还包含对 Oracle 关键补丁程序更新中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u221 Bug 修复页。

» 8u221 发行说明


Java 8 Update 211 (8u211)

发行版要点说明
  • IANA Data 2018g
    JDK 8u211 包含 IANA 时区数据版本 2018g。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:针对日本新年号的方块字符支持
    Unicode Consortium 保留了代码点 U+32FF 来显示日语方块字符,以支持从 2019 年 5 月开始使用的新年号。Character 类中的相关方法返回与现有日本年号字符相同的属性(例如 U+337E 用于 "Meizi")。有关代码点的详细信息,请参阅 http://blog.unicode.org/2018/09/new-japanese-era.html
    请参见 JDK-8211398
  • 更改:添加了 GlobalSign R6 根证书
    以下根证书已添加到 OpenJDK cacerts 信任库:
    • GlobalSign
      • globalsignrootcar6
        DN:CN=GlobalSign,O=GlobalSign,OU=GlobalSign Root CA - R6

    JDK-8216577(未公开)
  • 更改:不信任锚定到 Symantec 根的 TLS 服务器证书
    JDK 将不再信任 Symantec 颁发的 TLS 服务器证书,与 Google、Mozilla、Apple 和 Microsoft 最近公布的类似计划保持一致。受影响证书列表包括由 Symantec 管理的品牌为 GeoTrust、Thawte 和 VeriSign 的证书。
    2019 年 4 月 16 日或之前颁发的 TLS 服务器证书将继续受信任,直到它们到期。将拒绝该日期之后颁发的证书。有关如何用 DigiCert 证书替换您的 Symantec 证书的信息,请参见 DigiCert 支持页(DigiCert 在 2017 年 12 月 1 日接管了所有 Symantec 网站安全性 SSL/TLS 证书的验证和颁发)。
    此政策的一个例外是,通过 Apple 管理的两个下属证书颁发机构颁发的 TLS 服务器证书(如下所示)将继续受信任,只要它们是在 2019 年 12 月 31 日或之前颁发的。
    请参见 JDK-8207258
  • 更改:新的日本年号
    从 2019 年 5 月 1 日开始使用的日本年号的占位符名称 "NewEra" 已替换为日本政府公布的名称 "Reiwa"。依靠该占位符名称获取新年号单例的应用程序 (JapaneseEra.valueOf("NewEra")) 将不再起作用。
    请参见 JDK-8205432
  • 更改:在 java.time.chrono.JapaneseEra 中支持新的日本年号
    明确定义了 JapaneseEra 类及其 of(int)valueOf(String)values() 方法,以适应将来增加的日本年号,例如如何定义单例实例,关联的整数年号值是什么等。
    请参见 JDK-8212941
Java 到期日期

8u211 的到期日期为 2019 年 7 月 16 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u211)于 2019 年 8 月 16 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版包含对 Oracle Java SE 关键补丁程序更新指导中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u211 Bug 修复页。

» 8u211 发行说明


Java 8 Update 201 (8u201)

发行版要点说明
  • IANA Data 2018e
    JDK 8u201 包含 IANA 时区数据版本 2018e。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 更改:禁用了 TLS anon 和 NULL 密码套件
    TLS anon(匿名)和 NULL 密码套件已添加到 jdk.tls.disabledAlgorithms 安全属性中,现在默认处于禁用状态。
    请参见 JDK-8211883
  • 更改:jarsigner 显示时间戳何时到期
    jarsigner 工具现在会为带时间戳的 JAR 显示更多的有效期信息。当时间戳到期或将在一年内到期时,将显示新警告和错误消息。
    请参见 JDK-8191438
Java 到期日期

8u201 的到期日期是 2019 年 4 月 16 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u201)于 2019 年 5 月 16 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版包含对 Oracle Java SE 关键补丁程序更新指导中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u201 Bug 修复页。

» 8u201 发行说明


Java 8 Update 191 (8u191)

发行版要点说明
  • IANA Data 2018e
    JDK 8u191 包含 IANA 时区数据版本 2018e。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 更改:更改了 usagetracker.properties 文件的中央文件系统位置
    Windows 中用于 usagetracker.properties 文件的文件系统位置已从 %ProgramData%\Oracle\Java\ 移至 %ProgramFiles%\Java\conf
    Linux、Solaris 或 macOS 的文件路径没有更改。JDK-8204901(未公开)
  • 更改:禁用了所有 DES TLS 密码套件
    基于 DES 的 TLS 密码套件被视为过时,不应再使用。默认情况下,在 SunJSSE 实现中通过将 "DES" 标识符添加到 jdk.tls.disabledAlgorithms 安全属性来停用基于 DES 的密码套件。通过从 java.security 文件包含的 jdk.tls.disabledAlgorithms 安全属性中删除 "DES",或者动态调用 Security.setProperty() 方法,可以重新激活这些密码套件。在这两种情况下,重新启用 DES 之后必须使用 SSLSocket.setEnabledCipherSuites()SSLEngine.setEnabledCipherSuites() 方法将基于 DES 的密码套件添加到已启用密码套件列表。
    请注意,在此更改之前,通过 jdk.tls.disabledAlgorithms 安全属性禁用了 DES40_CBC(但不是所有 DES)套件。
    请参见 JDK-8208350
  • 更改:删除多个 Symantec 根 CA
    以下 Symantec 根证书不再使用,已经删除:
    • Symantec
      • equifaxsecureca
        DN:OU=Equifax Secure Certificate Authority,O=Equifax,C=US
      • equifaxsecureglobalebusinessca1
        DN:CN=Equifax Secure Global eBusiness CA-1,O=Equifax Secure Inc.,C=US
      • equifaxsecureebusinessca1
        DN:CN=Equifax Secure eBusiness CA-1,O=Equifax Secure Inc.,C=US
      • verisignclass1g3ca
        DN:CN=VeriSign Class 1 Public Primary Certification Authority - G3,OU="(c) 1999 VeriSign, Inc. - For authorized use only",OU=VeriSign Trust Network,O="VeriSign, Inc.",C=US
      • verisignclass2g3ca
        DN:CN=VeriSign Class 2 Public Primary Certification Authority - G3,OU="(c) 1999 VeriSign, Inc. - For authorized use only",OU=VeriSign Trust Network,O="VeriSign, Inc.",C=US
      • verisignclass1g2ca
        DN:OU=VeriSign Trust Network,OU="(c) 1998 VeriSign, Inc. - For authorized use only",OU=Class 1 Public Primary Certification Authority - G2,O="VeriSign, Inc.",C=US
      • verisignclass1ca
        DN:OU=Class 1 Public Primary Certification Authority,O="VeriSign, Inc.",C=US

    请参见 JDK-8191031
  • 更改:删除 Baltimore Cybertrust 代码签名 CA
    以下 Baltimore CyberTrust 代码签名根证书不再使用,已经删除:
    • baltimorecodesigningca
      DN:CN=Baltimore CyberTrust Code Signing Root,OU=CyberTrust,O=Baltimore,C=IE

    请参见 JDK-8189949
  • Bug 修复:LDAPS 通信失败
    在 2018 年 7 月 CPU(8u181、7u191 和 6u201)上运行的、使用套接字连接超时为 <= 0(默认值)的 LDAPS 的应用程序代码在建立连接时可能会遇到异常错误。
    遇到此类问题的应用程序的异常错误堆栈跟踪中最顶层的帧可能类似于以下内容:
    javax.naming.ServiceUnavailableException: ; socket closed
    at com.sun.jndi.ldap.Connection.readReply(Unknown Source)
    at com.sun.jndi.ldap.LdapClient.ldapBind(Unknown Source) ...
    该问题已解决,在以下发行版中提供修复:
    • 8u181
    • 7u191

    请参见 JDK-8211107
Java 到期日期

8u191 的到期日期是 2019 年 1 月 15 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u191)于 2019 年 2 月 15 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版包含对 Oracle Java SE 关键补丁程序更新指导中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u191 Bug 修复页。

» 8u191 发行说明


Java 8 Update 181 (8u181)

发行版要点说明
  • IANA Data 2018e
    JDK 8u181 包含 IANA 时区数据版本 2018e。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 已删除的功能:删除 Java DB
    Java DB(也称为 Apache Derby)在此发行版中已删除。
    我们建议您直接从 Apache 项目获取最新的 Apache Derby,网址为:
    https://db.apache.org/derby
    JDK-8197871(未公开)
  • 更改:改进 LDAP 支持
    已在 LDAPS 连接上启用端点标识。
    为了提高 LDAPS(安全 LDAP over TLS)连接的强健性,默认情况下启用了端点标识算法。
    请注意,在某些情况下,以前能够成功连接到 LDAPS 服务器的某些应用程序可能不再能够这样做。如果认为合适,此类应用程序可以使用新的系统属性禁用端点标识:com.sun.jndi.ldap.object.disableEndpointIdentification
    定义此系统属性(或将其设置为 true)以禁用端点标识算法。
    JDK-8200666(未公开)
  • 更改:更好的堆栈遍历
    已在反序列化的对象创建阶段添加了新的访问检查。这不应影响反序列化的普通使用。但是,利用 JDK 内部 API 的反射框架可能会受到影响。如有必要,可以通过将系统属性 jdk.disableSerialConstructorChecks 设置为值 "true" 来禁用新检查。通过将参数 -Djdk.disableSerialConstructorChecks=true 添加到 Java 命令行可以完成此操作。
    JDK-8197925(未公开)
  • Bug 修复:G1 GC 期间出现 JVM 崩溃
    对于 G1 并发标记已经视为不可访问的 klass,可以在 ClassLoaderData/SystemDictionary 中查找它,而且其 _java_mirror_class_loader 字段可以存储在根中或能使其重新活动的任何其他可访问对象中。每当一个 klass 以这种方式复活时,都需要将此变化通知 G1 的 SATB 部分,否则,并发标记备注阶段将错误地卸载此 klass。
    请参见 JDK-8187577
  • Bug 修复:较早的 NUMA 库 (-XX+UseNuma) 具有更好的稳定性
    JDK 8 Update 152 中包含的一个修复引入了回归,在 libnuma 版本低于 2.0.9 的 Linux 系统上使用 UseNUMA 标记时,这可能导致 HotSpot JVM 在启动时崩溃。此问题已得到解决。
    请参见 JDK-8198794
Java 到期日期

8u181 的到期日期为 2018 年 10 月 16 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u181)于 2018 年 11 月 16 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版包含对 Oracle Java SE 关键补丁程序更新指导中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u181 Bug 修复页。

» 8u181 发行说明


Java 8 Update 171 (8u171)

发行版要点说明
  • IANA Data 2018c
    JDK 8u171 包含 IANA 时区数据版本 2018c。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:增强的密钥库机制
    引入了名为 jceks.key.serialFilter 的新安全属性。如果配置了此筛选器,则在反序列化 SecretKeyEntry 内部存储的已加密密钥对象的过程中,JCEKS 密钥库将使用此筛选器。如果没有配置,或者筛选器结果为 UNDECIDED(例如,没有任何模式匹配),则采用 jdk.serialFilter 配置的筛选器。
    如果还提供了系统属性 jceks.key.serialFilter,则它会取代此处定义的安全属性值。
    筛选器模式使用与 jdk.serialFilter 相同的格式。默认模式允许 java.lang.Enum、java.security.KeyRep、java.security.KeyRep$Typejavax.crypto.spec.SecretKeySpec,但拒绝其他所有类型。
    如果客户存储的 SecretKey 未序列化为上述类型,则客户必须修改此筛选器以使该密钥可提取。
    JDK-8189997(未公开)
  • 新功能:用于禁用 JRE 上次使用情况跟踪的系统属性
    引入了新的系统属性 jdk.disableLastUsageTracking,可以对正在运行的 VM 禁用 JRE 上次使用情况跟踪。在命令行中,可以使用 -Djdk.disableLastUsageTracking=true-Djdk.disableLastUsageTracking 来设置此属性。设置此系统属性后,将禁用 JRE 上次使用情况跟踪,而无论 usagetracker.properties 中设置的 com.oracle.usagetracker.track.last.usage 属性值是什么。
    JDK-8192039(未公开)
  • 注:CipherOutputStream 用法
    javax.crypto.CipherOutputStream 的规范已经指明,此类可捕获 BadPaddingException 以及在解密过程中失败的完整性检查所引发的其他异常错误。这些异常错误不会重新引发,因此未向客户机通知完整性检查失败的情况。由于此行为,如果应用程序要求在验证失败时发出显式通知,则在操作(例如 GCM)的已验证模式中,此类可能不适合在解密时使用。这些应用程序可以直接将密码 API 用作此类的替代。
    JDK-8182362(未公开)
  • 更改:附加 TeliaSonera 根证书
    “TeliaSonera 根 CA v1”已添加到 cacerts 密钥库。
    JDK-8190851(未公开)
  • 更改:禁止使用少于 224 位的 EC 密钥对 XML 签名进行签名
    为了提高 SSL/TLS 连接的强度,在 JDK 中,已通过 jdk.tls.disabledAlgorithms 安全属性在 SSL/TLS 连接中禁用 3DES 密码套件。
    JDK-8175075(未公开)
  • Bug 修复:已禁用服务器端 HTTP 隧道 RMI 连接
    在此发行版中,默认情况下已禁用服务器端 HTTP 隧道 RMI 连接。通过将运行时属性 sun.rmi.server.disableIncomingHttp 设置为 false,可以恢复此行为。请注意,不应该将它与 sun.rmi.server.disableHttp 属性混淆,后者在客户端禁用 HTTP 隧道,默认值为 false
    JDK-8193833(未公开)
Java 到期日期

8u171 的到期日期为 2018 年 7 月 17 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u171)于 2018 年 8 月 17 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版包含对 Oracle Java SE 关键补丁程序更新指导中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参见 JDK 8u171 Bug 修复页。

» 8u171 发行说明


Java 8 Update 161 (8u161)

发行版要点说明
  • IANA Data 2017c
    JDK 8u161 包含 IANA 时区数据版本 2017c。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 新功能:支持最高 8192 位的 DHE 大小,以及最高 3072 位的 DSA 大小
    增强了 JDK 安全提供程序,支持 3072 位 DiffieHellman 以及 DSA 参数生成,预先计算的 DiffieHellman 参数最高为 8192 位,预先计算的 DSA 参数最高为 3072 位。
    请参见 JDK-8072452
  • 新功能:为 TLS 协商了有限字段 Diffie-Hellman 临时参数
    JDK SunJSSE 实施现在支持 RFC 7919 中定义的 TLS FFDHE 机制。如果服务器无法处理 supported_groups TLS 扩展或扩展中的指定组,应用程序可以使用 jdk.tls.namedGroups 定制支持的组名,或者通过将系统属性 jsse.enableFFDHEExtension 设置为 false 来禁用 FFDHE 机制。
    请参见 JDK-8140436
  • 新功能:将额外的 IDL 存根类型检查添加到 org.omg.CORBA.ORBstring_to_object 方法
    对于显式或隐式调用 org.omg.CORBA.ORB.string_to_object 的应用程序,如果希望确保 ORB::string_to_object 调用流中涉及的 IDL 存根类型的完整性,应指定额外的 IDL 存根类型检查。这是一项“选择加入”的功能,默认情况下不启用。
    要利用额外的类型检查,IDL 存根类的有效 IDL 接口类名列表由以下之一配置:
    • 指定安全属性 com.sun.CORBA.ORBIorTypeCheckRegistryFilter,该属性在 Java SE 9 中位于文件 conf/security/java.security 内,在 Java SE 8 及之前版本中位于 jre/lib/security/java.security 内。
    • 使用类列表指定系统属性 com.sun.CORBA.ORBIorTypeCheckRegistryFilter。如果设置了系统属性,则其值将覆盖在 java.security 配置中定义的对应属性。

    如果未设置 com.sun.CORBA.ORBIorTypeCheckRegistryFilter 属性,则仅对与内置 IDL 存根类对应的 IDL 接口类型的类名集执行类型检查。
    JDK-8160104(未公开)
  • 更改:RSA 公共密钥验证
    在 8u161 中,SunRsaSign 提供程序中的 RSA 实施将拒绝具有不在 PKCS#1 版本 2.2 所定义有效范围内的指数的任意 RSA 公共密钥。此更改将影响 JSSE 连接以及在 JCE 上构建的应用程序。
    JDK-8174756(未公开)
  • 更改:限制低于 1024 位的 Diffie-Hellman 密钥
    低于 1024 位的 Diffie-Hellman 密钥被视为太弱,不能在实践中使用,默认情况下应在 SSL/TLS/DTLS 连接中限制。与此对应,通过将 "DH keySize < 1024" 添加到 java.security 文件的 "jdk.tls.disabledAlgorithms" 安全属性中,默认情况下禁用低于 1024 位的 Diffie-Hellman 密钥。虽然不建议这样做,不过管理员可以更新安全属性 ("jdk.tls.disabledAlgorithms") 并允许较小的密钥大小(例如,通过设置 "DH keySize < 768")。
    JDK-8148108(未公开)
  • 更改:更新了提供程序的默认密钥大小
    此更改可更新 JDK 提供程序,在应用程序未使用密钥大小明确初始化 java.security.KeyPairGeneratorjava.security.AlgorithmParameterGenerator 对象时,使用 2048 位作为 DSA 的默认密钥大小,而非 1024 位。
    如果出现兼容性问题,现有应用程序可以使用算法及其所需的默认密钥大小,设置 JDK-8181048 中引入的系统属性 jdk.security.defaultKeySize
    JDK-8178466(未公开)
Java 到期日期

8u161 的到期日期是 2018 年 4 月 17 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u161)于 2018 年 5 月 17 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版包含对 Oracle Java SE 关键补丁程序更新指导中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u161 Bug 修复页。

» 8u161 发行说明


Java 8 Update 151 (8u151)

发行版要点说明
  • IANA Data 2017b
    JDK 8u151 包含 IANA 时区数据版本 2017b。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 证书更改:删除已撤销的 Swisscom 根证书 "swisscomrootevca2"
    Swisscom 已经撤销并删除了一个 Swisscom 根证书:Swisscom Root EV CA 2
    别名:"swisscomrootevca2 [jdk]"
    DN:CN=Swisscom Root EV CA 2,OU=数字证书服务,O=Swisscom,C=ch

    JDK-8186330(未公开)
  • 新功能:用于控制加密策略的新安全属性
    本发行版引入了一项新功能,使得可以通过新安全属性控制 JDK 使用的 JCE 权限策略文件。在以前的发行版中,JCE 权限文件必须单独下载和安装,才能允许 JDK 使用不受限加密。现在,不再需要下载和安装步骤。要启用不受限加密,用户可以使用新的 crypto.policy 安全属性。如果在 java.security 文件中设置了新安全属性 (crypto.policy),或者在初始化 JCE 框架之前已经使用 Security.setProperty() 调用来动态设置了该安全属性,则将遵循该设置。默认情况下,此属性未定义。如果此属性未定义,并且传统 lib/security 目录中不存在传统的 JCE 权限文件,则默认加密级别将保留为“受限”。要将 JDK 配置为使用不受限加密,请将 crypto.policy 设置为“无限制”值。有关详细信息,请参阅本发行版随附的 java.security 文件中的说明。

    注:在 Solaris 上,建议删除旧 SVR4 包,然后再安装新的 JDK 更新。如果在早于 6u131、7u121、8u111 的 JDK 发行版上完成了基于 SVR4 的升级(不卸载旧包),则您应在 java.security 文件中设置新的 crypto.policy 安全属性。

    由于旧 JCE 权限文件保留在 <java-home>/lib/security 中,这些文件可能不符合最新的安全 JAR 签名标准,这些签名标准已经在 6u131、7u121、8u111 和更高版本中进行更新。如果使用旧文件,可能会出现类似下面这样的异常错误:

    原因:java.lang.SecurityException:权限策略文件未由可信签名者签名!位置:javax.crypto.JceSecurity.loadPolicies(JceSecurity.java:593),javax.crypto.JceSecurity.setupJurisdictionPolicies(JceSecurity.java:524)

    请参见 JDK-8157561
  • 更改:重构现有提供方以引用相同的密钥长度默认值常量
    针对此问题,已经进行了两项重要更改:
    1. 引入了一个新的系统属性,使得用户可以配置 KeyPairGenerator 和 AlgorithmParameterGenerator 的 JDK 提供方实现所使用的默认密钥大小。此属性的名称为 "jdk.security.defaultKeySize",其值为逗号分隔条目的列表。每个条目包含不区分大小写的算法名称和对应的默认密钥大小(以十进制表示),由 ':' 分隔。另外,忽略空格。

    默认情况下,此属性没有值,JDK 提供方将使用自己的默认值。将忽略包含无法识别的算法名称的条目。如果指定的默认密钥大小不是可进行语法分析的十进制整数,也将忽略此条目。

    1. SUN 提供方的 DSA KeyPairGenerator 实现不再实现 java.security.interfaces.DSAKeyPairGenerator。将 SUN 提供方的 DSA KeyPairGenerator 对象转换为 java.security.interfaces.DSAKeyPairGenerator 的应用程序可以设置系统属性 "jdk.security.legacyDSAKeyPairGenerator"。如果此属性的值为 'true',则 SUN 提供方将返回 DSA KeyPairGenerator 对象,该对象可实现 java.security.interfaces.DSAKeyPairGenerator 接口。此传统实现将使用该接口中的 javadoc 指定的相同默认值。
    默认情况下,此属性没有值,SUN 提供方将返回 DSA KeyPairGenerator 对象,该对象不实现前述接口,因此可以确定它自己的提供方特定默认值,该默认值由 java.security.KeyPairGenerator 类或 'jdk.security.defaultKeySize' 系统属性(如果设置)规定。
    JDK-8181048(未公开)
Java 到期日期

8u151 的到期日期是 2018 年 1 月 16 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u151)于 2018 年 2 月 16 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版包含对 Oracle Java SE 关键补丁程序更新指导中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u151 Bug 修复页。

» 8u151 发行说明


Java 8 Update 144 (8u144)

发行版要点说明
  • IANA Data 2017b
    JDK 8u144 包含 IANA 时区数据版本 2017b。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • Bug 修复:对于目录条目,java.util.zip.ZipFile.getEntry() 现在始终返回具有以 / 结尾的条目名称的 ZipEntry 实例
    java.util.zip.ZipEntry API 文档指定“目录条目定义为其名称以 / 结尾的条目”。但是,在之前的 JDK 发行版中,当传入的参数 entryName 不以 / 结尾并且 zip 文件中存在名为 entryName + / 的匹配 zip 目录条目时,对于现有 zip 目录条目,java.util.zip.ZipFile.getEntry(String entryName) 可能返回具有不以 / 结尾的条目名称的 ZipEntry 实例。在此发行版中,对于任何 zip 目录条目,从 java.util.zip.ZipFile.getEntry() 返回的 ZipEntry 实例的名称始终以 / 结尾。
    要还原到以前的行为,请将系统属性 jdk.util.zip.ensureTrailingSlash 设置为 'false'。

    做出此更改是为了修复 JDK 8u141 中引入的回归,该回归在验证已签名 JAR 时会导致某些 WebStart 应用程序无法加载。
    请参见 JDK-8184993
Java 到期日期

8u144 的到期日期为 2017 年 10 月 17 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u144)于 2017 年 11 月 17 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版包含对 Oracle Java SE 关键补丁程序更新指导中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u144 Bug 修复页。

» 8u144 发行说明


Java 8 Update 141 (8u141)

发行版要点说明
  • IANA Data 2017b
    JDK 8u141 包含 IANA 时区数据版本 2017b。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 证书更改:新 Let's Encrypt 证书已添加到根 CA
    已添加一个新根证书:
    ISRG Root X1
    别名:letsencryptisrgx1
    DN:CN=ISRG Root X1,O=Internet Security Research Group,C=US

    JDK-8177539(未公开)
  • JMX 诊断改进
    com.sun.management.HotSpotDiagnostic::dumpHeap 修改了 API,在提供的文件名未以 ".hprof" 后缀结尾时,将引发 IllegalArgumentException。对于现有应用程序,如果未提供以 ".hprof" 扩展名结尾的文件名,则将失败,出现 IllegalArgumentException。在这种情况下,应用程序可以选择处理异常错误,也可以通过将系统属性 "jdk.management.heapdump.allowAnyFileSuffix" 设置为 true 来恢复旧行为。
    JDK-8176055(未公开)
  • wsimport 工具处理 WSDL 文件时执行更严格的安全检查
    更改了 wsimport 工具,不允许在 Web 服务说明中使用 DTD,具体而言:
    • 不允许在文档中使用 DOCTYPE 声明
    • 默认情况下不包括外部一般实体
    • 默认情况下不包括外部参数实体
    • 完全忽略外部 DTD
    要恢复以前的行为,请执行以下操作:
    • 将系统属性 com.sun.xml.internal.ws.disableXmlSecurity 设置为 true
    • 使用 wsimport 工具命令行选项 –disableXmlSecurity
      注:wsimport 中 JDK 7 和 JDK 6 对此选项的支持将在 7 月 CPU 之后的补丁程序发行版中提供
    JDK-8182054(未公开)
  • 定制 HostnameVerifier 启用 SNI 扩展
    在使用定制主机名验证器时,JDK 8 更新的较早发行版并不总是在 TLS ClientHello 阶段中发送服务器名称指示 (SNI) 扩展。此验证器通过 HttpsURLConnection 中的 setHostnameVerifier(HostnameVerifier v) 方法设置。该修复确保现在在 ClientHello 正文中发送服务器名称。
    请参见 JDK-8144566
  • 改进了算法约束条件检查
    由于需要对在弱算法非常容易受到攻击的情况下限制弱算法,在 java.security 文件中配置 jdk.certpath.disabledAlgorithmsjdk.jar.disabledAlgorithms 安全属性时添加了额外的功能。

    jdk.certpath.disabledAlgorithms:对 certpath 属性进行了最大的更改。以前该属性限制为两种约束条件类型;在检查证书、证书链和证书签名时,按名称完全禁用某个算法,或者按密钥大小完全禁用某个算法。这造成了过于绝对的配置,在使用时缺少灵活性。添加了三个新的约束条件,用于在允许和拒绝证书时提供更多的灵活性。

    "jdkCA" 根据 cacerts 文件检查证书链终止情况。对于 "SHA1 jdkCA"。在证书链中检查 SHA1 的使用,但该链必须在要拒绝的 cacerts 密钥库中标记的信任锚定点处终止。在下面的情况下,此功能非常有用:组织具有自己的私有 CA,该 CA 使用 SHA1 信任机制,具有组织信任锚定点,但组织希望阻止由公共 CA 锚定的证书链使用 SHA1。

    "denyAfter" 检查给定日期是否早于当前日期或 PKIXParameter 日期。对于 "SHA1 denyAfter 2018-01-01",在 2018 年之前,可以使用具有 SHA1 的证书,但在该日期之后,将拒绝这样的证书。如果某个组织策略要逐步淘汰有终止日期的算法,可以使用这种方法。对于已签名 JAR 文件,该日期与 TSA 时间戳进行对比。该日期按 GMT 指定。

    "usage" 可以检查所指定算法的指定使用情况。在禁用某个算法的所有使用情况并不可行时,可以使用此项。可以指定三种用法:

    • 在作为客户机执行服务器验证时,"TLSServer" 限制 TLS 服务器证书链中的算法。
    • 在作为服务器执行客户机验证时,"TLSClient" 限制 TLS 客户机证书链中的算法。
    • "SignedJAR" 限制已签名 JAR 文件中证书的算法。使用类型跟在关键字之后,并且可以使用空格分隔符指定多个使用类型。
      例如,"SHA1 usage TLSServer TLSClient" 不允许对 TLSServer 和 TLSClient 操作使用 SHA1 证书,但允许使用 SignedJar

    所有这些约束条件可以使用 "&" 分隔,组合起来约束某个算法。例如,要仅为 TLSServer 操作禁用在标记的信任锚定点处终止的 SHA1 证书链,约束条件将为 "SHA1 jdkCA & usage TLSServer"。

    jdk.jar.disabledAlgorithms:已将一个额外的约束条件添加到此 .jar 属性中,用于限制 JAR 清单算法。

    "denyAfter" 检查已签名 JAR 文件内清单摘要算法上的算法约束条件。约束条件中给定的日期与已签名 JAR 文件中的 TSA 时间戳进行比较。如果没有时间戳,或者时间戳等于或晚于指定日期,则将已签名 JAR 文件视为未签名。如果时间戳早于指定的日期,则 .jar 将作为已签名 JAR 文件进行操作。在签名日期晚于 2018 年 1 月 1 日的 JAR 文件中限制 SHA1 时所用的语法为:"SHA1 denyAfter 2018-01-01"。该语法与 certpath 属性的相同,不过此属性不执行证书检查。
    请参见 JDK-8176536

Java 到期日期

8u141 的到期日期为 2017 年 10 月 17 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u141)于 2017 年 11 月 17 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,JRE 将向用户提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

此发行版包含对 Oracle Java SE 关键补丁程序更新指导中所述安全漏洞的修复。有关此发行版中包含的 Bug 修复的更完整列表,请参阅 JDK 8u141 Bug 修复页。

» 8u141 发行说明


Java 8 Update 131 (8u131)

发行版要点说明
  • IANA Data 2016j
    JDK 8u131 包含 IANA 时区数据版本 2016j。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • Bug 修复:引入新的窗口排序模型
    在 OS X 平台上,AWT 框架使用本机服务来实现窗口之间的父-子关系。这会导致一些负面的视觉效果,在多监视器环境中尤其如此。为去除类似方法的缺点,引入了一个在 JDK 层完全实现的新窗口排序模型。下面列出了它的主要原理:
    • 应当将窗口放在离它最近的父窗口上方。
    • 如果一个窗口有多个子窗口,则所有的子窗口都应当位于同一层上,而且来自活动窗口链的窗口都应当排在其同级窗口上方。
    • 对于处在图标化状态或者正在过渡到图标化状态的窗口不应当执行排序。
    这些规则应用到包含当前聚焦窗口的窗口层次结构中的每个框架或对话框。请参见 JDK-8169589
  • Bug 修复:更正 TLS 握手中的 IllegalArgumentException
    JDK-8173783 修复中的最新问题可能会导致某些 TLS 服务器出现问题。该问题源自 TLS 握手程序代码引发的 IllegalArgumentException:

    java.lang.IllegalArgumentException:系统属性
    jdk.tls.namedGroups(null) 包含不支持的椭圆曲线


    当服务器没有椭圆曲线加密支持来处理椭圆曲线名称扩展字段(如果存在)时,会出现此问题。建议用户升级到此发行版。默认情况下,JDK 7 Update 和 JDK 系列的更高版本会随附 SunEC 安全提供程序,该提供程序提供椭圆曲线加密支持。除非修改了安全提供程序,否则这些发行版应该不受影响。请参见 JDK-8173783
  • jdk.jar.disabledAlgorithms 安全属性中添加了 MD5
    针对验证 MD5 签名的 JAR 文件的方式,此 JDK 发行版引入了新限制。如果签名的 JAR 文件使用 MD5,签名验证操作将忽略签名,并将 JAR 视为未签名状态。在使用已签名 JAR 文件的以下类型的应用程序中,可能会出现此情况:
    • 小应用程序或 Web Start 应用程序
    • 独立应用程序或服务器应用程序,这些应用程序在启用 SecurityManager 的情况下运行,并且已配置有根据 JAR 的代码签署人授予权限的策略文件。

    禁用算法列表是通过 java.security 文件中的安全属性 jdk.jar.disabledAlgorithms 进行控制的。此属性包含用于以加密方式签名的 JAR 文件的禁用算法列表和密钥大小。

    要检查是否已使用弱算法或密钥对 JAR 文件进行签名,可以使用随此 JDK 一起提供的 jarsigner 二进制文件。在使用弱算法或密钥进行签名的 JAR 文件上,运行 "jarsigner -verify" 会输出有关已禁用算法或密钥的详细信息。

    例如,要检查名为 test.jar 的 JAR 文件,请使用以下命令:

    jarsigner -verify test.jar

    如果已使用 MD5withRSA 之类的弱签名算法对本示例中的文件进行签名,则将显示以下输出:

    The jar will be treated as unsigned, because it is signed with a weak algorithm that is now disabled. Re-run jarsigner with the -verbose option for more details.

    使用 verbose 选项可显示更多详细信息:

    jarsigner -verify -verbose test.jar

    此时将显示以下输出:
    
     - Signed by "CN=weak_signer" Digest algorithm: MD5 (weak) Signature algorithm: MD5withRSA (weak), 512-bit key (weak) Timestamped by "CN=strong_tsa" on Mon Sep 26 08:59:39 CST 2016 Timestamp digest algorithm: SHA-256 Timestamp signature algorithm: SHA256withRSA, 2048-bit key 
    要解决该问题,需要使用更强的算法或密钥大小对 JAR 文件重新签名。另外,通过从 jdk.jar.disabledAlgorithms 安全属性中删除相应的弱算法或密钥大小,可以恢复限制;但不建议使用此选项。在对受影响的 JAR 重新签名之前,应从 JAR 文件中删除现有签名。可使用 zip 实用程序执行此操作,如下所示:

    zip -d test.jar 'META-INF/.SF' 'META-INF/.RSA' 'META-INF/*.DSA'

    请定期在 http://java.com/cryptoroadmap 上检查 Oracle JRE 和 JDK 加密路线图,了解计划对已签名 JAR 和其他安全组件进行的限制。JDK-8171121(未公开)
  • 用来控制 HTTP SPNEGO 连接高速缓存的新系统属性。
    引入了一个新的特定于 JDK 实现的系统属性,该属性控制 HTTP SPNEGO(协商/Kerberos)连接的高速缓存。默认情况下,HTTP SPNEGO 连接的高速缓存保持启用状态,因此,如果未明确指定该属性,则行为将不改变。当连接到使用 SPNEGO 来协商验证的 HTTP 服务器时,以及成功连接并验证到服务器时,验证信息将进行高速缓存而且将重用于针对同一个服务器的后续连接。另外,连接到使用 SPNEGO 的 HTTP 服务器通常涉及到使基础连接保持活动状态并将其重用于针对同一个服务器的后续请求。在某些应用程序中,为了针对每个面向服务器的新请求都强制请求新验证,可能需要针对 HTTP SPNEGO(协商/Kerberos)协议禁用所有的高速缓存。

    进行此更改后,我们现在提供了一个用来控制 HTTP SPNEGO 连接的高速缓存策略的新系统属性。如果定义了 jdk.spnego.cache 而且其计算结果为 false,则将针对 HTTP SPNEGO 连接禁用所有的高速缓存。但是,将此系统属性设置为 false,可能会导致意外的负面影响:
    • HTTP SPNEGO 连接的性能可能会受到严重影响,因为对于每个新请求都将需要重新验证,这需要与服务器进行多次通信交换。
    • 对于每个新请求将需要再次获取身份证明,根据透明验证的可用性以及全局验证程序实现,这可能会生成一个弹出窗口,要求用户针对每个新请求提供身份证明。
    JDK-8170814(未公开)
  • 用来控制 HTTP NTLM 连接高速缓存的新系统属性。
    引入了一个新的特定于 JDK 实现的系统属性,该属性控制 HTTP NTLM 连接的高速缓存。默认情况下,HTTP NTLM 连接的高速缓存保持启用状态,因此,如果未明确指定该属性,则行为将不改变。在某些平台上,JDK 中实现的 HTTP NTLM 可以支持透明验证,在这种情况下,系统用户身份证明在系统级别使用。当透明验证不可用或不成功时,JDK 仅支持从全局验证程序获取身份证明。如果成功连接到服务器,则验证信息将进行高速缓存而且将重用于针对同一个服务器的后续连接。另外,连接到 HTTP NTLM 服务器通常涉及到使基础连接保持活动状态并将其重用于针对同一个服务器的后续请求。在某些应用程序中,为了针对每个面向服务器的新请求强制请求新验证,针对 HTTP NTLM 协议禁用所有高速缓存可能是可取的。

    进行此更改后,我们现在提供了一个用来控制 HTTP NTLM 连接的高速缓存策略的新系统属性。如果定义了 jdk.ntlm.cache 而且其计算结果为 false,则将针对 HTTP NTLM 连接禁用所有的高速缓存。但是,将此系统属性设置为 false,可能会导致意外的负面影响:
    • HTTP NTLM 连接的性能可能会受到严重影响,因为对于每个新请求都将需要重新验证,这需要与服务器进行多次通信交换。
    • 对于每个新请求将需要再次获取身份证明,根据透明验证的可用性以及全局验证程序实现,这可能会生成一个弹出窗口,要求用户针对每个新请求提供身份证明。
    JDK-8163520(未公开)
  • 新版本的 VisualVM
    VisualVM 1.3.9 是在 2016 年 10 月 4 日发行的 (http://visualvm.github.io/relnotes.html),它已经集成到 8u131 中。请参见 JDK-8167485
Java 到期日期

8u131 的到期日期为 2017 年 7 月 18 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u131)于 2017 年 8 月 18 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory。有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u131 Bug 修复页。

» 8u131 发行说明


Java 8 Update 121 (8u121)

发行版要点说明
  • IANA Data 2016i
    JDK 8u121 包含 IANA 时区数据版本 2016i。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • Bug 修复:OS X 10.12 Sierra 上使用触摸板滚动文本的速度非常快
    MouseWheelEvent.getWheelRotation() 方法在 Mac OS X 上返回舍入的本机 NSEvent deltaX/Y 事件。最新 macOS Sierra 10.12 生成极小的 NSEvent deltaX/Y 值,因此对这些值进行舍入并计算总和会导致从 MouseWheelEvent.getWheelRotation() 返回极大的值。在 JDK-8166591 修复中会累积 NSEvent deltaX/Y,MouseWheelEvent.getWheelRotation() 方法仅在累积值超过阈值时返回非零值,否则返回零值。这与 MouseWheelEvent.getWheelRotation() 规范吻合:“以整数形式返回鼠标滚轮滚动的‘单击’数。鼠标支持高分辨率滚轮时,可能会出现部分滚动。在这种情况下,该方法返回零,直至累积到一次完整的‘单击’。”如需精确的滚轮滚动值,请改为使用 MouseWheelEvent.getPreciseWheelRotation() 方法。请参见 JDK-8166591
  • 增加 JDK 中 EC 的默认强度
    为了增加 EC 密码的默认强度,已在 JDK 的认证路径处理(通过 jdk.certpath.disabledAlgorithms 安全属性)和 SSL/TLS 连接(通过 jdk.tls.disabledAlgorithms 安全属性)中停用小于 224 位的 EC 密钥。应用程序可以在安全属性中更新此限制并在实际需要时允许更小的密钥大小(例如,"EC keySize < 192")。已从 JDK 的 SSL/TLS 实现中删除小于 256 位的 EC 曲线。新系统属性 jdk.tls.namedGroups 按首选项顺序为 EC 密码套件定义了已启用的指定曲线列表。如果应用程序需要定制默认启用的 EC 曲线或曲线首选项,请相应地更新该系统属性。例如:
    
     jdk.tls.namedGroups="secp256r1, secp384r1, secp521r1" 

    请注意,默认启用或定制的 EC 曲线遵循算法约束。例如,定制 EC 曲线无法重新激活由 Java 安全属性定义的已禁用 EC 密钥。请参见 JDK-8148516
  • 适用于 javadoc 的新 --allow-script-in-comments 选项
    除非指定命令行选项 --allow-script-in-comments,否则 javadoc 工具现在将拒绝 javadoc 文档注释和命令行选项中出现的任何 JavaScript 代码。使用 --allow-script-in-comments 选项时,javadoc 工具将在文档注释和命令行选项中保留 JavaScript 代码。如果找到 JavaScript 代码并且未设置命令行选项,则 javadoc 工具将给出错误。
    JDK-8138725(未公开)
  • 将用于 XML 签名的最短密钥长度增加到 1024
    XML 签名实施的安全验证模式得到了增强,默认情况下限制小于 1024 位的 RSA 和 DSA 密钥,因为这对于数字签名已不够安全。此外,向 java.security 文件添加了名为 jdk.xml.dsig.SecureValidationPolicy 的新安全属性,来控制启用了安全验证模式时实施的不同限制。通过使用 javax.xml.crypto.XMLCryptoContext.setProperty 方法将 xml 签名属性 org.jcp.xml.dsig.secureValidation 设置为 true,或者通过使用 SecurityManager 运行代码,可以启用安全验证模式。如果使用弱 RSA 或 DSA 密钥生成或验证了 XML 签名,则将引发 XMLSignatureException,并显示消息“启用安全验证时禁止使用小于 1024 位的 RSA 密钥”或“启用安全验证时禁止使用小于 1024 位的 DSA 密钥”。
    JDK-8140353(未公开)
  • 限制 DSA 密钥小于 1024 位的证书
    小于 1024 位的 DSA 密钥强度不够,在证书路径构建和验证中应该限制使用。与此对应,在默认情况下,通过将 "DSA keySize < 1024" 添加到 "jdk.certpath.disabledAlgorithms" 安全属性而禁用了小于 1024 位的 DSA 密钥。应用程序可以在安全属性 ("jdk.certpath.disabledAlgorithms") 中更新此限制,在确实需要时允许使用较小的密钥大小(例如,"DSA keySize < 768")。JDK-8139565(未公开)
  • DER 编码语法分析代码增加了更多检查
    DER 编码语法分析代码增加了更多检查,可捕获各种编码错误。此外,如果现在签名中包含长度不确定的结构化代码,则在语法分析期间会导致 IOException。请注意,使用 JDK 默认提供方生成的签名不受此更改的影响。JDK-8168714(未公开)
  • URLClassLoader.newInstance 的其他访问限制
    java.net.URLClassLoader.newInstance 方法创建的类加载程序可用于从指定 URL 列表中加载类。如果调用代码对一个或多个 URL 没有访问权限,并且可以访问的 URL Artifact 不包含所需类,则将引发 ClassNotFoundException 或类似异常错误。以前,在拒绝对 URL 的访问时将引发 SecurityException。如果需要还原到以前的行为,可以通过设置 jdk.net.URLClassPath.disableRestrictedPermissions 系统属性来禁用此更改。JDK-8151934(未公开)
  • logging.properties java.util.logging.FileHandler.maxLocks 中新的可配置属性
    java.util.logging.FileHandler 中添加了新的 "java.util.logging.FileHandler.maxLocks" 可配置属性。这个新的日志记录属性可以在日志记录配置文件中定义,这样可以配置 FileHandler 能够处理的最大并行日志文件锁定数。默认值为 100。在有多个(超过 101 个)独立客户机应用程序同时使用带有 FileHandler 的 JDK 日志记录 API 的高度并发环境中,可能会达到默认限制 100,导致获取 FileHandler 文件锁定失败并引发 IO 异常错误。在这种情况下,可以先使用新的日志记录属性来增加最大锁定数,然后再部署应用程序。如果未覆盖此值,则 maxLocks 的最大值 (100) 保持不变。有关详细信息,请参阅 java.util.logging.LogManagerjava.util.logging.FileHandler API 文档。请参见 JDK-8153955
注释
JNDI 远程类加载的保护更好

默认情况下,通过存储在命名和目录服务中的 JNDI 对象工厂加载的远程类处于禁用状态。要通过 RMI 注册表或 COS 命名服务提供商启用远程类加载,请根据需要将以下系统属性设置为 "true":


 com.sun.jndi.rmi.object.trustURLCodebase com.sun.jndi.cosnaming.object.trustURLCodebase 

JDK-8158997(未公开)

jarsigner -verbose -verify 应输出用于对 jar 进行签名的算法

jarsigner 工具已进行了改进,可显示生成已签名 JAR 文件所使用的算法和密钥的详细信息,还可以指示其中任意项是否被视为较弱。

具体而言,在调用 "jarsigner -verify -verbose filename.jar" 时,将输出一个单独的部分,其中显示已签名 JAR 文件中签名和时间戳(如果存在)的信息,即使由于各种原因将其视为未签名也是如此。如果认为使用的算法或密钥较弱(在安全属性 jdk.jar.disabledAlgorithms 中指定),则会将其标记为“(弱)”。

例如:


 - Signed by "CN=weak_signer" Digest algorithm: MD2 (weak) Signature algorithm: MD2withRSA (weak), 512-bit key (weak) Timestamped by "CN=strong_tsa" on Mon Sep 26 08:59:39 CST 2016 Timestamp digest algorithm: SHA-256 Timestamp signature algorithm: SHA256withRSA, 2048-bit key 

请参见 JDK-8163304

已知问题
javapackager 和 fx:deploy 绑定整个 JDK 而非 JRE

Java Packager for Mac 中已知存在 Bug,可能会随应用程序包绑定整个 JDK,导致包异常大。解决方法是使用绑定程序选项 -Bruntime。例如:-Bruntime=JavaAppletPlugin.plugin,其中 JavaAppletPlugin.plugin 表示所需绑定的 JRE 位于当前目录中。请参见 JDK-8166835

禁用 UAC 的非管理员用户在安装 Java 时将失败

对于禁用了用户访问控制 (UAC) 的非管理员用户,在 Windows 上安装 Java 时将会失败,而不显示警告或提示。安装程序将在 %TEMP% 目录中留下目录 jds<number>.tmp
JDK-8161460(未公开)

新功能
添加了安全属性用于配置 XML 签名安全验证模式

添加了名为 jdk.xml.dsig.secureValidationPolicy 的新安全属性,可用于配置单独的限制,在启用 XML 签名安全验证模式时实施这些限制。java.security 配置文件中此属性的默认值为:


 jdk.xml.dsig.secureValidationPolicy=\ disallowAlg http://www.w3.org/TR/1999/REC-xslt-19991116,\ disallowAlg http://www.w3.org/2001/04/xmldsig-more#rsa-md5,\ disallowAlg http://www.w3.org/2001/04/xmldsig-more#hmac-md5,\ disallowAlg http://www.w3.org/2001/04/xmldsig-more#md5,\ maxTransforms 5,\ maxReferences 30,\ disallowReferenceUriSchemes file http https,\ noDuplicateIds,\ noRetrievalMethodLoops 

有关详细信息,请参阅 java.security 文件中此属性的定义。请参见 JDK-8151893

序列化筛选器配置

序列化筛选引入了新的机制,该机制允许筛选对象序列化数据的传入流,以提升安全性和可靠性。每个 ObjectInputStream 在反序列化期间将一个筛选器(如果已配置)应用到流内容。使用系统属性或配置的安全属性来设置筛选器。"jdk.serialFilter" 模式的值在 JEP 290 序列化筛选和 <JRE>/lib/security/java.security 中介绍。筛选操作记录到 'java.io.serialization' 日志记录程序(如果启用)。请参见 JDK-8155760

RMI 改进的约束条件检查

RMI 注册表和分布式垃圾回收使用 JEP 290 序列化筛选机制来改进服务可靠性。对于预期在各个服务中使用的典型类,RMI 注册表和 DGC 实施内置白名单筛选器。可以使用系统属性或安全属性配置其他筛选模式。"sun.rmi.registry.registryFilter" 和 "sun.rmi.transport.dgcFilter" 属性模式语法在 JEP 290 和 <JRE>/lib/security/java.security 中介绍。JDK-8156802(未公开)

添加机制以允许非默认根 CA 不受算法限制

java.security 文件中,名为 "jdkCA" 的附加约束条件添加到 jdk.certpath.disabledAlgorithms 属性中。仅当指定的算法用于证书链,而该证书链在 lib/security/cacerts 密钥库中的标记信任锚定点处终止时,此约束条件才禁止该算法。如果未设置 jdkCA 约束条件,则将限制使用指定算法的所有链。jdkCA 在 DisabledAlgorithm 表达式中只能使用一次。示例:要将此约束条件应用到 SHA-1 证书,请包括以下内容:SHA1 jdkCA
请参阅 JDK-8140422

Java 到期日期

8u121 的到期日期是 2017 年 4 月 18 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u121)于 2017 年 5 月 18 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory。有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u121 Bug 修复页。

» 8u121 发行说明


Java 8 Update 111 (8u111)

发行版要点说明
  • IANA Data 2016f
    JDK 8u111 包含 IANA 时区数据版本 2016f。有关详细信息,请参阅 JRE 软件中的时区数据版本。请参见 JDK-8159684
  • 证书更改:新 JCE 代码签名根 CA
    为了支持更长的密钥长度和更强的签名算法,已创建 JCE 提供方代码签名根证书颁发机构,并已将其证书添加到 Oracle JDK。从此时间点向前,从此 CA 颁发的新 JCE 提供方代码签名证书将用于对 JCE 提供方进行签名。默认情况下,JCE 提供方代码签名证书的新请求将从此 CA 发出。

    来自当前 JCE 提供方代码签名根的现有证书将继续用于验证。但是,在未来的某个时间,可能会禁用此根 CA。我们建议申请新证书,并对现有提供方 JAR 重新签名。有关 JCE 提供方签名过程的详细信息,请参阅 How to Implement a Provider in the Java Cryptography Architecture 文档。JDK-8141340(未公开)
  • 服务菜单服务
    AWT 菜单组件的生命周期管理在某些平台上会出现问题。此修复可改进菜单与其容器之间的状态同步。JDK-8158993(未公开)
  • 禁止对 HTTPS 隧道执行“基本”验证
    在一些环境中,在执行 HTTPS 代理时某些验证方案可能不是所希望的验证方案。相应地,默认情况下在 Oracle Java 运行时中已停用“基本”验证方案,方法为将 Basic 添加到 jdk.http.auth.tunneling.disabledSchemes 网络属性。现在,在为 HTTPS 设置隧道时,默认情况下需要 Basic 验证的代理将不再成功。如果需要,可以通过从 jdk.http.auth.tunneling.disabledSchemes 网络属性中删除 Basic,或者通过在命令行上将同名的系统属性设置为 ""(空),来重新激活此验证方案。此外,可以使用 jdk.http.auth.tunneling.disabledSchemesjdk.http.auth.proxying.disabledSchemes 网络属性以及同名的系统属性来禁用其他一些验证方案。在为 HTTPS 设置隧道或者执行普通 HTTP 代理时,这些验证方案可能分别处于活动状态。JDK-8160838(未公开)
  • 限制使用弱算法和密钥签名的 JAR
    此 JDK 发行版对如何验证签名的 JAR 文件引入了新限制。如果已签名 JAR 文件使用禁用的算法或小于最小长度的密钥大小,签名验证操作将忽略签名,并将 JAR 文件视为未签名状态。在使用已签名 JAR 文件的以下类型的应用程序中,可能会出现此情况:
    1.小应用程序或 Web Start 应用程序
    2.独立应用程序或服务器应用程序,这些应用程序在启用 SecurityManager 的情况下运行,并且已配置有根据 JAR 的代码签署人授予权限的策略文件。

    禁用算法列表是通过 java.security 文件中的新安全属性 jdk.jar.disabledAlgorithms 进行控制的。此属性包含用于以加密方式签名的 JAR 文件的禁用算法列表和密钥大小。

    以下算法和密钥大小在此发行版中受到限制:
    1. MD2(在摘要或签名算法中)
    2. 小于 1024 位的 RSA 密钥
    注:我们计划在 2017 年 4 月版 CPU 中限制已签名 JAR 中基于 MD5 的签名。

    要检查是否已使用弱算法或密钥对 JAR 文件进行签名,您可以使用随此 JDK 一起提供的 jarsigner 二进制文件。在使用弱算法或密钥签名的 JAR 文件上,运行 jarsigner -verify -J-Djava.security.debug=jar 会输出有关已禁用算法或密钥的详细信息。

    例如,要检查名为 test.jar 的 JAR 文件,请使用以下命令:
    jarsigner -verify -J-Djava.security.debug=jar test.jar

    如果已使用 MD2withRSA 之类的弱签名算法对本示例中的文件进行签名,则将显示以下输出:
    jar: beginEntry META-INF/my_sig.RSA
    jar: processEntry: processing block
    jar: processEntry caught: java.security.SignatureException: Signature check failed. Disabled algorithm used: MD2withRSA
    jar: done with meta!

    更新的 jarsigner 命令将退出,并将下面的警告输出到标准输出中:
    “签名无法解析或无法验证。jar 将被视为未签名。可能已使用当前已禁用的弱算法对 jar 进行了签名。有关详细信息,请在启用调试的情况下重新运行 jarsigner (-J-Djava.security.debug=jar)”

    要解决此问题,将需要使用更强的算法或更大的密钥大小对 JAR 文件重新签名。另外,通过从 jdk.jar.disabledAlgorithms 安全属性中删除相应的弱算法或密钥大小,可以恢复限制;但不建议使用此选项。在对受影响的 JAR 文件重新签名之前,应从 JAR 中删除现有签名。可使用 zip 实用程序执行此操作,如下所示:

    zip -d test.jar 'META-INF/*.SF' 'META-INF/*.RSA' 'META-INF/*.DSA'

    请定期在 http://java.com/cryptoroadmap 上检查 Oracle JRE 和 JDK 加密路线图,了解计划对已签名 JAR 文件和其他安全组件进行的限制。特别是,请注意当前计划是在 2017 年 4 月版 CPU 中限制已签名 JAR 文件中基于 MD5 的签名。

    要测试是否已使用 MD5 对 JAR 进行签名,可将 MD5 添加到 jdk.jar.disabledAlgorithms 安全属性,例如:

    jdk.jar.disabledAlgorithms=MD2, MD5, RSA keySize < 1024

    然后按照上面所述对 JAR 文件运行 jarsigner -verify -J-Djava.security.debug=jar
    JDK-8155973(未公开)
  • 警告消息已添加到部署验证程序对话框
    已将一条警告添加到插件验证对话框中,在使用代理或不使用 SSL/TLS 协议的情况下使用 HTTP 基本验证(身份证明在不加密的情况下发送)时,将会显示该警告:
    “警告:基本验证方案将有效地以明文方式传输身份证明。是否确实要执行此操作?”
    JDK-8161647(未公开)
已知问题
在 Windows 上,一些事件在 JFR 录制中不可用

对于发行版 8u111,以下事件在 Windows 上的 JFR 录制中不可用:

  1. hotspot/jvm/os/processor/cpu_load
  2. os/processor/context_switch_rate

这是由于在带有 JDK-8162419 更改的 8u111 中引入了回归 JDK-8063089 所致。8u111 发行版中无法包含 JDK-8063089 的修复。它将包含在下一个 8u111 BPR 工作版本以及下一个公开发行版中。
JDK-8063089(未公开)

JVM 在 macOS Sierra 10.12 上引发了 NullPointerExceptions

在 macOS Sierra 10.12 上,当小应用程序正在浏览器中运行时,如果用户按功能键(例如 Command、Shift 或 Alt),则可能会显示名为 "内部错误" 的错误框。它还将在 macOS 停靠栏中显示 "exec" 图标。用户可以关闭小应用程序,或者尝试在未按功能键的情况下重新运行小应用程序。请参见 JDK-8165867

Java 到期日期

8u111 的到期日期是 2017 年 1 月 17 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u111)于 2017 年 2 月 17 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory。有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u111 Bug 修复页。

» 8u111 发行说明



Java 8 Update 101 (8u101)

发行版要点说明
  • IANA Data 2016d
    JDK 8u101 包含 IANA 时区数据版本 2016d。有关详细信息,请参阅 JRE 软件中的时区数据版本。请参见 JDK-8151876
  • 证书更改
    新 DTrust 证书已添加到根 CA
    已添加两个新的根证书:
    • D-TRUST Root Class 3 CA 2 2009
      别名:dtrustclass3ca2
      DN:CN=D-TRUST Root Class 3 CA 2 2009,O=D-Trust GmbH,C=DE
    • D-TRUST Root Class 3 CA 2 EV 2009
      别名:dtrustclass3ca2ev
      DN:CN=D-TRUST Root Class 3 CA 2 EV 2009,O=D-Trust GmbH,C=DE
    请参见 JDK-8153080

    新 Iden 证书已添加到根 CA
    已添加三个新的根证书:
    • IdenTrust Public Sector Root CA 1
      别名:identrustpublicca
      DN:CN=IdenTrust Public Sector Root CA 1,O=IdenTrust,C=US
    • IdenTrust Commercial Root CA 1
      别名:identrustcommercial
      DN:CN=IdenTrust Commercial Root CA 1,O=IdenTrust,C=US
    • IdenTrust DST Root CA X3
      别名:identrustdstx3
      DN:CN=DST Root CA X3,O=Digital Signature Trust Co。
    请参见 JDK-8154757

    已删除 Comodo 根 CA
    已从 cacerts 文件中删除 Comodo "UTN - DATACorp SGC" 根 CA 证书。请参见 JDK-8141540

    已删除 Sonera Class1 CA
    已从 cacerts 文件中删除 "Sonera Class1 CA" 根 CA 证书。请参见 JDK-8141276
  • 改进对 javax.rmi.CORBA.ValueHandler 的访问控制
    javax.rmi.CORBA.Util 类提供了可供存根和绑定使用的方法来执行常见操作。它还用作 ValueHandlers 的工厂。javax.rmi.CORBA.ValueHandler 接口提供了服务,用于支持对 GIOP 流读取和写入值类型。这些实用程序的安全意识已通过引入权限 java.io.SerializablePermission("enableCustomValueHanlder") 而得到增强。这用于在 javax.rmi.CORBA.Util 的用户与 javax.rmi.CORBA.ValueHandler API 之间建立信任关系。

    所需的权限为 "enableCustomValueHanlder" SerializablePermission。如果在安装了 SecurityManager 的情况下运行第三方代码,但在调用 Util.createValueHandler() 时没有新权限,则会失败,并出现 AccessControlException。

    在 JDK8u 及以前的发行版中,可以定义系统属性 "jdk.rmi.CORBA.allowCustomValueHandler" 来覆盖此权限检查行为。

    因此,如果已安装 SecurityManager 并且不满足以下两个要求,则需要对显式调用 javax.rmi.CORBA.Util.createValueHandler 的外部应用程序执行配置更改:
    1. SecurityManager 未对 java.io.SerializablePermission("enableCustomValueHanlder") 进行授权。
    2. 当应用程序在 JDK8u 和之前的版本上运行时,系统属性 "jdk.rmi.CORBA.allowCustomValueHandler" 未定义或者已定义为 "false"(不区分大小写)。

    请注意,"enableCustomValueHanlder" 拼写错误将在 2016 年 10 月的发行版中更正。在这些及未来的 JDK 发行版中,"enableCustomValueHandler" 将作为正确的 SerializationPermission 来使用。
    JDK-8079718(未公开)
  • 在 jarsigner 中增加了指定时间戳散列算法的支持
    jarsigner 增加了新的 -tsadigestalg 选项,可用于指定消息摘要算法,该算法用于生成要发送到 TSA 服务器的消息印记。在较早的 JDK 发行版中,使用的消息摘要算法是 SHA-1。如果未指定此新选项,则将在 JDK 7 Update 和 JDK 产品系列的更高版本中使用 SHA-256。在 JDK 6 Update 中,仍将 SHA-1 保留为默认值,但会在标准输出流中输出警告。请参见 JDK-8038837
  • MSCAPI 密钥库可以处理同名证书
    Java SE 密钥库不允许使用具有相同别名的证书。但是,在 Windows 上,允许存储在一个密钥库中的多个证书具有不唯一的友好名称。利用 JDK-6483657 的修复,可以通过 Java API 以手工方式使可见别名变得唯一,从而对此类命名不唯一的证书执行操作。请注意,此修复未启用通过 Java API 创建同名证书的功能。它只允许您处理由第三方工具添加到密钥库的同名证书。仍然建议您在设计时不要使用同名的多个证书。特别是,Java 文档中将不删除以下说明:
    “为避免问题,建议不要在密钥库中使用只有大小写不同的别名。”
    请参见 JDK-6483657
  • 部署工具包 API 方法不再安装 JRE
    对于来自 deployJava.js 的部署工具包 API installLatestJRE()installJRE(requestedVersion) 方法,以及来自 dtjava.jsinstall() 方法,不再安装 JRE。如果用户的 Java 版本低于安全基线,则会将用户重定向到 java.com 以获取更新后的 JRE。JDK-8148310(未公开)
  • 与 ProtectionDomain 对象结合时,DomainCombiner 不再咨询静态 ProtectionDomain 对象的运行时策略
    通过此修复,使用权限集不足的静态 ProtectionDomain 对象(使用双参数构造器创建)的应用程序现在会遇到 AccessControlException。它们应使用其权限集可通过当前策略扩展的动态对象(使用四参数构造器)来替换静态 ProtectionDomain 对象,或者构造具有所有必需权限的静态 ProtectionDomain 对象。JDK-8147771(未公开)
已知问题
在使用静态类 ID 时,Internet Explorer (IE) 无法识别 JRE 8u101

使用 JRE 8u101 时,如果使用静态类 ID 来启动小应用程序或 Web Start 应用程序,则用户会看到意外的对话框,说明应该使用最新的 JRE 或取消启动,即使用户已安装并正在使用最新的 JRE (JRE 8u101) 也是如此。这种特殊情况仅在 Windows 和 IE 中发生。

根据 http://www.oracle.com/technetwork/java/javase/family-clsid-140615.html,我们建议不为 JRE 版本选择使用静态类 ID(自 2005 年 12 月 JDK 5u6 起)。

要解决此问题,用户可以执行以下两种操作之一:

  • 使用最新版本 (8u101) 启动并忽略警告。
  • 安装 JRE 8u102 而非 JRE 8u101 以避免出现此问题。

要解决此问题,开发人员可以执行以下两种操作之一:

  • 使用动态类 ID 而非静态类 ID。
  • 在使用 HTML 小应用程序时或者在将 JNLP 描述符用于 JNLP 时,使用 java_version。

JDK-8147457(未公开)
 

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory。有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u101 Bug 修复页。

Java 到期日期

8u101 的到期日期为 2016 年 10 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u101)于 2016 年 11 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

» 8u101 发行说明


Java 8 Update 91 (8u91)

发行版要点说明
  • IANA Data 2016a
    JDK 8u91 包含 IANA 时区数据版本 2016a。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • Bug 修复:小应用程序启动时间衰退已修复
    JDK-8080977 针对小应用程序启动引入了延迟。此延迟仅在 IE 上出现且持续约 20 秒。JDK-8136759 删除了此延迟。请参见 JDK-8136759
  • Bug 修复:现在,生成 DSA 签名时需要进行密钥强度检查
    对于签名生成,如果摘要算法的安全强度弱于签名时所用密钥的安全强度(例如,使用(2048,256)位 DSA 密钥的 SHA1withDSA 签名),则操作将失败,出现错误消息:“SHA1 摘要算法的安全强度对于此密钥大小不足。”JDK-8138593(未公开)
  • Bug 修复:Firefox 42 实时连接问题
    因为这可能导致浏览器挂起,在从 plugin-container.exe 启动 Java 插件(Firefox 42 的默认行为)并且小应用程序状态不是就绪 (2) 时,我们不处理 JavaScript-to-Java 调用。如果小应用程序未就绪(状态不是 2),则我们不执行实际的 Java 方法,仅返回空值。

    如果从 plugin-container.exe 启动插件,则不使用可能需要超过 11 秒时间(dom.ipc.plugins.hangUITimeoutSecs 的默认值)来完成的 JavaScript-To-Java 调用,或者在 JavaScript-To-Java 调用期间显示模态对话框。在这种情况下,必须阻止主浏览器线程,这可能会导致浏览器挂起,插件终止。

    Firefox 42 的解决方法:用户可以设置 dom.ipc.plugins.enabled=false。此解决方法的副作用是会更改所有插件的设置。JDK-8144079(未公开)
  • Bug 修复:JMX RMI JRMP 服务器的新属性指定在反序列化服务器身份证明时使用的类名列表
    已经为环境定义新的 Java 属性以允许 JMX RMI JRMP 服务器指定类名列表。这些名称对应于服务器在反序列化身份证明时所需的类名的集合。例如,如果预期身份证明为
    
     List<string>
    则括号中将包含所有预期采用字符串列表串行格式的具体类。

    默认情况下,此属性仅由默认代理使用,具有以下特点:
    
     { "[Ljava.lang.String;", "java.lang.String" } 
    反序列化身份证明时仅接受字符串数组和字符串。属性名为:
    
    "jmx.remote.rmi.server.credential.types" 
    以下是用户使用指定的身份证明类名启动服务器的示例:
    
     Map<string, object=""> env = new HashMap<>(1); env.put ( "jmx.remote.rmi.server.credential.types", new String[]{ String[].class.getName(), String.class.getName() } ); JMXConnectorServer server = JMXConnectorServerFactory.newJMXConnectorServer(url, env, mbeanServer); 
    新功能应该通过直接指定以下内容来使用:
    "jmx.remote.rmi.server.credential.types"

    JDK-8144430(未公开)
  • Bug 修复:在 JSSE 提供程序中禁用 MD5withRSA 签名算法
    现在认为 MD5withRSA 签名算法不安全,不应再使用。相应地,默认情况下,在 Oracle JSSE 实现中通过将 "MD5withRSA" 添加到 "jdk.tls.disabledAlgorithms" 安全属性来停用 MD5withRSA。现在,默认情况下不再接受使用 MD5withRSA 算法签名的 TLS 握手消息和 X.509 证书。此更改扩展以前基于 MD5 的证书限制 ("jdk.certpath.disabledAlgorithms"),以在其中另外包括 TLS 版本 1.2 中的握手消息。如果需要,可以通过从 "jdk.tls.disabledAlgorithms" 安全属性中删除 "MD5withRSA" 来重新激活此算法。JDK-8144773(未公开)
  • Bug 修复:新证书已添加到根 CA
    已添加八个新的根证书:
    • QuoVadis Root CA 1 G3
      别名:quovadisrootca1g3
      DN:CN=QuoVadis Root CA 1 G3,O=QuoVadis Limited,C=BM
    • QuoVadis Root CA 2 G3
      别名:quovadisrootca2g3
      DN:CN=QuoVadis Root CA 2 G3
    • QuoVadis Root CA 3 G3
      别名:quovadisrootca3g3
      DN:CN=QuoVadis Root CA 3 G3,O=QuoVadis Limited,C=BM
    • DigiCert Assured ID Root G2
      别名:digicertassuredidg2
      DN:CN=DigiCert Assured ID Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US
    • DigiCert Assured ID Root G3
      别名:digicertassuredidg3
      DN:CN=DigiCert Assured ID Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US
    • DigiCert Global Root G2
      别名:digicertglobalrootg2
      DN:CN=DigiCert Global Root G2,OU=www.digicert.com,O=DigiCert Inc,C=US
    • DigiCert Global Root G3
      别名:digicertglobalrootg3
      DN:CN=DigiCert Global Root G3,OU=www.digicert.com,O=DigiCert Inc,C=US
    • DigiCert Trusted Root G4
      别名:digicerttrustedrootg4
      DN:CN=DigiCert Trusted Root G4,OU=www.digicert.com,O=DigiCert Inc,C=US
    请参阅 JDK-8145954JDK-8145955
注释

删除静态 JRE
对于在版本 8u91 之前发行的 Windows 版 Java 安装程序,默认情况下不删除静态安装的 JRE。要删除静态安装的 JRE,用户必须在 Java 安装程序的用户界面中手动选择这些 JRE。现在,在 Java 发行版 8u91 和更高版本中,静态安装的 JRE 在低于安全基线时将被自动删除。有关静态安装的详细信息,请参阅 Java 运行时环境配置

Java 到期日期

8u91 的到期日期为 2016 年 7 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u91)于 2016 年 8 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory。有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u91 Bug 修复页。

» 8u91 发行说明


Java 8 Update 77 (8u77)

发行版要点说明
Java 到期日期

8u77 的到期日期是 2016 年 4 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u77)于 2016 年 5 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

注释

此安全预警 (8u77) 基于早期 8u74 PSU 发行版。所有使用早期 JDK 8 发行版的用户都应更新到此发行版。有关关键补丁程序更新和补丁程序集更新之间的差异的详细信息,请访问 Java CPU 和 PSU 发行版介绍

8u77 的演示、示例和文档包不受 CVE-2016-0636 安全预警的影响,因此在发布四月的关键补丁程序更新之前,8u73 版本的演示、示例和文档包即为最新的版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory

» 8u77 发行说明


Java 8 Update 73 (8u73)

发行版要点说明
Java 到期日期

8u73 的到期日期是 2016 年 4 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u73)于 2016 年 5 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

注释

Oracle 强烈建议下载了受影响的版本并计划在以后安装这些下载版本的 Java 用户放弃这些旧下载。安装了 Java SE 6、7 或 8 的 2016 年 1 月份关键补丁程序更新版本的 Java 用户无需采取行动。未安装 Java SE 6、7 或 8 的 2016 年 1 月份关键补丁程序更新版本的 Java 用户应从 CVE-2016-0603 的安全预警升级到 Java SE 6、7 或 8 发行版。

8u73 的演示、示例和文档包不受 CVE-2016-0603 安全预警的影响,因此在发布四月的关键补丁程序更新之前,8u71 版本的演示、示例和文档包会保持最新的版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory。请注意,8u73 不包含在 8u72 中找到的 PSU 工作版本。需要 8u72 中包含的附加 Bug 修复的客户应升级到 8u74 而不是 8u73。

» 8u73 发行说明


Java 8 Update 71 (8u71)

发行版要点说明
  • IANA Data 2015g
    JDK 8u71 包含 IANA 时区数据版本 2015g。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • Bug 修复:以 root 身份运行 jps 时并不会显示所有信息
    在应用 JDK-8050807 修复(在 8u31、7u75 和 6u91 中修复)后,以 root 身份运行 jps 时并不会显示由其他用户在某些系统上启动的 Java 进程中的所有信息。此问题目前已修复。请参见 JDK-8075773
  • Bug 修复:安装程序对 ESC 配置显示为已过期
    对于在 Windows Server 2008 R2 上运行 Internet Explorer 增强安全配置 (ESC) 的用户,在交互模式下安装 Java 时可能会遇到问题。此问题已在 8u71 发行版中得到解决。在交互模式下执行的安装程序对 ESC 配置不会再显示为已过期。请参见 JDK-8140197
  • Bug 修复:使用 AES 加密的 PBE 算法中的问题已得到更正
    已更正使用 256 位 AES 密码的 PBE 错误,这样派生的密钥会有所不同,并且不等于以前从同一口令派生的密钥。JDK-8138589(未公开)。
  • Bug 修复:为 XML 最大实体大小增加了默认限制
    已为最大实体大小增加了默认限制。有关 XML 处理限制的详细信息,请参阅 Java 教程中的处理限制。JDK-8133962(未公开)
  • Bug 修复:企业 MSI 开关 'REMOVEOLDERJRES' 文档中的问题已得到更正
    企业 MSI 文档列出了配置选项。以前缺少用来卸载旧 JRE 的 REMOVEOLDERJRES 选项。已添加此选项,并提供以下说明:
    如果设置为 1,则删除系统上安装的较旧发行版的 JRE。
    默认值:0 不删除任何旧 JRE
    JDK-8081237(未公开)
Java 到期日期

8u71 的到期日期是 2016 年 4 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u71)于 2016 年 5 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u71 Bug 修复页。

» 8u71 发行说明


Java 8 Update 66 (8u66)

发行版要点说明

8u66 工作版本 18 解决了有关 Firefox 的一个问题。

  • Bug 修复:从错误的线程调用 _releaseObject
    近期对 Firefox 的一项更改导致从主线程之外的其他线程调用 _releaseObject。这可能会导致争用情况,从而可能无意中使浏览器崩溃。在 8u66 的工作版本 18 中已经解决了这个问题。有关详细信息,请参见Bugs@Mozilla 1221448。请参见 JDK-8133523
安装 Java 之后,Java 插件在 Firefox 中不工作

在尝试运行 Java 插件时 Firefox 42 可能会崩溃。常见问题中列出了解决方法选项。请参阅 JDK-8142908(未公开)。

Java 到期日期

8u66 的到期日期是 2016 年 1 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u66)于 2016 年 2 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u66 Bug 修复页。

» 8u66 发行说明


Java 8 Update 65 (8u65)

发行版要点说明
  • IANA Data 2015f
    JDK 8u65 包含 IANA 时区数据版本 2015f。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 支持 ISO 4217“当前基金代码”表 (A.2)
    此增强功能增加了对 ISO 4217 表 A.2 基金代码的支持。以前 JDK 仅支持表 A.1 中列出的货币。请参见 JDK-8074350
  • Bug 修复: [mac osx] Mac 10.11 上安装的 JRE AU 客户机无法更新到 NEXTVER
    8u65 发行版中引入了新的安装程序以将 OS X 用户更新到最新版本。安装程序同时适用于计划的更新和手动更新,并且在 java.com 和 OTN 上提供了软件包。用户在遇到新安装程序的兼容性问题时,可手动下载和安装 My Oracle Support 上提供的 ".pkg" 安装程序。
  • Bug 修复:Hotspot 应使用 PICL 接口获取 SPARC 上的高速缓存行大小
    目前在 Solaris/SPARC 上需要使用 libpicl 库来确定高速缓存行大小。如果库不存在或者 PICL 服务不可用,JVM 将显示一条警告,并且将关闭利用 BIS(块初始化存储)指令的编译器优化。请参见 JDK-8056124
  • Bug 修复:dns_lookup_realm 默认情况下应为 false
    Kerberos krb5.conf 文件中的 dns_lookup_realm 设置默认情况下为 false。请参见 JDK-8080637
  • Bug 修复:调用 signal() 期间预加载 libjsig.dylib 时会导致死锁
    应用程序需要预加载 libjsig 库才能启用信号链接。以前在 OS X 上,预加载 libjsig.dylib 后,从本机代码对 signal() 进行的任何调用都会导致死锁。此问题已得到更正。请参见 JDK-8072147
  • Bug 修复:更好的组动态
    在 OpenJDK SSL/TLS/DTLS 实施(SunJSSE 提供程序)中,默认情况下会使用安全素数 Diffie-Hellman 组。用户可通过安全属性 jdk.tls.server.defaultDHEParameters 定制 Diffie-Hellman 组。
  • Bug 修复:使用 Instrumentation.redefineClasses 重新定义类时 VM 崩溃
    使用 Instrumentation.redefineClasses() 重新定义类时,JVM 会崩溃。此崩溃可能是由 SystemDictionary::resolve_or_null 分段故障或内部错误(显示消息“标记与解析错误表不匹配”)所致。此问题目前已修复。请参见 JDK-8076110
注释

当在 OSX 10.11 El Capitan 上运行时,如果启用 SIP,则从命令行运行 Java 或双击 JAR 文件时,可能会从环境中删除一些用于调试应用程序的特定环境变量,例如 DYLD_LIBRARY_PATH。在生产环境中应用程序不应依赖于这些变量,这些变量仅用于在开发期间进行调试。

MD5 不能用于需要阻止冲突的数字签名。为了防止在执行 X.509 证书操作时将 MD5 用作数字签名算法,我们将 MD5 添加到 jdk.certpath.disabledAlgorithms 安全属性。对于仍在使用 MD5 签名证书的应用程序,请尽快升级弱证书。

已知问题

[macosx] 赞助商产品屏幕可访问性 (a11y) 问题
用户在使用键盘访问 Java 安装程序中的用户界面时,将无法在软件加载项产品屏幕中访问超链接和复选框。作为在用户界面中设置与加载项软件相关的首选项的一种解决方法,用户可以通过在 Java 控制面板中禁用此类产品或通过命令行传递 SPONSORS=0 来禁用这些产品。有关详细信息,请参阅安装不带赞助商产品的 Java 的常见问题。请参阅 JDK-8061886(未公开)。

Java 到期日期

8u65 的到期日期是 2016 年 1 月 19 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u65)于 2016 年 2 月 19 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u65 Bug 修复页。

» 8u65 发行说明


Java 8 Update 60 (8u60)

发行版要点说明
  • 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 上的方法 monitorEntermonitorExittryMonitorEnter 在 JDK 8u60 中被标记为已过时,将在以后的发行版中删除。这些方法不在 JDK 自身内部使用,也极少在 JDK 之外使用。请参见 8069302
  • Bug 修复:使用 SA 从核心文件提取 JFR 记录
    DumpJFR 是基于可服务性代理的工具,可用于从核心文件和实时 Hotspot 进程提取 Java 飞行记录器 (Java Flight Recorder, JFR) 数据。可以通过以下方法使用 DumpJFR:
    • 将 DumpJFR 附加到实时进程:

      The embedded asset does not exist:
      Asset Type: jWidget_C
      Asset Id: 1371164883097
      PAGENAME: JCOM/jWidget_C/Raw_HTML/Display

       
    • 将 DumpJFR 附加到核心文件:

      The embedded asset does not exist:
      Asset Type: jWidget_C
      Asset Id: 1371164883117
      PAGENAME: JCOM/jWidget_C/Raw_HTML/Display

       
    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.Listjava.util.Collectionjava.util.Queuejava.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 如下所示:
The embedded asset does not exist:
Asset Type: jWidget_C
Asset Id: 1385352043373
PAGENAME: JCOM/jWidget_C/Raw_HTML/Display

Java 到期日期

8u60 的到期日期为 2015 年 10 月 20 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u60)于 2015 年 11 月 20 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u60 Bug 修复页。

» 8u60 发行说明


Java 8 Update 51 (8u51)

发行版要点说明
  • IANA Data 2015d
    JDK 8u51 包含 IANA 时区数据版本 2015d。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • Bug 修复:将新的 Comodo 根证书添加到根 CA
    已为 Commodo 添加四个新的根证书:
    1. COMODO ECC 证书颁发机构
      别名:comodoeccca
      DN:CN=COMODO ECC Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
    2. COMODO RSA 证书颁发机构
      别名:comodorsaca
      DN:CN=COMODO RSA Certification Authority,O=COMODO CA Limited,L=Salford,ST=Greater Manchester,C=GB
    3. USERTrust ECC 证书颁发机构
      别名:usertrusteccca
      DN:CN=USERTrust ECC Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US
    4. USERTrust RSA 证书颁发机构
      别名:usertrustrsaca
      DN:CN=USERTrust RSA Certification Authority,O=The USERTRUST Network,L=Jersey City,ST=New Jersey,C=US
    请参阅 JDK-8077997(未公开)。
  • Bug 修复:将新的 GlobalSign 根证书添加到根 CA
    已为 GlobalSign 添加两个根证书:
    1. GlobalSign ECC Root CA - R4
      别名:globalsigneccrootcar4
      DN:CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R4
    2. GlobalSign ECC Root CA - R5
      别名:globalsigneccrootcar5
      DN:CN=GlobalSign,O=GlobalSign,OU=GlobalSign ECC Root CA - R5
    请参阅 JDK-8077995(未公开)。
  • Bug 修复:将 Actalis 添加到根 CA
    添加了一个新的根证书:
    Actalis 验证根 CA
    别名:actalisauthenticationrootca
    DN:CN=Actalis Authentication Root CA,O=Actalis S.p.A./03358520967,L=Milan,C=IT

    请参见 JDK-8077903(未公开)。
  • Bug 修复:添加新的 Entrust ECC 根证书
    添加了一个新的根证书:
    Entrust 根证书颁发机构 - EC1
    别名:entrustrootcaec1
    DN:CN=Entrust Root Certification Authority - EC1,OU="(c) 2012 Entrust, Inc. - for authorized use only",OU=See www.entrust.net/legal-terms,O="Entrust, Inc.",C=US

    请参见 JDK-8073286(未公开)。
  • Bug 修复:删除旧的 Valicert 1 和 2 类策略根证书
    删除了两个包含 1024 位密钥的根证书:
    1. ValiCert 1 类策略验证权威机构
      别名:secomvalicertclass1ca
      DN:EMAILADDRESS=info@valicert.com,CN=http://www.valicert.com/,OU=ValiCert Class 1 Policy Validation Authority,O="ValiCert, Inc.",L=ValiCert Validation Network
    2. ValiCert 2 类策略验证权威机构
      别名:valicertclass2ca
      DN:EMAILADDRESS=info@valicert.com,CN=http://www.valicert.com/,OU=ValiCert Class 2 Policy Validation Authority,O="ValiCert, Inc.",L=ValiCert Validation Network
    请参阅 JDK-8077886(未公开)。
  • Bug 修复:删除旧的 Thawte 根证书
    删除了两个包含 1024 位密钥的根证书:
    1. Thawte 服务器 CA
      别名:thawteserverca
      DN:EMAILADDRESS=server-certs@thawte.com,CN=Thawte Server CA,OU=Certification Services Division,O=Thawte Consulting cc,L=Cape Town,ST=Western Cape,C=ZA
    2. Thawte 个人免费邮件 CA
      别名:thawtepersonalfreemailca
      DN:EMAILADDRESS=personal-freemail@thawte.com,CN=Thawte Personal Freemail CA,OU=Certification Services Division,O=Thawte Consulting,L=Cape Town,ST=Western Cape,C=ZA
    请参阅 JDK-8074423(未公开)。
  • Bug 修复:删除更多旧的 Verisign、Equifax 和 Thawte 根证书
    删除了五个包含 1024 位密钥的根证书:
    1. Verisign 3 类公共主证书颁发机构 - G2
      别名:verisignclass3g2ca
      DN:OU=VeriSign Trust Network,OU="(c) 1998 VeriSign, Inc. - For authorized use only",OU=Class 3 Public Primary Certification Authority - G2,O="VeriSign, Inc.",C=US
    2. Thawte 高级服务器 CA
      别名:thawtepremiumserverca
      DN:EMAILADDRESS=premium-server@thawte.com,CN=Thawte Premium Server CA,OU=Certification Services Division,O=Thawte Consulting cc,L=Cape Town,ST=Western Cape,C=ZA
    3. Equifax Secure 证书颁发机构
      别名:equifaxsecureca
      DN:OU=Equifax Secure Certificate Authority,O=Equifax,C=US
    4. Equifax Secure 电子商务 CA-1
      别名:equifaxsecureebusinessca1
      DN:CN=Equifax Secure eBusiness CA-1,O=Equifax Secure Inc.,C=US
    5. Equifax Secure 全球电子商务 CA-1
      别名:equifaxsecureglobalebusinessca1
      DN:CN=Equifax Secure Global eBusiness CA-1,O=Equifax Secure Inc.,C=US
    请参阅 JDK-8076202(未公开)。
  • Bug 修复:从 cacerts 中删除 TrustCenter CA 根证书
    删除了三个根证书:
    1. TC TrustCenter 通用 CA I
      别名:trustcenteruniversalcai
      DN:CN=TC TrustCenter Universal CA I,OU=TC TrustCenter Universal CA,O=TC TrustCenter GmbH,C=DE
    2. TC TrustCenter 2 类 CA II
      别名:trustcenterclass2caii
      DN:CN=TC TrustCenter Class 2 CA II,OU=TC TrustCenter Class 2 CA,O=TC TrustCenter GmbH,C=DE
    3. TC TrustCenter 4 类 CA II
      别名:trustcenterclass4caii
      DN:CN=TC TrustCenter Class 4 CA II,OU=TC TrustCenter Class 4 CA,O=TC TrustCenter GmbH,C=DE
    请参阅 JDK-8072958(未公开)。
  • Bug 修复:SunJSSE 提供方中的 RC4 已过时
    RC4 现在已被视为弱密码。除非在客户机请求的密码套件中没有其他更强的密码可用,否则服务器不应选择 RC4。增加了新的安全属性 jdk.tls.legacyAlgorithms 来定义 Oracle JSSE 实现中的传统算法。RC4 相关算法已添加到传统算法列表中。请参阅 JDK-8074006(未公开)。
  • Bug 修复:禁止使用 RC4 密码套件
    RC4 现在已被视为弱密码。在 Oracle JSSE 实现中,RC4 密码套件已从客户机和服务器的默认启用密码套件列表中删除。这些密码套件仍可以通过 SSLEngine.setEnabledCipherSuites()SSLSocket.setEnabledCipherSuites() 方法启用。请参阅 JDK-8077109(未公开)。
  • Bug 修复:改进的认证检查
    在进行此修复后,默认情况下,JSSE 端点标识在 JDK 不会对 IP 地址执行反向名称查找。如果应用程序确实需要在 SSL/TLS 连接中对原始 IP 地址执行反向名称查找,并且遇到端点标识兼容性问题,则可以使用系统属性 "jdk.tls.trustNameService" 来切换到反向名称查找。请注意,如果名称服务不可信任,启用反向名称查找可能会遭致 MITM 攻击。请参阅 JDK-8067695(未公开)。
Java 到期日期

8u51 的到期日期为 2015 年 10 月 20 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u51)于 2015 年 11 月 20 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u51 Bug 修复页。

» 8u51 发行说明


Java 8 Update 45 (8u45)

发行版要点说明
  • IANA Data 2015a
    JDK 8u45 包含 IANA 时区数据版本 2015a。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • Bug 修复:改进 jar 文件处理。从 JDK 8u45 发行版开始,在新建 zip 及 jar 文件和/或从这些文件提取时,jar 工具不再允许在 zip 条目文件名中使用前导斜杠 "/" 和 ".."(两个点)路径组成部分。如果需要,应明确地使用新命令行选项 "-P" 来保留两个点和/或绝对路径组成部分。请参见 8064601(未公开)。
  • Bug 修复:带有嵌套“资源”部分的 jnlp 应用程序在 jre8u40 中加载时会失败,出现 NPE。如果 jnlp 应用程序在 <java> 标记中带有嵌套 标记,则会引发 NPE。该问题现在已修复。 标记只应在实际使用了 <java> 时使用。请参见 8072631(未公开)。
Java 到期日期

8u45 的到期日期为 2015 年 7 月 14 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u45)于 2015 年 8 月 14 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u45 Bug 修复页。

» 8u45 发行说明


Java 8 Update 40 (8u40)

发行版要点说明
  • IANA Data 2014j
    JDK 8u40 包含 IANA 时区数据版本 2014j。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • Bug 修复:JDI、JDWP 和 JDB 中的默认静态接口方法。从 JDK 8 开始,能够通过接口使用可直接执行的静态默认方法。这些方法不能通过 JDWP 或 JDI 执行,因此不能正确地调试。有关详细信息,请参阅 JDK 8 Compatibility Guide。请参见 8042123
  • Bug 修复:可以从适用于 32 位 JRE 的控制面板中启用 Java Access Bridge。以前在卸载 64 位 JRE 时,即使系统上仍然存在 32 位 JRE,“启用 Java Access Bridge”复选框仍然会从 Java 控制面板中删除。从 JDK 8u40 发行版开始,如果存在 32 位 JRE,则在控制面板 -> 轻松访问 -> 轻松访问中心 -> 使用不带显示器的计算机中,会保留“启用 Java Access Bridge”复选框。因此,用户可以通过控制面板启用 Java Access Bridge,请参阅 8030124
  • Bug 修复:在 Mac OS X 上对 JavaFX 媒体堆栈运用现代技术。向 JavaFX 媒体添加了一个基于 AVFoundation 的播放器平台。基于旧 QTKit 的平台现在可从 Mac 应用程序商店兼容平台中删除。请参见 8043697(未公开)
  • Bug 修复:缺少 DOM API。在 JDK 8u40 发行版中,无意中删除了旧插件 DOM API。如果某个小应用程序需要使用 com.sun.java.browser.dom.DOMService 与浏览器通信,则用户可能需要更新其小应用程序以便使用 netscape.javascript.JSObject,或者继续使用 JDK 8 Update 31。此问题已在工作版本 26 中解决,新的 8u40 安装程序已发布。如果遇到此问题,请下载并运行更新后的 JDK 8u40 安装程序。请参见 8074564
  • Bug 修复:Mac 10.10:使用启动屏幕运行的应用程序具有焦点问题。通过 webstart 或独立应用程序启动的应用程序也使用启动屏幕,无法获得键盘焦点。解决方法:使用 -Xnosplash 选项启动 javaws。此问题已在工作版本 27 中解决,新的 8u40 安装程序已发布。如果遇到此问题,请下载并运行更新后的 JDK 8u40 安装程序。请参见 8074668
  • Java 打包程序工具增强功能
    JDK 8u40 发行版包含针对 Java 打包程序的以下增强功能:
  • 过时的 API
    授权标准覆盖机制和扩展机制已过时,可能会从未来的发行版中删除。没有运行时更改。对于使用“授权标准覆盖”或“扩展”机制的现有应用程序,建议不要再使用这两个机制。要帮助标识使用这两个机制的任何现有应用程序,可使用 -XX:+CheckEndorsedAndExtDirs 命令行选项。如果下列条件中有任何一个成立,此选项都将失败:
    • -Djava.endorsed.dirs-Djava.ext.dirs 系统属性已设置为变更默认位置;或者
    • ${java.home}/lib/endorsed 目录存在;或者
    • ${java.home}/lib/ext 包含任何 JAR 文件(不包括 JDK 传送的 JAR 文件),或者
    • 任何平台特定的系统范围扩展目录包含任何 JAR 文件。
    JDK 8u40 及更高发行版中支持 -XX:+CheckEndorsedAndExtDirs 命令行选项。
  • JJS 工具页差异
    JJS 帮助页的日文版本不同于英文版本。一些不受支持的选项已经从 jjs 工具页的英文版中删除。以后将更新日文版本的文档。请参见 8062100(未公开)。对于其他 JJS 工具页更改,请参阅 JDK 8 中的工具增强功能
  • G1HeapWastePercent 和 G1MixedGCLiveThresholdPercent 的默认值更改
    G1HeapWastePercent 的默认值已经从 10 更改为 5,以减少对完整 GC 的需求。出于相同的原因,G1MixedGCLiveThresholdPercent 的默认值已经从 65 更改为 85。
  • 新的 Java 类访问筛选接口
    jdk.nashorn.api.scripting.ClassFilter 接口可用于限制 Nashorn 脚本引擎所运行脚本对指定 Java 类的访问。有关详细信息,请参阅 Nashorn User's Guide 中的 Restricting Script Access to Specified Java Classes 和 8043717(未公开)。
  • 第三方 JCE 提供方存在的问题
    针对 JDK-8023069(在 JDK 8u20 中)的修复中更新了 SunJSSE 和 SunJCE 提供方,包括一些内部接口。一些第三方 JCE 提供方(例如 RSA JSAFE)使用的是一些 sun.* 内部接口,因此对更新后的 SunJSSE 提供方不起作用。此类提供方将需要进行更新,以便用于更新后的 SunJSSE 提供方。如果您受到此问题的影响,请与您的 JCE 供应商联系,要求提供更新。请参见 8058731
  • Solaris Crypto Framework 已重新启用加密
    如果您使用的是 Solaris 10,它已进行更改以重新启用通过 Solaris Crypto Framework 进行的 MD5、SHA1 和 SHA2 操作。如果您的 JDK 8u40 出现 CloneNotSupportedException 或 PKCS11 CKR_SAVED_STATE_INVALID 错误消息,您应验证并应用下面的补丁程序或其较新的版本:
    • 有关 SPARC 的 150531-02
    • 有关 x86 的 150636-01
  • NMT 的故障排除指南更新
    本机内存跟踪 (Native Memory Tracking, NMT) 是一项 Java Hotspot VM 功能,可跟踪 HotSpot JVM 内部的内存使用量。本机内存跟踪可用于监视 VM 内部内存分配并诊断 VM 内存泄漏。VM 增强功能页已使用 NMT 功能进行更新。请参阅 Java SE 8 中的 Java 虚拟机增强功能。故障排除指南已使用 NMT 功能进行更新。请参阅本机内存跟踪
  • 多个 JRE 启动程序功能已过时
    启动时 JRE 版本选择或多个 JRE 启动程序功能在 JDK 8u40 中已过时。需要使用此功能部署的特定 Java 版本的应用程序必须切换到备用部署解决方案,例如 Java WebStart。
  • JavaFX 增强功能
    从 JDK 8u40 发行版开始,JavaFX 控件得到了增强,支持辅助性技术,这意味着 JavaFX 控件现已提供可访问性功能。此外,提供了公共 API,使开发人员能够编写自己的可访问性控件。在 Windows 和 Mac OS X 平台上提供了可访问性支持,其中包括:
    • 支持通过屏幕阅读器读取 JavaFX 控件
    • 可以使用键盘遍历 JavaFX 控件
    • 支持使控件更易于用户查看的特殊高对比度模式。
    请参见 8043344(未公开)。

    JDK 8u40 发行版包括新的 JavaFX UI 控件;一个微调按钮控件,格式文本支持,以及一组标准的预警对话框。 请参见 8043350(未公开)。
商业功能
  • 应用程序类数据共享 (AppCDS)
    应用程序类数据共享 (AppCDS) 对 CDS 进行了扩展,使您可以将来自标准扩展目录和应用程序类路径的类放在共享档案中。这是实验性功能,尚不允许商用。请参阅 Java 启动程序工具页中的 -XX:+UseAppCDS 选项。
  • 协作内存管理
    从 JDK 8u40 开始,在 JDK 中增加了“内存压力”的概念。内存压力属性代表系统上的总内存使用量 (RAM)。内存压力越高,系统越接近于用完内存。这是实验性功能,尚不允许商用。为了应对内存压力增大,JDK 将尝试减少其内存使用量。主要通过减少 Java 堆大小来实现这一点。JDK 为减少内存使用量而采取的操作可能会导致性能降低。这是特意的选择。应用程序通过 JMX MXBean 提供压力级别,范围从 0(无压力)到 10(几乎用尽内存)。要启用此功能,应注册 jdk.management.cmm.SystemResourcePressureMXBean。然后,使用 "MemoryPressure" 属性设置内存压力。
    此外,还提供了一个新的命令行标记 -XX:MemoryRestriction,它采用 "none"、"low"、"medium" 或 "high" 中的一个参数。此标记将在 JDK 中设置初始压力,对于未注册 MXBean 的情况,此标记同样起作用。协作内存管理需要 G1 GC (-XX:+UseG1GC)。此功能与 -XX:+ExplicitGCInvokesConcurrent 标记不兼容。
  • 新商业标记
    现已为商业许可证持有者提供了两个新的 VM 选项:
    • -XX:+ResourceManagement
    • -XX:ResourceManagementSampleInterval=value(毫秒)
    有关详细信息,请参见 Java 启动程序文档。
  • 新 MSI 安装程序文档:
    Microsoft Windows Installer (MSI) Enterprise JRE Installer Guide 现已提供。MSI Enterprise JRE 安装程序需要商业许可证以便在正式版中使用。了解有关商业功能以及如何启用这些功能的更多信息。
Java 到期日期

8u40 的到期日期是 2015 年 4 月 14 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u40)于 2015 年 5 月 14 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u40 Bug 修复页。

» 8u40 发行说明


Java 8 Update 31 (8u31)

发行版要点说明
  • IANA Data 2014j
    JDK 8u31 包含 IANA 时区数据版本 2014j。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • 默认情况下禁用 SSLv3
    从 JDK 8u31 发行版开始,已停用 SSLv3 协议(安全套接字层),该协议在正常情况下不可用。请查看 \lib\security\java.security 文件中的 jdk.tls.disabledAlgorithms 属性。如果确实需要 SSLv3,可以重新激活该协议,方法为:从 java.security 文件中的 jdk.tls.disabledAlgorithms 属性内删除 "SSLv3",或者在初始化 JSSE 之前动态设置此安全属性。
  • 对 Java 控制面板的更改
    从 JDK 8u31 发行版开始,将从 Java 控制面板高级选项中删除 SSLv3 协议。如果用户的应用程序需要使用 SSLv3,请按照下面步骤操作,手动重新启用它:
    • 在 JRE 级别启用 SSLv3 协议:在上一部分中已进行说明。
    • 在部署级别启用 SSLv3 协议:编辑 deployment.properties 文件,添加以下内容:

      deployment.security.SSLv3=true
Java 到期日期

8u31 的到期日期是 2015 年 4 月 14 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u31)于 2015 年 5 月 14 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u31 Bug 修复页。

» 8u31 发行说明


Java 8 Update 25 (8u25)

发行版要点说明
  • IANA Data 2014c
    JDK 8u25 包含 IANA 时区数据版本 2014c。有关详细信息,请参阅 JRE 软件中的时区数据版本
  • Bug 修复:减少了已启用密码套件列表中 RC4 的首选项模式
    此修复减少了基于 RC4 的密码套件首选项,这些密码套件位于 SunJSSE 提供方的默认已启用密码套件列表中。请参见 8043200(未公开)。
  • Bug 修复:在 Windows 上使用日文 IM 时,JRE 8u20 会崩溃
    在 Windows 平台上使用 Swing 控件时,如果输入一些日文或中文字符,则 VM 会崩溃。该问题现在已修复。请参见 8058858(未公开)。
在 Oracle JDK 和 JRE 中禁用 SSL v3.0 的说明

Oracle 建议用户和开发人员禁用 SSLv3 协议。
» Java 用户如何确认不会受到 SSL V3.0 "Poodle" 漏洞的影响?

Java 到期日期

8u25 的到期日期是 2015 年 1 月 20 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u25)于 2015 年 2 月 20 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Java SE Critical Patch Update Advisory

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u25 Bug 修复页。

» 8u25 发行说明


Java 8 Update 20 (8u20)

发行版要点说明
  • 向 Java 管理 API 增加了新标记
    标记 MinHeapFreeRatioMaxHeapFreeRatio 已成为可管理的标记。这意味着,这些标记可以在运行时使用 Java 中的管理 API 进行更改。对这些标记的支持已作为自适应大小策略的一部分添加到 ParallelGC
  • Java 安装程序更改
    • 提供全新的 Microsoft Windows Installer (MSI) Enterprise JRE 安装程序,可供用户在企业中安装 JRE。有关详细信息,请参阅 JRE Installation for Microsoft Windows 中的 Downloading the Installer 一节。MSI Enterprise JRE 安装程序仅作为 Java SE Advanced 或 Java SE Suite 的一部分提供。有关这些商业产品的信息,请参阅 Java SE Advanced and Java SE Suite
    • Java 卸载工具将集成在安装程序中,用于提供从系统中删除较早 Java 版本的选项。此更改适用于 32 位和 64 位 Windows 平台。请参阅卸载 JRE
  • Java 控制面板更改
    • 现在,用户可以使用 Java 控制面板中的更新选项卡来自动更新其系统上安装的 64 位 JRE(32 位版本也会自动更新)。
    • 已删除安全级别。现在只提供非常高级别。仍可以通过将托管小应用程序的站点添加到“例外站点”列表中,来授权运行不符合最新安全实践的小应用程序。通过“例外站点”列表,用户可以允许使用以前通过选择选项而允许的小应用程序,不同之处在于需要逐个站点地设置,从而最大程度地减少了使用更宽容设置的风险。
  • Java 编译器已更新
    javac 编译器已更新,可对使用 "this" 访问的最终空白字段实现明确的赋值分析。有关详细信息,请参阅 JDK 8 Compatibility Guide
  • Java 插件和 Java Webstart 所需的 Java 最低版本更改
    现在,Java 插件和 Java Webstart 所需的 Java 最低版本为 Java 5。不在 Java 5 或更高版本中运行的小应用程序必须移植到 Java 的较高版本才能继续运行。针对早期版本编写但至少可在 Java 5 中运行的小应用程序将继续工作。
  • UsageTracker 输出格式更改
    UsageTracker 输出格式已更改为使用引号,以免在日志中发生混淆。这可能需要更改此类信息的读取方式。此功能可配置为以早期版本中的方式运行,但建议使用新格式。请参阅 Java Usage Tracker 文档。
  • Java 打包工具更改
    • javafxpackager 已重命名为 javapackager
    • "-B" 选项已添加到 javapackager deploy 命令中,用于将参数传递到用于创建自包含应用程序的绑定程序。有关信息,请参阅 javapackager (Windows)/(Unix) 文档
    • 辅助参数已添加到 JavaFX Ant 任务引用。使用它,您可为用于创建自包含应用程序的绑定程序指定参数(在 元素中)。
Java 到期日期

8u20 的到期日期为 2014 年 10 月 14 日。只要具有安全漏洞修复的新发行版可用,Java 就会到期。对于无法访问 Oracle 服务器的系统,辅助机制将使此 JRE(版本 8u20)于 2014 年 11 月 14 日到期。满足两个条件中的任何一个(新发行版可用或到达到期日期)后,Java 将向用户提供提供进一步的警告和提醒,以便其更新到较新版本。

Bug 修复

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u20 Bug 修复页。

» 8u20 发行说明


Java 8 Update 11 (8u11)

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Critical Patch Update Advisory

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u11 Bug 修复页。

» 8u11 发行说明


Java 8 Update 5 (8u5)

本发行版包含对安全漏洞的修复。有关详细信息,请参见 Oracle Critical Patch Update Advisory

有关此发行版中包含的 Bug 修复列表,请参阅 JDK 8u5 Bug 修复页。

» 8u5 发行说明


Java 8 发行版

» JDK 和 JRE 8 发行说明