Update Release Notes

Java™ SE 7 Update 4

The full internal version number for this update release is 1.7.0_04-b20 (where "b" means "build") except for Windows on which it is 1.7.0_04-b22 and for Mac OS X on which it is 1.7.0_04-b21. The external version number is 7u4.

JDK support for Mac OS X does not include client deployment technologies like Java Plugin and Java Web Start. JRE for Mac OS X will be available in an upcoming JDK 7 update release. For an early access release of the JRE for Mac OS X with applet support, visit Mac OS X Port Developer Preview Release.

Some serviceability features may not work in Java SE 7u4 on Mac OS X. See Known Issues for more details.

New JVM (Java HotSpot Virtual Machine, version 23)

HotSpot 23 features JRockit JVM feature convergence. Some of the value-add features of the JRockit JVM are re-implemented in the HotSpot JVM. These features include:

Text dumps with buffered data: buffered JVM state information available in text crash dumps and core/mdmp

Diagnostics command framework (jcmd) and diagnostic commands

Enhanced JMX Agent

Parallel Old GC (-XX:+UseParallelOldGC) is now enabled by default whenever -XX:+UseParallelGC is enabled. To revert to the previous default behavior, use the option -XX:-UseParallelOldGC on the java command line.

According to specification, the JVM should not maintain any particular order of methods being returned by reflection. In previous versions, the JVM used to return the methods in the declaration order and some user code may have relied on this behavior. Starting from Java SE 7, the JVM no longer guarantees constant order of methods and JMX MBeanInfo no longer guarantees equality of MBeanInfo between two identical MBeans.

New Supported Garbage Collector: Garbage First (G1)

Starting in Java SE 7u4 the Garbage First Collector is fully supported. The G1 collector is targeted for applications that fully utilize the large amount of memory available in today's multiprocessor servers, while still keeping garbage collection latencies under control. Applications that require a large heap, have a big active data set, have bursty or non-uniform workloads or suffer from long Garbage Collection induced latencies should benefit from switching to G1. For more detailed information about G1 see the G1 documentation page and command line options.

JAXP upgraded to 1.4.6

The new JAXP 1.4.6 version includes fixes for critical issues in the areas of conformance, performance, and regressions.

The new OracleUcrypto Service Provider accesses the underlying native(T4) crypto library without going through the PKCS11 layer and is configured by default to be the most preferred provider for Solaris OS.

New flag to unlock Commercial Features

The Java SE 7 Update 4 release introduces a new flag, -XX:+UnlockCommercialFeatures. This flag enables Oracle Java SE users to control when licensed features are allowed to run. All commercial features started or controlled via the command line or dynamically during execution will be gated by this flag. By default, commercial features are not allowed to execute, and any usage requires an active unlocking either on the command line or dynamically during runtime, to help remove any accidental usage.

The command line arguments -XstartOnFirstThread, -Xdock:icon, and -Xdock:name are now documented as officially supported options on the Mac OS platform. The following command will print out these options at the command line:

Right-clicking a dock icon of a Java app will not list all open Java top-level windows in the menu as Apple JDK used to do. In order to activate a window, find the window on the screen and click it directly. This is a known issue that will be addressed in a future release. See 7149062.

Area: java commandSynopsis: Wildcard expansion for single entry classpath does not work on Windows platforms.

The Java command and Setting the classpath documents describe how the wildcard character (*) can be used in a classpath element to expand into a list of the .jar files in the associated directory, separated by the classpath separator (;).

This wildcard expansion does not work in a Windows command shell for a single element classpath due to the Microsoft bug described in Wildcard Handling is Broken. A workaround is to add another element to the classpath. For example, instead of the following:

Process attach and diagnostics for jtools, such as jinfo, jstack, and jmap:

The system architecture is not recognized and the tools will fail with the error message:"Error attaching to process: Bsd only supported on x86/amd64".

Parsing core files:

Support for reading core files and providing diagnostic information will not be available. Core files from Java crashes are platform specific. The parser for core files on Mac OS X (MACH-O format) is not yet implemented.

When launching JDB from the command line on Windows platform, if a comma delimited JVM option is passed to either the debugger or the debuggee, it may fail with an IllegalArgumentException. For example, consider the following:

An issue with the Mac OS X poll(2) system call has been found to cause problems for networking applications based on the java.nio socket channel classes. This issue has been detected with the Oracle WebLogic Server on Mac OS X.

A workaround to mitigate the problem is setting the following system property on the Java command line:

If an unrecognized -XX option is supplied to the JVM, it exits. However, the resulting error message does not clearly state that the reason for the JVM exiting is because of the unrecognized option. See 7162488.

Here is an example of the error output:

java -XX:InvalidOption HelloWorld Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit.