The full version string for this update release is 1.7.0_21-b11 (where "b" means "build") except for Mac OS X for which it is 1.7.0_21-b12. The version number is 7u21.
This update release contains several enhancements and changes including the following:
JDK 7u21 contains Olson time zone data version 2012i. For more information, refer to Timezone Data Versions in the JRE Software.
The security baselines for the Java Runtime Environment (JRE) at the time of the release of JDK 7u21 are specified in the following table:
|JRE Family Version||JRE Security Baseline
(Full Version String)
For more information about security baselines, see Deploying Java Applets With Family JRE Versions in Java Plug-in for Internet Explorer.
The expiration date for JRE 7u21 is 07/18/2013.
Oracle now manages a certificate and jar blacklist repository. This data is updated on client computers daily on the first execution of a Java applet or web start application.
In this release,
custom settings are removed from the Java Control Panel(JCP)'s Security Slider.
Depending on the security level set in the Java Control Panel and the user's version of the JRE, self-signed or unsigned applications might not be allowed to run. The default setting of High permits all but local applets to run on a secure JRE. If the user is running an insecure JRE, only applications that are signed with a certificate issued by a recognized certificate authority are allowed to run.
For more information, see the Security section of the Java Control Panel documentation.
For more information, see Mixing Privileged Code and Sandbox Code documentation.
The JDK 7u21 release enables users to make more informed decisions before running Rich Internet Applications (RIAs) by prompting users for permissions before an RIA is run. These permission dialogs include information on the certificate used to sign the application, the location of the application, and the level of access that the application requests. For more information, see User Acceptance of RIAs.
Starting from JDK 7u21, it is recommended that all applications be signed. In addition, it is also possible to restrict signed applications to the security sandbox.
Therefore, the previous use of the term
"unsigned" to mean an application that ran in the security sandbox and
"signed" to mean an application that ran with extended permissions, is no longer meaningful.
The terminology in the Java Tutorial and the Java SE Guides has been changed to use "sandbox application" for applications that are restricted to the security sandbox, and "privileged application" for applications that have extended permissions.
Unsigned or self-signed applications may not be supported in future JDK update releases.
From this release, the RMI property
java.rmi.server.useCodebaseOnly is set to
true by default. In previous releases the default value was
This change of default value may cause RMI-based applications to break unexpectedly. The typical symptom is a stack trace that contains a
java.rmi.UnmarshalException containing a nested
For more information, see RMI Enhancements.
A new Server JRE package, with tools commonly required for server deployments but without the Java plug-in, auto-update or installer found in the regular JRE package, is available starting from this release. The Server JRE is specifically targeted for deploying Java in server environments and is available for 64-bit Solaris, Windows and Linux platforms. For more information on installing this package, see Installation Instructions.
Some of the tools included in the initial release of the Server JRE package, may not be available in future versions of the Server JRE. Please check future release notes for tools availability if you use this package.
JDk 7u21 release includes support for JDK for Linux on ARM. The product offers headful support for ARMv6 and ARMv7.
The following JDK features are not included or supported in this product:
In addition, some features of the Serviceability Agent are also not available for Linux on ARM platform.
Java support on ARM is specific to the GNOME Desktop Environment version
On Windows platform, the decoding of command strings specified to
Runtime.exec(String,String,File) methods, has been improved to follow the specification more closely. This may cause problems for applications that are using one or more of these methods with commands that contain spaces in the program name, or are invoking these methods with commands that are not quoted correctly.
Runtime.getRuntime().exec("C:\\My Programs\\foo.exe bar") is an attempt to launch the program
"C:\\My" with the arguments
"bar". This command is likely to fail with an exception to indicate
"C:\My" cannot be found.
Runtime.getRuntime().exec("\"C:\\My Programs\\foo.exe\" bar") is an attempt to launch the program
"\"C:\\My". This command will fail with an exception to indicate the program has an embedded quote.
Applications that need to launch programs with spaces in the program name should consider using the variants of
Runtime.exec that allow the command and arguments to be specified in an array.
Alternatively, the preferred way to create operating systems processes since JDK 5.0 is using
ProcessBuilder class has a much more complete API for setting the environment, working directory and redirecting streams for the process.
Prior to the release of JDK 7u21, the ability to automatically download a JRE through JNLP was disabled at the web server on Windows platform.
If there is a need to download the JRE automatically when an applet or Java Web Start application is run, use the Deployment Toolkit.
The permission named usePolicy that enabled system administrators to disable the Java Plug-In's default security prompting behavior is no longer available.
This release contains fixes for security vulnerabilities. For more information, see Oracle Java SE Critical Patch Update Advisory.
Synopsis: Installing SUNWj7rt fails checksum
While installing the Solaris package for JRE, SUNWj7rt, as part of the installation process the user may see some unexpected checksum failures. These errors do not affect the installed JRE in any way.
Synopsis: Installing SUNWj7dev to a no-default location fails checksum
While installing the Solaris pacakge for JDK, SUNWj7dev as part of the installation process, especially when the JDK is installed at a non-default location, user may see some unexpected checksum failures. These errors do not affect the installed JDK in any way.
Synopsis: Cannot remove trusted sandbox certs via the ControlPanel or trusted certs per location.
With the new sandbox security dialog box changes in JDK 7u21, user can now trust signed sandbox apps, and optionally trust all apps signed by the same certificate from the same URL. However, there is no way to remove the trusted sandbox certificates through the Control Panel, as one can for other trusted certificates.
The workaround is to manually remove the
sandbox.certs keystore from the security directory in user's deployment home directory or remove individual entries using
Synopsis: Security popup while closing application
Trusted-Library=true attribute. For more information, see Mixing Privileged Code and Sandbox Code.
As a workaround, if the applet jar is running with all-permissions and uses "Trusted-library:true" attribute as manifest entry, the mixed code warning will not popup.
Synopsis: Per-Applet/Global Packages, Java and netscape Keyword support removed
per-applet Packages keyword for IE, are all removed.
Synopsis: jnlp-applet could not been launched if its jar has been returned with HTTP HEADER
Applet/applications could fail to load if response HEADER contains
"Cache-Control : no-store" value.
As a workaround users can either:
"Cache-Control : no-cache"which will force caches (both proxy and browser) to submit the request every time to the origin server for validation before using a cached contents.
Synopsis: Javaws can't switch to offline app run mode if app can't be launched online.
javaws <jnlp_url> will fail to launch the cached application if system is offline, even if the application JNLP file has
<offline-allowed> element specified. As a workaround users can either:
- Launch Javaws explicitly with
javaws -offline <jnlp_url>
- Launch the cached application via Java Cache Viewer