Oracle releases the latest version of Java with thousands of improvements
Oracle has announced the availability of Java 18, the latest version of the company's programming language and development platform.
Java 18 (Oracle JDK 18) delivers thousands of performance, stability, and security improvements, including nine enhancements to the platform that will further improve developer productivity. These include the capability to add Code Snippets in Java API Documentation, which simplifies the addition of sample source code in API documentation, and a Simple Web Server for prototyping and testing.
"Java 18 demonstrates Oracle's commitment to providing enterprises and developers faster access to enhancements with the six-month feature release cadence," says Oracle vice president of development, Java Platform Group, Georges Saab.
"We continue to make technology investments that improve the performance, stability and security of the Java SE Platform implementations and the Java Development Kit."
James Governor, a principal analyst at RedMonk, says, "Java developers want continued innovation with modern programming language features, developer experience enhancements, cloud managed services, and stability. With Java's consistent six-month release cadence, Oracle is meeting those demands, helping to keep Java relevant for modern applications and workloads."
Accelerating adoption in the cloud
Oracle recently introduced Java Management Service (JMS), a new Oracle Cloud Infrastructure (OCI) native service to help manage Java runtimes and applications on-premises or on any cloud. JMS delivers the information needed to manage Java deployments across the enterprise. Java Management Service is included for OCI workloads and Java SE subscribers.
Java 18 is the latest release under Java's six-month release cadence and results from an extensive collaboration between Oracle engineers and other members of the worldwide Java developer community. The most significant changes delivered in Java 18 are:
Updates and improvements to libraries
JEP 400: Sets UTF-8 as the default charset of the standard Java APIs. With this change, APIs that depend on the default charset will behave consistently across all implementations, operating systems, locales, and configurations.
JEP 408: A command-line tool and API to start a minimal web server that serves static files only. This tool will be useful for prototyping, ad-hoc coding, and testing purposes, particularly in educational contexts.
JEP 416: Reimplement Core Reflection with method handles. Making method handles the underlying mechanism for reflection reduces the maintenance and development cost of both the Java.lang.reflect and Java.lang.invoke APIs.
JEP 418: Defines a service-provider interface (SPI) for hostname and address resolution so that java.net.InetAddress can use resolvers other than the platform's built-in resolver.
JEP 413: Introduces the @snippet tag for JavaDoc's Standard Doclet to simplify the inclusion of example source code in API documentation.
Preview and incubators for later JDK releases
JEP 417: Provides an API for developers to reliably leverage CPU architectures that provide scalable vector extensions. This will lead to superior performance compared to equivalent computations on non-extended processors.
JEP 419: Enables Java programs to interoperate with code and data outside the Java runtime. By efficiently invoking foreign functions (i.e., code outside the JVM) and safely accessing foreign memory (i.e., memory not managed by the JVM), the API enables Java programs to call native libraries and process native data without the brittleness and pitfalls of JNI.
JEP 420: Enhances the Java programming language with pattern matching for switch expressions and statements, along with extensions to the language of patterns. Extending pattern matching to switch allows an expression to be tested against several patterns, each with a specific action, so complex data-oriented queries can be expressed concisely and safely.
Future-proofing Java programs
JEP 421: Finalisation remains enabled by default, but can be disabled to facilitate testing. It will be disabled by default in a future release, and in a later release, it will be removed. Maintainers of libraries and applications that rely upon finalisation should consider migrating to other resource management techniques like the try-with-resources statement and cleaners.
Supporting Java customers
The Oracle Java SE Subscription, a pay-as-you-go offering, provides customers with support, entitlement to GraalVM Enterprise, access to the Java Management Service, and the flexibility to upgrade at the pace of their business. Oracle says this helps IT organisations manage complexity, contain costs, and mitigate security risks.