JEP | Name | Category | Summary |
---|---|---|---|
110 | HTTP/2 Client (Incubator) | |
Define a new HTTP client API that implements HTTP/2 and WebSocket, and can replace the legacy HttpURLConnection API. The API will be delivered as an incubator module, as defined in JEP 11, with JDK 9. This implies: |
222 | jshell: The Java Shell (Read-Eval-Print Loop) |
Tools
|
Provide an interactive tool to evaluate declarations, statements, and expressions of the Java programming language, together with an API so that other applications can leverage this functionality. |
240 | Remove the JVM TI hprof Agent |
Pruning
|
Remove the hprof agent from the JDK. |
241 | Remove the jhat Tool |
Pruning
|
Remove the antiquated jhat tool. |
298 | Remove Demos and Samples |
Pruning
|
Remove the outdated and unmaintained demos and samples. |
214 | Remove GC Combinations Deprecated in JDK 8 |
Pruning
|
Remove the GC combinations that were previously deprecated in JDK 8 via JEP 173. |
291 | Deprecate the Concurrent Mark Sweep (CMS) Garbage Collector |
Pruning
|
Deprecate the Concurrent Mark Sweep (CMS) garbage collector, with the intent to stop supporting it in a future major release. |
289 | Deprecate the Applet API |
Pruning
|
Deprecate the Applet API, which is rapidly becoming irrelevant as web-browser vendors remove support for Java browser plug-ins. Guide developers to alternative technologies such as Java Web Start or installable applications. |
102 | Process API Updates | |
Improve the API for controlling and managing operating-system processes. |
143 | Improve Contended Locking | |
Improve the performance of contended Java object monitors. |
158 | Unified JVM Logging | |
Introduce a common logging system for all components of the JVM. |
165 | Compiler Control | |
This JEP proposes an improved way to control the JVM compilers. It enables runtime manageable, method dependent compiler flags. (Immutable for the duration of a compilation.) |
193 | Variable Handles | |
Define a standard means to invoke the equivalents of various java.util.concurrent.atomic and sun.misc.Unsafe operations upon object fields and array elements, a standard set of fence operations for fine-grained control of memory ordering, and a standard reachability-fence operation to ensure that a referenced object remains strongly reachable. |
197 | Segmented Code Cache | |
Divide the code cache into distinct segments, each of which contains compiled code of a particular type, in order to improve performance and enable future extensions. |
199 | Smart Java Compilation, Phase Two | |
Improve the sjavac tool so that it can be used by default in the JDK build, and generalize it so that it can be used to build large projects other than the JDK. |
200 | The Modular JDK | |
Use the Java Platform Module System, specified by JSR 376 and implemented by JEP 261, to modularize the JDK. |
201 | Modular Source Code | |
Reorganize the JDK source code into modules, enhance the build system to compile modules, and enforce module boundaries at build time. |
211 | Elide Deprecation Warnings on Import Statements | |
As of Java SE 8, java compilers are required by reasonable interpretations of the Java Language Specification to issue deprecation warnings when a deprecated type is imported by name or when a deprecated member (method, field, nested type) is imported statically. These warnings are uninformative and should not be required. Deprecation warnings at actual uses of deprecated members should remain. |
212 | Resolve Lint and Doclint Warnings | |
The JDK code base contains numerous lint and doclint errors as reported by javac. These warnings should be resolved, at least for the fundamental parts of the platform. |
213 | Milling Project Coin | |
The small language changes included in Project Coin / JSR 334 as part of JDK 7 / Java SE 7 have been easy to use and have worked well in practice. However, a few amendments could address the rough edges of those changes. In addition, using underscore ("_") as an identifier, which generates a warning as of Java SE 8, should be turned into an error in Java SE 9. It is also proposed that interfaces be allowed to have private methods. |
215 | Tiered Attribution for javac | |
Implement a new method type-checking strategy in javac to speed up attribution of poly expression in argument position. |
216 | Process Import Statements Correctly | |
Fix javac to properly accept and reject programs regardless of the order of import statements and extends and implements clauses. |
217 | Annotations Pipeline 2.0 | |
Redesign the javac annotations pipeline to better address the requirements of annotations and tools that process annotations. |
219 | Datagram Transport Layer Security (DTLS) | |
Define an API for Datagram Transport Layer Security (DTLS) version 1.0 (RFC 4347) and 1.2 (RFC 6347). |
220 | Modular Run-Time Images | |
Restructure the JDK and JRE run-time images to accommodate modules and to improve performance, security, and maintainability. Define a new URI scheme for naming the modules, classes, and resources stored in a run-time image without revealing the internal structure or format of the image. Revise existing specifications as required to accommodate these changes. |
221 | New Doclet API | |
Provide a replacement for the Doclet API to leverage appropriate Java SE and JDK APIs, and update the standard doclet to use the new API. |
223 | New Version-String Scheme | |
Define a version-string scheme that easily distinguishes major, minor, and security-update releases, and apply it to the JDK. |
224 | HTML5 Javadoc | |
Enhance the javadoc tool to generate HTML5 markup. |
225 | Javadoc Search | |
Add a search box to API documentation generated by the standard doclet that can be used to search for program elements and tagged words and phrases within the documentation. The search box appears in the header of all pages generated by the standard doclet. |
226 | UTF-8 Property Resource Bundles | |
Define a means for applications to specify property files encoded in UTF-8, and extend the ResourceBundle API to load them. |
227 | Unicode 7.0 | |
Upgrade existing platform APIs to support version 7.0 of the Unicode Standard. |
228 | Add More Diagnostic Commands | |
Define additional diagnostic commands, in order to improve the diagnosability of Hotspot and the JDK. |
229 | Create PKCS12 Keystores by Default | |
Transition the default keystore type from JKS to PKCS12. |
232 | Improve Secure Application Performance | |
Improve the performance of applications that are run with a security manager installed. |
231 | Remove Launch-Time JRE Version Selection |
Pruning
|
Remove the ability to request, at JRE launch time, a version of the JRE that is not the JRE being launched. |
233 | Generate Run-Time Compiler Tests Automatically | |
Develop a tool to test the run-time compilers by automatically generating test cases. |
235 | Test Class-File Attributes Generated by javac | |
Write tests to verify the correctness of class-file attributes generated by javac. |
236 | Parser API for Nashorn | |
Define a supported API for Nashorn's ECMAScript abstract syntax tree. |
237 | Linux/AArch64 Port | |
Port JDK 9 to Linux/AArch64. |
238 | Multi-Release JAR Files | |
Extend the JAR file format to allow multiple, Java-release-specific versions of class files to coexist in a single archive. |
243 | Java-Level JVM Compiler Interface | |
Develop a Java based JVM compiler interface (JVMCI) enabling a compiler written in Java to be used by the JVM as a dynamic compiler. |
244 | TLS Application-Layer Protocol Negotiation Extension | |
Extend the javax.net.ssl package to support the TLS Application Layer Protocol Negotiation (ALPN) Extension, which provides the means to negotiate an application protocol for a TLS connection. |
245 | Validate JVM Command-Line Flag Arguments | |
Validate the arguments to all JVM command-line flags so as to avoid crashes, and ensure that appropriate error messages are displayed when they are invalid. |
246 | Leverage CPU Instructions for GHASH and RSA | |
Improve the performance of GHASH and RSA cryptographic operations by leveraging recently-introduced SPARC and Intel x64 CPU instructions. |
247 | Compile for Older Platform Versions | |
Enhance javac so that it can compile Java programs to run on selected older versions of the platform. |
248 | Make G1 the Default Garbage Collector | |
Make G1 the default garbage collector on 32- and 64-bit server configurations. |
249 | OCSP Stapling for TLS | |
Implement OCSP stapling via the TLS Certificate Status Request extension (section 8 of RFC 6066) and the Multiple Certificate Status Request Extension (RFC 6961). |
250 | Store Interned Strings in CDS Archives | |
Store interned strings in class-data sharing (CDS) archives. |
251 | Multi-Resolution Images | |
Define a multi-resolution image API so that images with resolution variants can easily be manipulated and displayed. |
252 | Use CLDR Locale Data by Default | |
Use locale data from the Unicode Consortium's Common Locale Data Repository (CLDR) by default. |
253 | Prepare JavaFX UI Controls & CSS APIs for Modularization | |
Define public APIs for the JavaFX UI controls and CSS functionality that is presently only available via internal APIs and will hence become inaccessible due to modularization. |
254 | Compact Strings | |
Adopt a more space-efficient internal representation for strings. |
255 | Merge Selected Xerces 2.11.0 Updates into JAXP | |
Upgrade the version of the Xerces XML parser included in the JDK with important changes from Xerces 2.11.0. |
256 | BeanInfo Annotations | |
Replace @beaninfo Javadoc tags with proper annotations, and process those annotations at run time to generate BeanInfo classes dynamically. |
257 | Update JavaFX/Media to Newer Version of GStreamer | |
Update the version of GStreamer included in FX/Media in order to improve security, stability, and performance. |
258 | HarfBuzz Font-Layout Engine | |
Replace the existing ICU OpenType font-layout engine with HarfBuzz. |
259 | Stack-Walking API | |
Define an efficient standard API for stack walking that allows easy filtering of, and lazy access to, the information in stack traces. |
260 | Encapsulate Most Internal APIs | |
Encapsulate most of the JDK's internal APIs by default so that they are inaccessible at compile time, and prepare for a future release in which they will be inaccessible at run time. Ensure that critical, widely-used internal APIs are not encapsulated, so that they remain accessible until supported replacements exist for all or most of their functionality. |
261 | Module System | |
Implement the Java Platform Module System, as specified by JSR 376, together with related JDK-specific changes and enhancements. |
262 | TIFF Image I/O | |
Extend the standard set of Image I/O plugins to support the TIFF image format. |
263 | HiDPI Graphics on Windows and Linux | |
Implement HiDPI graphics on Windows and Linux. |
264 | Platform Logging API and Service | |
Define a minimal logging API which platform classes can use to log messages, together with a service interface for consumers of those messages. A library or application can provide an implementation of this service in order to route platform log messages to the logging framework of its choice. If no implementation is provided then a default implementation based upon the java.util.logging API is used. |
265 | Marlin Graphics Renderer | |
Update Java 2D to use the Marlin Renderer as the default graphics rasterizer. |
266 | More Concurrency Updates | |
An interoperable publish-subscribe framework, enhancements to the CompletableFuture API, and various other improvements. |
267 | Unicode 8.0 | |
Upgrade existing platform APIs to support version 8.0 of the Unicode Standard. |
268 | XML Catalogs | |
Develop a standard XML Catalog API that supports the OASIS XML Catalogs standard, v1.1. The API will define catalog and catalog-resolver abstractions which can be used with the JAXP processors that accept resolvers. |
269 | Convenience Factory Methods for Collections | |
Define library APIs to make it convenient to create instances of collections and maps with small numbers of elements, so as to ease the pain of not having collection literals in the Java programming language. |
270 | Reserved Stack Areas for Critical Sections | |
Reserve extra space on thread stacks for use by critical sections, so that they can complete even when stack overflows occur. |
271 | Unified GC Logging | |
Reimplement GC logging using the unified JVM logging framework introduced in JEP 158. |
272 | Platform-Specific Desktop Features | |
Define a new public API to access platform-specific desktop features such as interacting with a task bar or dock, or listening for system or application events. |
273 | DRBG-Based SecureRandom Implementations | |
Implement the three Deterministic Random Bit Generator (DRBG) mechanisms described in NIST 800-90Ar1. |
274 | Enhanced Method Handles | |
Enhance the MethodHandle, MethodHandles, and MethodHandles.Lookup classes of the java.lang.invoke package to ease common use cases and enable better compiler optimizations by means of new MethodHandle combinators and lookup refinement. |
275 | Modular Java Application Packaging | |
Integrate features from Project Jigsaw into the Java Packager, including module awareness and custom run-time creation. |
276 | Dynamic Linking of Language-Defined Object Models | |
Provide a facility for linking high-level operations on objects such as "read a property", "write a property", "invoke a callable object", etc., expressed as names in INVOKEDYNAMIC call sites. Provide a default linker for the usual semantics of these operations on plain Java objects, as well as a facility for installing language-specific linkers. |
277 | Enhanced Deprecation | |
Revamp the @Deprecated annotation, and provide tools to strengthen the API life cycle. |
278 | Additional Tests for Humongous Objects in G1 | |
Develop additional white-box tests for the Humongous Objects feature of the G1 Garbage Collector. |
279 | Improve Test-Failure Troubleshooting | |
Automatically collect diagnostic information which can be used for further troubleshooting in case of test failures and timeouts. |
280 | Indify String Concatenation | |
Change the static String-concatenation bytecode sequence generated by javac to use invokedynamic calls to JDK library functions. This will enable future optimizations of String concatenation without requiring further changes to the bytecode emitted by javac. |
281 | HotSpot C++ Unit-Test Framework | |
Enable and encourage the development of C++ unit tests for HotSpot. |
282 | jlink: The Java Linker | |
Create a tool that can assemble and optimize a set of modules and their dependencies into a custom run-time image as defined in JEP 220. |
283 | Enable GTK 3 on Linux | |
Enable Java graphical applications, whether based on JavaFX, Swing, or AWT, to use either GTK 2 or GTK 3 on Linux. |
284 | New HotSpot Build System | |
Rewrite the HotSpot build system using the build-infra framework. |
285 | Spin-Wait Hints | |
Define an API to allow Java code to hint that a spin loop is being executed. |
287 | SHA-3 Hash Algorithms | |
Implement the SHA-3 cryptographic hash functions (BYTE-only) specified in NIST FIPS 202. |
288 | Disable SHA-1 Certificates | |
Improve the security configuration of the JDK by providing a more flexible mechanism to disable X.509 certificate chains with SHA-1 based signatures. |
290 | Filter Incoming Serialization Data | |
Allow incoming streams of object-serialization data to be filtered in order to improve both security and robustness. |
292 | Implement Selected ECMAScript 6 Features in Nashorn | |
Implement, in Nashorn, a selected set of the many new features introduced in the 6th edition of ECMA-262, also known as ECMAScript 6, or ES6 for short. |
294 | Linux/s390x Port | |
Port JDK 9 to Linux/s390x. |
295 | Ahead-of-Time Compilation | |
Compile Java classes to native code prior to launching the virtual machine. |
297 | Unified arm32/arm64 Port | |
Integrate the unified port of HotSpot for arm32 and arm64, contributed by Oracle, into the JDK. |
299 | Reorganize Documentation | |
Update the organization of the documents in the JDK, in both the source repositories and the generated docs. |