Version History of Java 7 Update 21

Java™ SE Development Kit 7, Update 21 (JDK 7u21)

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:

  • Blacklisted Jars and Certificates
  • Changes to Java Control Panel's Security Settings
  • Changes to Security Dialogs
  • Changes to RMI
  • Server JRE
  • JDK for Linux on ARM
  • Changes to Runtime.exec


Olson Data 2012i

JDK 7u21 contains Olson time zone data version 2012i. For more information, refer to Timezone Data Versions in the JRE Software.

JRE Expiration Date

The expiration date for JRE 7u21 is 07/18/2013.

Blacklisted Jars and Certificates

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.

Changes to Java Control Panel's Security Settings

In this release, low and 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.

Changes to Security Dialogs

As of JDK 7u21, JavaScript code that calls code within a privileged applet is treated as mixed code and warning dialogs are raised if the signed JAR files are not tagged with the Trusted-Library attribute.

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, seeUser Acceptance of RIAs.

Changes to RMI

From this release, the RMI property java.rmi.server.useCodebaseOnly is set to true by default. In previous releases the default value was false.

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 nestedjava.lang.ClassNotFoundException.

For more information, see RMI Enhancements.

Server JRE

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 for Linux on ARM

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:

  • Java WebStart
  • Java Plug-In
  • Garbage First (G1) Collector
  • JavaFX SDK or JavaFX Runtime

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 1:2.30+7.

Changes to Runtime.exec

On Windows platform, the decoding of command strings specified to Runtime.exec(String),Runtime.exec(String,String[]) and 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.

For example, Runtime.getRuntime().exec("C:\\My Programs\\foo.exe bar") is an attempt to launch the program "C:\\My" with the arguments "Programs\\foo.exe" and "bar". This command is likely to fail with an exception to indicate "C:\My" cannot be found.

The example 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 usingjava.lang.ProcessBuilder. The ProcessBuilder class has a much more complete API for setting the environment, working directory and redirecting streams for the process.

Bug Fixes

This release contains fixes for security vulnerabilities. For more information, see Oracle Java SE Critical Patch Update Advisory.