Java version 8 update 20 has been released by Oracle. This is the latest version available for users who run Java on their PCs. Java is a programming language and computing platform. It is also a
software package that runs on more than 850 million personal computers worldwide. There are lots of applications and websites that will not work properly unless you have Java installed.
New Features and Changes
New flags added to Java Management API
The flags MinHeapFreeRatio
and MaxHeapFreeRatio
have been made manageable. This means they can be changed at runtime using the management API in Java. Support for these flags have also been added to the ParallelGC
as part of the adaptive size policy.
Java Installer Changes
A new Microsoft Windows Installer (MSI) Enterprise JRE Installer which enables user to install the JRE across the enterprise, is available. See Downloading the Installer section in JRE Installation for Microsoft Windows for more information. The MSI Enterprise JRE Installer is only available as part of Java SE Advanced or Java SE Suite. For information about these commercial products, see Java SE Advanced and Java SE Suite.
The following new configuration parameters are added to support commercial features, for use by Java SE Advanced or Java SE Suite licensees only.
USAGETRACKERCFG=
DEPLOYMENT_RULE_SET=
See Installing With a Configuration File for more information about these and other installer parameters.
The Java Uninstall Tool is integrated with the installer to provide an option to remove older versions of Java from the system. The change is applicable to 32 bit and 64 bit Windows platforms. See Uninstalling the JRE.
Java Control Panel Changes
The Update
tab in the Java Control Panel now enables the users to automatically update 64-bit JREs (in addition to 32-bit versions) that are installed on their system.
The Medium
security level has been removed. Now only High
and Very High
levels are available.
Applets that do not conform with the latest security practices can still be authorized to run by including the sites that host them to the Exception Site List.
The exception site list provides users with the option of allowing the same applets that would have been allowed by selecting the Medium
option but on a site-by-site basis therefore minimizing the risk of the using more permissive settings.
Java Compiler updated
The javac
compiler has been updated to implement definite assignment analysis for blank final field access using “this”. See JDK 8 Compatibility Guide for more details.
Change in minimum required Java Version for Java Plugin and Java Webstart
The minimum version of Java required for Java Plugin and Java Webstart is now Java 5. Applets that do not run in Java 5 or later must be ported to a later version of Java to continue to function. Applets written for earlier versions but able to run in at least Java 5 will continue to work.
Change in UsageTracker
output formatting
UsageTracker
output formatting has been changed to use quoting, to avoid confusion in the log. This may require changes to the way such information is read. The feature can be configured to behave as in previous versions, although the new format is recommended.
See Java Usage Tracker documentation.
Changes to Java Packaging Tools
- javafxpackager has been renamed to javapackager
- The
"-B"
option has been added to the javapackager deploy command to enable you to pass arguments to the bundlers that are used to create self-contained applications. Seejavapackager
(Windows)/(Unix) documentation for information - The
<fx:bundleArgument>
helper parameter argument has been added to JavaFX Ant Task Reference. It enables you to specify an argument (in the <fx:deploy> element) for the bundler that is used to create self-contained applications.
Change in javax.smartcardio.Card.disconnect(boolean reset) method behavior
Prior to the JDK 8u20 and JDK 7u72 releases, the javax.smartcardio.Card.disconnect(boolean reset)
method had inverted logic for the 'reset'
boolean value passed to it. The card was reset upon a disconnect if false was passed to it and vice versa. Starting with JDK 7u72 and JDK 8u20, the correct behavior as per API documentation has been implemented.
In order to provide backwards compatibility to users who rely on the old behavior, a new system property has been introduced. The following command-line option can be used to enforce the old broken behavior:
-Dsun.security.smartcardio.invertCardReset=true
This property is set by default for 7u72 and later JDK 7 update releases. By default, no behavioral change will be noticed in this area for JDK 7 update releases.
Also the following command-line option can be used to enforce the new correct behavior:
-Dsun.security.smartcardio.invertCardReset=false
This is default for 8u20 and later JDK 8 update releases. In future Java releases, the property will be ignored/disabled and default disconnect method behavior will be as specified by API.
Bug Fixes
The following are some of the notable bug fixes in this release:
Area: other-libs/corba
Synopsis: org.omg.CORBA.ORBSingletonClass
loading no longer uses context class loader
The system property org.omg.CORBA.ORBSingletonClass
is used to configure the system-wide/singleton ORB. The handling of this system property has changed in 7u55 release to require that the system wide/singleton ORB be visible to the system class loader.
In this release the handling of this system property has been changed to match the behavior found in JDK versions prior to 7u55 release, i.e. the singleton ORB is once again located using the thread context class loader of the first thread to call the no-argument ORB.init
method. The change was made to support applications which have been designed to depend on this behavior. Note that this change is applicable to 8u20, 7u65, 6u85 and 5.0u75 releases. For JDK 9, the new behavior where the system wide/singleton ORB needs to be visible to the system class loader, will continue.
See 8042789.
Area: core-libs/java.util.collections
Synopsis: Collection.sort defers now defers to List.sort
Previously Collection.sort
copied the elements of the list to sort into an array, sorted that array, then updated list, in place, with those elements in the array, and the default method List.sort
deferred to Collection.sort. This was a non-optimal arrangement.
From 8u20 release onwards Collection.sort
defers to List.sort
. This means, for example, existing code that calls Collection.sort
with an instance of ArrayList
will now use the optimal sort implemented by ArrayList.
See 8032636.
Area: tools/javac
Synopsis: javac crashes when mixing lambdas and inner classes
Previously the following sample code was making the compiler fail with a NPE:
class LambdaExpressionWithNonExistentIdCrashesJavacTest { void foo() { bar(()-> { new NonExistentClass(){ public void any() {} }; }); } void bar(Runnable r) {} }
where the NonExistentClass
was an existing but inaccessible class. Starting with JDK 8u20, javac
produces an error message indicating correctly that symbol "NonExistentClass"
can’t be found.
See 8030816.
Area: tools/javac
Synopsis: ElementType.TYPE_USE
is introduced in JDK 8 and should be considered a logical superset of ElementType.TYPE
and ElementType.ANNOTATION_TYPE
. However, the javac
command does not currently recognize ElementType.TYPE_USE
as a superset.
javac
has been corrected to recognize ElementType.TYPE_USE
appropriately.
See 8029017.
Area: tools/javac
Synopsis: javac generates incorrect exception table for multi-catch statements inside a lambda
Handling of try-catch with multiple catches inside a lambda has been corrected.
See 8036942.
Area: core-libs/java.lang.reflect
Synopsis: Default methods affect the result of Class.getMethod
and Class.getMethods
Class.getMethod
and Class.getMethods
were not updated with the 8 release to match the new inheritance definition (both may return non-inherited superinterface methods). Starting with JDK 8u20, the implementation has been changed to match defintion. See JDK 8 Compatibility Guide for more details.
See 8046505.
If you would like assistance managing and deploying Java for PCs, please contact H Tech Solutions using the URL below.