Java programming language is a computer language which was built by James Gosling at Sun Microsystems as a core segment for their Java platform. It is one of the most popular programming languages in use as it is especially used for client-server web applications. The JDK is an implementation of Java platform released by Oracle Corporation.

The JDK shortened for Java Development Kit is the most widely used software development kit (SDK) since the introduction of Java platform. It includes a private Java Virtual Machine (JVM) and a few other resources to finish the development of a java application. Sun Microsystems announced that they would release JDK under the GNU General Public License, making it free for use.

On 8 May 2007, Sun Microsystems contributed JDK’s source code to the Open JDK. The Java computer-programming language has gone under several upgradations ever since JDK 1.0 was released as well as numerous additions of classes and packages have been made to its standard library. The evolution and upgradations of Java language have been governed by the Java Community Process (JCP) since February 6, 2002. It uses Java Specification Requests (JSRs) to suggest and particularize the additions and changes in the outsource Java development platform. The language is particularized by the JLS (Java language specification) and the changes and recommendations in JLS are managed by JSR 901.

Starting from JDK 1.0 in January 1996, the developers have reached to JDK 10 which was released on March 20, 2018. JDK 10 is the currently supported rapid release version, this version support will end as soon as the support of JDK 11 will begin in September 2018. It is being predicted that after JDK 8, JDK 11 will be the next long-term-support (LTS) version. After the release of JDK 10, Java 9 stopped receiving updates as it was just a short-term rapid release version and the public updates for Java 8 will be stopped from January 2019.

Top 12 key features included in new JDK 10 are:-

1. JEP 286 [Local-Variable Type Inference]

This feature introduces var (variable) to Java which is new to Java but common in other languages like JavaScript. JEP 286 is the only real feature for developers and coders in JDK 10. With this feature, developers can state the type of a local-variable non-explicitly. An interesting thing in this feature is that var does not become a keyword but instead a reserved type.

2. JEP 317 [Experimental Java-Based JIT Compiler]

This feature is the integration of the Graal dynamic compiler for the Linux x64 platform. It is supposed that if the JVM is written in Java, then a JVM is needed to run the JVM but it leads to a nice hall of mirrors. While the concept is that if you write the JVM in Java it doesn’t imply that you have to compile it in bytecode, it can also be compiled by using AOT compilation and then JIT can compile the code.

3. JEP 310 [Application Class-Data Sharing]

This feature allows application classes to be placed in the shared archive, it reduces startup and footprint for Java applications. JDK 10 extends CDS which was introduced in JDK 5 to improve the performance of the JVM startup when multiple JVMs running at the same time on the same physical or virtual machine. By extending CDS it permits the built-in system class loader, the platform class loader, and custom class loaders to load archived classes. Earlier the CDS was restricted to the bootstrap class loader only.

4. JEP 322 [Time-Based Release Versioning]

The format of this feature is similar to that introduced in JDK 9. In JDK 10, the INTERIM element is included which is stated always zero in JEP. This INTERIM element is reserved for future use, it also eliminated the rather odd situation we had in JDK 9.

5. JEP 307 [Parallel Full GC for G1]

The default collector was the parallel collector before JDK 9. G1 was designed as a low-latency garbage collector. G1 now has a parallel full collection and it is used to reduce differences in the performance profile of applications.

6. JEP 304 [Garbage-Collector Interface]

This interface is within the JVM source code to permit alternative collectors to be quickly and easily integrated. This interface cannot be used by the developers to control garbage collection. The best thing about this feature is that it will reduce the amount of work needed to do when migrating Zing to a new version of the JDK.

7. JEP 314 [Additional Unicode Language-Tag Extensions]

This new feature will improve the java classes and its related application programming interface to execute additional Unicode extensions of BCP tags. With this feature now JDK will support tags for currency type, the first day of the week, time zone and region override.

8. JEP 319 [Root Certificates]

This JEP feature will provide a default Certification Authority (CA) certificate in the JDK. These JEP root certificates feature is a beneficial addition by Oracle in JDK 10 as it ensures that OpenJDK binaries and Oracle JDK binaries are functionally same. With this feature of JDK 10 now critical security components such as TLS will work by default in OpenJDK builds.

9. JEP 312 [Thread-Local Handshakes]

This new feature is a low-level change in JVM but now it will allow the execution of a callback on threads without performing a global VM. This feature of JDK 10 will make it cheap to stop individual threads.

10. JEP 316 [Heap Allocation on Alternative Memory Devices]

This JEP feature will enable the Java Virtual Machine to use a heap that is configured to use different memory systems. As hardware technologies are evolving fast and are in huge demand, it has now become possible to use a non-volatile RAM that has the same interface and similar performance characteristics as a DRAM.

11. JEP 313 [Remove the Native-Header Generation Tool]

This feature of a continuation of the feature which was released in JDK 9 that feature started serious housekeeping of the JDK. Now it is no longer necessary to have a separate tool for generating header files as now it can be done by using javac.

12. JEP 296 [Consolidate the JDK Forest into a Single Repository]

This feature is an extension or you can say upgrade to the feature of JDK 9. As in JDK 9, there were eight repositories named as root, nashorn, jaxp, jdk, hotspot, jaxws, and Lang tools but in JDK 10 all these repositories are merged into one to make it possible to perform an atomic commit of inter-dependent change sets.

Divyesh AegisTechnologyApplication,development,Features,java,JDK 10
Java programming language is a computer language which was built by James Gosling at Sun Microsystems as a core segment for their Java platform. It is one of the most popular programming languages in use as it is especially used for client-server web applications. The JDK is an implementation...