The following sections summarize changes made in all Java SE 8u421 BPR. Bug fixes and any other changes are listed below in date order, most current BPR first. Note that bug fixes in the previous BPR are also included in the current BPR.
BugId | Category | Subcategory | Summary |
---|---|---|---|
JDK-8336952 (not public) | install | jre msi installer can fail if run after using MSI Advertise option |
BugId | Category | Subcategory | Summary |
---|---|---|---|
JDK-8336107 (not public) | install | JDK rpm upgrade from 11.0.23 to 11.0.25 leaves "orphan" alternatives entry |
BugId | Category | Subcategory | Summary |
---|---|---|---|
JDK-8331765 | javafx | web | Websocket callbacks are not executed after WebKit 617.1 update |
JDK-8333859 | core-libs | java.util.jar | Pack200.newUnpacker().unpack() throws IOException |
JDK-8333447 (not public) | install | install | "alternatives" uninstallation results into intermittent “Java not available” issues |
Release date: July 16, 2024
The full version string for this update release is 8u421-b09 (where "b" means "build"). The version number is 8u421.
For more information, refer to Timezone Data Versions in the JRE Software.
The security baselines for the Java Runtime at the time of the release of JDK 8u421 are specified in the following table:
Java Family Version | Security Baseline (Full Version String) |
---|---|
8 | 8u421-b09 |
Oracle recommends that the JDK is updated with each Critical Patch Update. In order to determine if a release is the latest, the Security Baseline page can be used to determine which is the latest version for each release family.
Critical patch updates, which contain security vulnerability fixes, are announced one year in advance on Critical Patch Updates, Security Alerts and Bulletins. It is not recommended that this JDK (version 8u421) be used after the next critical patch update scheduled for October 15, 2024.
Java Management Service, available to all users, can help you find vulnerable Java versions in your systems. Java SE Subscribers and customers running in Oracle Cloud can use Java Management Service to update Java Runtimes and to do further security reviews like identifying potentially vulnerable third party libraries used by your Java programs. Existing Java Management Service user click here to log in to your dashboard. The Java Management Service Documentation provides a list of features available to everyone and those available only to customers. Learn more about using Java Management Service to monitor and secure your Java Installations.
For systems unable to reach the Oracle Servers, a secondary mechanism expires this JRE (version 8u421) on 2024-11-15. After either condition is met (new release becoming available or expiration date reached), the JRE will provide additional warnings and reminders to users to update to the newer version. For more information, see 23.1.2 JRE Expiration Date in the Java Platform, Standard Edition Deployment Guide.
Debug log files for Java Updater
and JCP
have been added to the directory $HOME/Library/Application Support/Oracle/Java/Java Updater/
for macOS x64 and aarch64. Logs for Java Updater
and JCP
are separated into two log files: JavaUpdaterLog.txt
and JCPUpdateLog.txt
.
JavaUpdaterLog.txt
is generated and logs debug lines if it does not already exist when Java Updater
is run. Likewise, JCPUpdateLog.txt
is generated and logs debug lines if it does not already exist when Java Control Panel is run.
If a log file already exists for Java Updater
or JCP
, the newly logged debug lines are appended at the end of the log file. Each log session has a header with a timestamp of when the application was run.
-XshowSettings
Launcher Option
(JDK-8281658)
The -XshowSettings
launcher has a new security
category. Settings from security properties, security providers and TLS related settings are displayed with this option. A security sub-category can be passed as an argument to the security category option. See the output from java -X
:
-XshowSettings:security
show all security settings and continue
-XshowSettings:security:*sub-category*
show settings for the specified security sub-category and continue. Possible *sub-category* arguments for this option include:
all: show all security settings and continue
properties: show security properties and continue
providers: show static security provider settings and continue
tls: show TLS related security settings and continue
Third party security provider details will be reported if they are included in the application class path or module path and such providers are configured in the java.security
file.
On Windows, once the feature “Use certificates and keys in browser keystore” is enabled (which it is by default), Java WebStart and Java Plugin can access the certificates that are currently trusted by the local machine. There is no guarantee that the full list of trusted certificates is available, since the certificates are dynamically loaded. As a result, Java applets and Java WebStart applications might experience signature validation and secure connection issues caused by a lack of relevant certificates since the Deployment framework can only access the certificates that are 'active' at the time of an application's launch.
To allow the java
, javaw
, and javaws
executables to be run from any location, the JRE 8 Windows installers copy java.exe
, javaw.exe
, and javaws.exe
helper files into the following directory:
C:\Program Files (x86)\Common Files\Oracle\Java\java8path
Also, the system PATH variable is updated to include this location.
These helper files are lightweight executables that launch the latest version installed. They pass any commandline arguments along to the real executables in the bin directory. They are not specificially tied to a version other than the FileVersion of the exe. The installers will leave the latest versions of the shims in this location until the last Java 8 is uninstalled.
Note: In 8u411 and later releases, the directory name was changed from "javapath" to "java8path" to ensure compatibility with newer JDK family versions.
Delete nonfunctional desktop integration functionality from Linux installers. The installers will stop depositing files in /usr/share/icons
, /usr/share/mime
, and /usr/share/applications
subtrees.
STATIC=1
Argument to the JRE Installer
(JDK-8313223 (not public))
This fix will add the STATIC=1
installer argument and deprecating the RETAIN_ALL_VERSIONS=1
installer argument. Passing STATIC=1
will protect older JRE 8 versions from being uninstalled during a manual upgrade or an auto-update.
The "Obsoletes" tag has been removed from "jdk-1.8" and "jre-1.8" RPM packages.
New stub "jdk1.8" and "jre1.8" RPM packages have been provided. These are the pre-8u371 names without a dash. These packages do not install any files, but require corresponding update releases for "jdk-1.8" and "jre-1.8" packages, the post-8u371 name with the dash, respectively.
Users who only have 8u371 or newer RPM packages installed do not need to use the new stub "jdk1.8" or "jre1.8" RPM packages, and will not be affected by this change.
Users who install the new stub "jdk1.8" package and would like to downgrade it to 8u361 or an older version, will need to first manually uninstall the "jdk-1.8" package before the downgrade to prevent the side-by-side installation of older and newer Java 8 JDK RPM packages. The same applies to the "jre1.8" and "jre-1.8" packages.
If the "jdk-1.8" package is stored in an RPM repository, maintainers of the repository need to place an additional stub "jdk1.8" package next to "jdk-1.8" in that RPM repository. The same applies to the "jre1.8" and "jre-1.8" packages.
Users who install the "jdk-1.8" package from something other than an RPM repository need to specify paths to the RPM files with "jdk1.8" and "jdk-1.8" packages in a single update command if they would like to upgrade from 8u361 or older "jdk1.8" package. The same applies to the "jre1.8" and "jre-1.8" packages.
The following root certificates have been added to the cacerts truststore:
+ 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
RPATH
Instead of RUNPATH
(JDK-8326891)
Native executables and libraries on Linux have switched to using RPATH
instead of RUNPATH
in this release.
JDK native executables and libraries use embedded runtime search paths to locate other internal JDK native libraries. On Linux these can be defined as either RPATH
or RUNPATH
. The main difference is that the dynamic linker considers RPATH
before the LD_LIBRARY_PATH
environment variable, while RUNPATH
is only considered after LD_LIBRARY_PATH
.
By making the change to using RPATH
, it is no longer possible to replace JDK internal native libraries using LD_LIBRARY_PATH
.
The installation directory name of the Oracle JDK in RPM and DEB packages has changed from /usr/lib/jvm/jdk-1.8-oracle-${ARCH}
to /usr/lib/jvm/jdk-${VERSION}-oracle-${ARCH}
.
The installation directory name of the Oracle JRE in RPM and DEB packages has changed from /usr/lib/jvm/jre-1.8-oracle-${ARCH}
to /usr/lib/jvm/jre-${VERSION}-oracle-${ARCH}
.
Every update release will be installed in a separate directory on Linux platforms.
Installers will create a /usr/java/jdk-1.8-oracle-${ARCH}
link pointing to the installation directory to allow programs to find the latest JDK8 version.
Installers will create a /usr/java/jre-1.8-oracle-${ARCH}
link pointing to the installation directory to allow programs to find the latest JRE8 version.
The JRE will be installed in the following location, C:\Program Files\Java\jre$fullversion
, where $fullversion
is the technical version of the JRE. For instance, 8u421 will install into C:\Program Files\Java\jre1.8.0_421
.
"C:\Program Files"
will be adjusted to "C:\Program Files (x86)"
for 32-bit Java.
For 64-bit installs, a junction will be created at C:\Program Files\Java\latest\jre-1.8
. It will point to the latest 64-bit JRE of the Java 8 family.
For 32-bit installs, a junction will be created at C:\Program Files (x86)\Java\latest\jre-1.8
. It will point to the latest 32-bit JRE of the Java 8 family.
This change of the JRE installation directories will also be reflected in the public JRE that is shipped with the JDK installer. Such changes were part of STATIC support implementation introduced in the 8u421 release.
Library | New Version | Module | JBS |
---|---|---|---|
ICU4C | 74.2 | javafx | JDK-8324326 |
LCMS | 2.16 | java.desktop | JDK-8321489 |
JPEG Image Decoding Software | 9f | java.desktop | JDK-8324233 |
Zlib Data Compression Library | 1.3.1 | java.base | JDK-8324632 |
This release also contains fixes for security vulnerabilities described in the Oracle Critical Patch Update.
The following table lists the bug fixes included in the JDK 8u421 release:
# | BugId | Component | Summary |
---|---|---|---|
1 | JDK-8317771 | client-libs/javax.accessibility | [macos14] Expand/collapse a JTree using keyboard freezes the application in macOS 14 Sonoma |
2 | JDK-8296878 | client-libs/javax.swing | Document Filter attached to JPasswordField and setText("") is not cleared instead inserted characters replaced with unicode null characters |
3 | JDK-8218917 | client-libs/javax.swing | KeyEvent.getModifiers() returns inconsistent values for ALT keys |
4 | JDK-8322239 | client-libs/javax.swing | [macos] a11y : java.lang.NullPointerException is thrown when focus is moved on the JTabbedPane |
5 | JDK-8318599 | core-libs/java.net | HttpURLConnection cache issues leading to crashes in JGSS w/ native GSS introduced by 8303809 |
6 | JDK-8180310 | core-libs/java.rmi | [testlibrary] TestSocketFactory null pointer when updating match bytes |
7 | JDK-8324632 | core-libs/java.util.jar | Update Zlib Data Compression Library to Version 1.3.1 |
8 | JDK-8315117 | core-libs/java.util.jar | Update Zlib Data Compression Library to Version 1.3 |
9 | JDK-8318322 | core-libs/java.util:i18n | Update IANA Language Subtag Registry to Version 2023-10-16 |
10 | JDK-8304761 | core-libs/java.util:i18n | Update IANA Language Subtag Registry to Version 2023-03-22 |
11 | JDK-8302512 | core-libs/java.util:i18n | Update IANA Language Subtag Registry to Version 2023-02-14 |
12 | JDK-8306031 | core-libs/java.util:i18n | Update IANA Language Subtag Registry to Version 2023-04-13 |
13 | JDK-8308021 | core-libs/java.util:i18n | Update IANA Language Subtag Registry to Version 2023-05-11 |
14 | JDK-8327631 | core-libs/java.util:i18n | Update IANA Language Subtag Registry to Version 2024-03-07 |
15 | JDK-8313702 | core-libs/java.util:i18n | Update IANA Language Subtag Registry to Version 2023-08-02 |
16 | JDK-8325029 | core-libs/javax.naming | Connection.java now requires custom socket factories to implement javax.net.SocketFactory |
17 | JDK-8285835 | hotspot/compiler | SIGSEGV in PhaseIdealLoop::build_loop_late_post_work |
18 | JDK-8287432 | hotspot/compiler | C2: assert(tn->in(0) != __null) failed: must have live top node |
19 | JDK-8197901 | hotspot/runtime | Crash during GC when logging level is debug |
20 | JDK-8059924 | hotspot/runtime | com/sun/management/DiagnosticCommandMBean/DcmdMBeanPermissionsTest.java: assert(Universe::verify_in_progress() || !SafepointSynchronize::is_at_safepoint()) failed: invariant |
21 | JDK-8329705 | javafx/accessibility | Add missing Application thread checks to platform specific a11y methods |
22 | JDK-8309374 | javafx/accessibility | Accessibility Focus Rectangle on ListItem is not drawn when ListView is shown for first time |
23 | JDK-8311492 | javafx/graphics | FontSmoothingType LCD produces wrong color when transparency is used |
24 | JDK-8324233 | javafx/graphics | Update JPEG Image Decoding Software to 9f |
25 | JDK-8324326 | javafx/web | Update ICU4C to 74.2 |
26 | JDK-8327177 | javafx/window-toolkit | macOS: wrong GlobalRef deleted in GlassMenu |
27 | JDK-8326643 | security-libs/java.security | JDK server does not send a dummy change_cipher_spec record after HelloRetryRequest message |
28 | JDK-8312383 | security-libs/javax.net.ssl | Log X509ExtendedKeyManager implementation class name in TLS/SSL connection |
29 | JDK-8247907 | security-libs/javax.xml.crypto | XMLDsig logging does not work |
30 | JDK-8303809 | security-libs/org.ietf.jgss | Dispose context in SPNEGO NegotiatorImpl |