Skip to content

Latest commit

 

History

History

10

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Also see Java SE 10 (18.3) (JSR)


core-libs/java.util

Optional.orElseThrow() Method

A new method orElseThrow has been added to the Optional class. It is synonymous with and is now the preferred alternative to the existing get method.

core-libs/java.util:collections

APIs for Creating Unmodifiable Collections

Several new APIs have been added that facilitate the creation of unmodifiable collections. The List.copyOf, Set.copyOf, and Map.copyOf methods create new collection instances from existing instances. New methods toUnmodifiableList, toUnmodifiableSet, and toUnmodifiableMap have been added to the Collectors class in the Stream package. These allow the elements of a Stream to be collected into an unmodifiable collection.

core-svc/java.lang.management

System Property to Disable JRE Last Usage Tracking

A new system property jdk.disableLastUsageTracking has been introduced to disable JRE last usage tracking for a running VM. This property can be set in the command line by using either -Djdk.disableLastUsageTracking=true or -Djdk.disableLastUsageTracking. With this system property set, JRE last usage tracking will be disabled regardless of the com.oracle.usagetracker.track.last.usage property value set in usagetracker.properties.

core-svc/javax.management

Hashed Passwords for Out-of-the-Box JMX Agent

The clear passwords present in the jmxremote.password file are now being over-written with their SHA3-512 hash by the JMX agent.

hotspot/gc

JEP 307 Parallel Full GC for G1

Improves G1 worst-case latencies by making the full GC parallel. The G1 garbage collector is designed to avoid full collections, but when the concurrent collections can't reclaim memory fast enough a fall back full GC will occur. The old implementation of the full GC for G1 used a single threaded mark-sweep-compact algorithm. With JEP 307 the full GC has been parallelized and now use the same amount of parallel worker threads as the young and mixed collections.

security-libs/java.security

JEP 319 Root Certificates

Provides a default set of root Certification Authority (CA) certificates in the JDK.

The cacerts keystore of the OpenJDK 9 binary for Linux x64 has been populated by JEP 319: Root Certificates [https://bugs.java.com/bugdatabase/view_bug.do?bug_id=JDK-8191486] with a set of root certificates issued by the CAs of Oracle's Java SE Root CA Program. This addresses the problem of the empty cacerts keystore in the OpenJDK 9 binary for Linux x64. The empty cacerts keystore had prevented TLS connections from being established because Trusted Root Certificate Authorities were not installed. As a workaround for OpenJDK 9 binaries, users had to set the javax.net.ssl.trustStore System Property to use a different keystore.

security-libs/javax.net.ssl

TLS Session Hash and Extended Master Secret Extension Support

tools/javac

Bytecode Generation for Enhanced for Loop

Bytecode generation has been improved for enhanced for loops, providing an improvement in the translation approach for them. For example: List<String> data = new ArrayList<>(); for (String b : data);

The following is the code generated after the enhancement:

{ /*synthetic*/ Iterator i$ = data.iterator(); for (; i$.hasNext(); ) { String b = (String)i$.next(); } b = null; i$ = null; }

Declaring the iterator variable outside of the for loop allows a null to be assigned to it as soon as it is no longer used. This makes it accessible to the GC, which can then get rid of the unused memory. Something similar is done for the case when the expression in the enhanced for loop is an array.

tools/javadoc(tool)

javadoc Support for Multiple Stylesheets

A new javadoc command-line option, --add-stylesheet, has been added to the javadoc tool. The new --add-stylesheet option provides support for the use of multiple stylesheets in the generated documentation. The existing -stylesheetfile option now has an alias, --main-stylesheet, to help distinguish the main stylesheet from any additional stylesheets.

Overriding Methods That Do Not Change the Specification

A new option --overridden-methods=value, has been added to the javadoc tool. Many classes override inherited methods without changing the specification. The --overridden-methods=value option can be used to group these methods with other inherited methods, instead of documenting them in detail with the other methods declared in the class.

Comment Tag for Summary of an API Description

A new inline tag, {@summary ...}, has been added to explicitly specify the text used as the summary of the API description. By default, the summary of an API description is inferred from the first sentence. This is determined by using either a simple algorithm or java.text.BreakIterator. However, the heuristics for this are not always correct and can lead to an incorrect determination of the end of the first sentence. The new tag enables the API summary text to be explicitly set instead of inferred. More info at [Documentation Comment Specification for the Standard Doclet[(http://docs.oracle.com/javase/10/docs/specs/doc-comment-spec.html).

More into at Java SE 10 (18.3) (JSR 383).

client-libs

Removal of Support for Using Old LookAndFeel

It is no longer possible for applications to use old or unsupported LookAndFeels. Some applications (such as, Nimbus and Aqua) used old class names to instantiate JDK internal Swing LookAndFeels. These classes were internal to the JDK and applications should have always treated them as such. Applications that use these class names to instantiate JDK internal Swing LookAndFeels must migrate now.

core-libs/java.lang

Removal of Runtime.getLocalizedInputStream and getLocalizedOutputStream Methods

The methods Runtime.getLocalizedInputStream and Runtime.getLocalizedOutputStream have been removed. They were part of an obsolete internationalization mechanism and have no known uses.

core-libs/java.rmi

Removal of RMI Server-Side Multiplex Protocol Support

The RMI Multiplex protocol was disabled in JDK 9 and has been removed.

deploy/plugin

Removal of Common DOM APIs

The com.sun.java.browser.plugin2.DOM, and sun.plugin.dom.DOMObject APIs have been removed. Applications can use netscape.javascript.JSObject to manipulate the DOM.

hotspot/runtime

Removal of FlatProfiler

The FlatProfiler, deprecated in JDK 9, has been made obsolete by removing the implementation code. The FlatProfiler was enabled by setting the -Xprof VM argument. The -Xprof flag remains recognized in this release; however, setting it will print out a warning message.

Removal of Obsolete -X Options

The obsolete HotSpot VM options (-Xoss, -Xsqnopause, -Xoptimize, -Xboundthreads, and -Xusealtsigs) have been removed.

javafx/application-lifecycle

Removal of HostServicesgetWebContext Method

The HostServices::getWebContext method, which was deprecated for removal in JDK 9, has been removed. There is no replacement for this functionality. Applications will no longer be able to communicate with the enclosing web page of a JavaFX Applet. The Java Plug-in, on which this functionality depends, is deprecated for removal as well.

javafx/graphics

Removal of T2K Rasterizer and ICU Layout Engine From JavaFX

The T2K rasterizer and ICU layout engine have been removed from JavaFX.

javafx/media

Removal of Deprecated VP6/FXM/FLV Code From JavaFX

Support for VP6 video encoding format and FXM/FLV container has been removed in JavaFX Media. Users are encouraged to use H.264/AVC1 in the MP4 container or HTTP Live Streaming instead.

security-libs/java.security

Removal of Deprecated Pre-1.2 SecurityManager Methods and Fields

The following pre-1.2 deprecated java.lang.SecurityManager methods and fields that were marked forRemoval=true have been removed:

  • inCheck field
  • getInCheck method
  • classDepth method
  • classLoaderDepth method
  • currentClassLoader method
  • currentLoadedClass method
  • inClass method
  • inClassLoader method

In addition, the deprecated checkMemberAccess method has been changed to throw a SecurityException if the caller has not been granted AllPermission. This method is error-prone and users should instead invoke the checkPermission method directly.

security-libs/javax.security

Removal of Deprecated Classes in com.sun.security.auth.**

The following deprecated classes that were marked for removal in JDK 9 have been removed:

  • com.sun.security.auth.PolicyFile
  • com.sun.security.auth.SolarisNumericGroupPrincipal
  • com.sun.security.auth.SolarisNumericUserPrincipal
  • com.sun.security.auth.SolarisPrincipal
  • com.sun.security.auth.X500Principal
  • com.sun.security.auth.module.SolarisLoginModule
  • com.sun.security.auth.module.SolarisSystem

tools/javadoc(tool)

Removal of Old (JDK 6, JDK 7, and JDK 8 Era) Standard Doclet

The old (JDK 6, JDK 7 and JDK 8 era) standard doclet, which outputs HTML content, and which has been superseded by a replacement, has been removed in this release. The underlying javadoc API (see com.sun.javadoc in the API documentation) has been deprecated, but is still available for the time being, for use by user-provided doclets.

tools/javah

JEP 313 Remove the Native-Header Generation Tool (javah)

As previously announced, the native-header tool, javah, has been removed.

Native headers can now be generated by using the Java compiler, javac, with the -h option.

tools/launcher

Removal of Java Launcher's Data Model Options -d32 and -d64

The java launcher's data model selection options (-d32, -d64, -J-d32 and -J-d64) have been removed. They are obsolete and were previously deprecated. To prevent the launcher from failing, users must remove usages of these options when invoking the java launcher or tools such as javac and javah.

More info at Deprecated API page (API specification), Java SE 10 (18.3) (JSR 383) and Compatibility & Specification Review (CSR).

core-svc/javax.management

SNMP Monitoring Support Deprecated forRemoval

The jdk.snmp module that provides the SNMP monitoring and management support for the Java virtual machine has been deprecated and is planned to be removed in a future release.

A warning message for deprecation is emitted when JVM SNMP monitoring is enabled (via the com.sun.management.snmp.port property configured in the management.properties configuration file).

security-libs/java.security

java.security.{Certificate,Identity,IdentityScope,Signer} APIs Deprecated forRemoval

The deprecated java.security.{Certificate, Identity, IdentityScope, Signer} classes have been marked forRemoval=true and are subject to removal in a future version of Java SE.

java.security.acl APIs Deprecated forRemoval

The deprecated java.security.acl APIs have been marked forRemoval=true and are subject to removal in a future version of Java SE.

security-libs/javax.security

javax.security.auth.Policy API Deprecated forRemoval

The deprecated javax.security.auth.Policy class has been marked forRemoval=true and will be removed in a future release. The javax.security.auth.Policy class has been deprecated since JDK 1.4 and superseded or replaced by java.security.Policy.