Java SE 10 (18.3) ( JSR 383)
Final Release Specification
Iris Clark & Brian Goetz
2018/2/22 18:27 -0800 [f7eae354526c]

This Specification defines version 10 of the Java Platform, Standard Edition.

4Component JSR Specifications
5Feature summary
6Feature details
8APIs removed
9APIs proposed for removal
A1Complete API Specification
A2API Specification differences
A3Java Language & Virtual Machine Specifications

This release continues the evolution of the Platform to ensure the broadest possible success of the core Java technology. It improves the developer experience by simplifying variable declarations in Java code, and clarifies the Platform’s version scheme.


This document directly specifies API features, enhancements, clarifications, and bug fixes. It also specifies features by reference to other Specifications which are revised in Maintenance Releases of existing JSRs. The specifications of these changes are contained in two accompanying documents: Annex 1 is the complete Java SE 10 API Specification and Annex 2 is an annotated API specification showing the exact differences relative to Java SE 9. Informative background for these changes may be found in the list of approved Change Specification Requests for this release.

This Specification includes the Java SE 10 Editions of The Java Language Specification and The Java Virtual Machine Specification in Annex 3. The Java SE 10 Editions contain all corrections and clarifications made since the Java SE 9 Editions, as well as additions for new features.


Changes to the Java SE Platform Specification are categorized as either features or enhancements. A feature is, roughly speaking, a change of which at least one of the following statements is true:

Any addition that is not a feature is considered an enhancement.

There is, obviously, room for judgment when interpreting this definition. In order to maximize the visibility of Platform revisions we generally tend to consider borderline items to be features rather than enhancements.

Component JSR Specifications  

Some Component JSR Specifications previously incorporated into the Platform are still available separately or have significant Specifications themselves. Changes to their Specifications are therefore made in separate Maintenance Releases, which are incorporated here by reference:

JSR 269: Pluggable Annotation-Processing API [MR 4]

Each Component JSR Specification, or revision thereto, may be related to one or more features in the detailed list below.

Feature summary  
Core LibrariesAdditional Unicode Language-Tag Extensions
Time-Based Release Versioning
LanguageLocal-Variable Type Inference
Feature details  

Work on features in the Java SE 10 Reference Implementation, which is the Java Development Kit, version 10 (JDK 10), is organized in terms of JDK Enhancement Proposals (JEPs). Each feature description includes a link to the corresponding JEP document as a convenience, but that document is not a normative part of this Specification.

Core Libraries
Additional Unicode Language-Tag Extensions

Enhance java.util.Locale and related APIs to implement additional Unicode extensions of BCP 47 language tags.

Time-Based Release Versioning

Revise the version-string scheme of the Java SE Platform and the JDK, and related versioning information, for present and future time-based release models.

Local-Variable Type Inference

Enhance the Java Language to extend type inference to declarations of local variables with initializers.


The modular structure of the Java SE Platform is unchanged. This Specification defines the same 26 Java SE modules, and dependencies between them, as the Java SE 9 Platform Specification (JSR 379), “Modules” section. For a visual overview, readers are referred to the “The module graph” subsection of that section. Additionally, to ensure conformance by Implementations, this Specification incorporates the following “Modules” subsections by reference:

APIs removed  

Following the conventions established by the Enhanced Deprecation feature, various APIs were annotated with forRemoval=true in the Java SE 9 Platform Specification (JSR 379), “APIs Proposed for Removal”, indicating that they were eligible for removal in a future release.

The following APIs are removed from this Specification. They have all been deprecated since at least Java SE 1.2 and have been superseded by newer APIs.



APIs proposed for removal  

The following modules were proposed for removal by the Java SE 9 Platform Specification, “APIs Proposed for Removal”, and continue to be eligible for removal in a future release. They are not removed from this Specification.

More information about these modules and their APIs is available in JEP 320. Standalone versions of the APIs and their implementations are readily available. It is strongly recommended to migrate to standalone versions as soon as possible.

The following APIs were proposed for removal by the Java SE 9 Platform Specification, and continue to be eligible for removal in a future release. They are not removed from this Specification.



Finally, the following APIs are annotated as @Deprecated with forRemoval=true in this Specification. This makes them eligible for removal in a future release of the Platform.







Additional details about deprecations, including potential alternatives, may be found in the Deprecated API list of the API Specification. Migration away from deprecated APIs is strongly encouraged.