Specify UTF-8 as the default charset of the standard Java APIs. With this change, APIs that depend upon the default charset will behave consistently across all implementations, operating systems, locales, and configurations.
Provide a command-line tool to start a minimal web server that serves static files only. No CGI or servlet-like functionality is available. This tool will be useful for prototyping, ad-hoc coding, and testing purposes, particularly in educational contexts.
start om cmd with jwebserver. By default, the server runs in the foreground and binds to the loopback address and port 8000. By default, files are served from the current directory.
The server can also be started via code, see example SimpleWebServer.java.
Reimplement java.lang.reflect.Method, Constructor, and Field on top of java.lang.invoke method handles. Making method handles the underlying mechanism for reflection will reduce the maintenance and development cost of both the java.lang.reflect and java.lang.invoke APIs.
update to second incubator: enhancements in response to feedback as well as performance improvements and other significant implementation enhancements.
Support the ARM Scalar Vector Extension (SVE) platform.
Improve the performance of vector operations that accept masks on architectures that support masking in hardware.
Define a service-provider interface (SPI) for host name and address resolution, so that java.net.InetAddress can make use of resolvers other than the platform's built-in resolver.
see example AllLocalInetAddressResolverProvider.java
Introduce an API by which Java programs can interoperate with code and data outside of the Java runtime. Combination of 2 APIs introduced in previous JDKs:
Foreign-Memory Access API (incubator in 14, 15 and 16)
Foreign Linker API (incubator in 16)
Changes since first incubator
Support for more carriers, such as boolean and MemoryAddress, in memory access var handles;
A more general dereference API, available in both the MemorySegment and MemoryAddress interfaces;
A simpler API to obtain downcall method handles, where passing a MethodType parameter is no longer required;
A simpler API to manage temporal dependencies between resource scopes; and
A new API to copy Java arrays to and from memory segments.
Dominance checking now forces a constant case label to appear before a guarded pattern of the same type, for readability.
Exhaustiveness checking of switch blocks is now more precise with sealed hierarchies where the permitted direct subclass only extends an instantiation of the (generic) sealed superclass.
Object#finalize() is deprecated since java 9, now it's also marked as forRemoval. Finalization remains enabled by default for now, but can be disabled to facilitate early testing. In a future release it will be disabled by default, and in a later release it will be removed.