
Performance should be better than or comparable to JNI. This plan is intended to replace JNI (Java Native Interface) with a superior pure-Java development model, to offer C support, and, over time, to be flexible enough to accommodate support for other platforms, such as 32-bit x86, and foreign functions written in languages other than C, such as C++. Together with the proposed foreign-memory access API, the foreign linker API will considerably simplify the otherwise error-prone process of binding to a native library. This API will be in an incubator stage in JDK 16.
#JAVA 16 RELEASED CODE#
Developers can use an existing release, such as JDK 11, to test existing code by using -illegal-access=warn to identify internal elements accessed via reflection, using -illegal-access=debug to pinpoint errant code, and testing with -illegal-access=deny. Developers are encouraged to use the jdeps tool to identify code that depends on internal elements of the JDK and switch to standard replacements when available. This proposal does carry a primary risk that existing Java code will fail to run.
#JAVA 16 RELEASED UPDATE#
Goals of this proposal include improving the security and maintainability of the JDK, as part of Project Jigsaw, and encouraging developers to migrate from using internal elements to using standard APIs so that both developers and end users can update easily to future Java releases. Users can choose the relaxed strong encapsulation that has been the default since JDK 9. Strong encapsulation of JDK internals by default, except for critical internal APIs such as misc.Unsafe.

Goals of the plan include allowing the author of a class or interface to control the code responsible for implementing it, provide a more declarative way than access modifiers to restrict the use of a superclass, and support future directions in pattern matching by providing a foundation for analysis of patterns. Previewed in JDK 15 and again in JDK 16, sealed classes and interfaces restrict which other classes and interfaces may extend or implement them.

Candidates for migration are informally designated as value-based classes in API specifications. The design and implementation of primitive classes in Java is now sufficiently mature that the migration of certain classes of the Java platform to primitive classes can be anticipated in a future release. Primitive classes declare instances to be identity-free and capable of inline or flattened representations, where instances can be copied freely between memory locations and encoded using values of instances’ fields. Driving this effort is the Valhalla Project, which is pursuing a significant enhancement to the Java programming model in the form of primitive classes. Warnings are provided about improper attempts to synchronize on instances of any value-based classes in the Java platform. The warnings for value-based classes proposal designates the primitive wrapper classes as value-based and deprecates their constructors for removal, prompting new deprecation warnings.Some of the new features of Java 5 include: So the next version of Java 1.4 became 5. Starting from Java 5 the major version got dropped. Java 5 was released on 2004-Sep-30 with lot of great new features. Projects which are still on Java 8 can migrate directly to the Java 17 LTS release instead of moving to Java 11 LTS to benefit from all the latest features of Java 17. There are a lot of modern language features introduced between Java 11 and Java 17. Below table provides all the major java versions, release dates and End of Support Life (The length of time updates are provided). Java SE 1-5, 6, 7, 8, 11 and 17 are LTS releases. So the next LTS release Java 21 will be on September 2023.

After the latest version : Java 17, there will be an LTS (Long term support) release every 2 years.

After Java 9, oracle intends to release new versions of java every 6 months.
