Code Europe – the biggest tech festival in Poland
Java programming has been around for many years, in fact this year it celebrates its 26th birthday, over 2 decades of continued innovation. March 2021 seen the release of Java 16 (JDK16) by Oracle to all developers which is a starting point for Java 17, due in September 2021. Java 17 which will be a long term support (LTS) release.
Java 16 has offered some new and interesting features, seventeen in fact, which include, a strong encapsulation of JDK internals by default, foreign linker API and elastic metaspace capability. It is no secret that Java has continued to remain flexible by adapting to the changing technology landscape while remaining platform independent, these new changes only replicate these grounds and benefit its performance. There has also been no sacrificing of security in its approach to accelerating innovation and reliability by retaining backwards compatibility.
Java 16 has seen the addition of an elastic metaspace capability. This returns unused HotSpot VM class metadata (metaspace) memory more promptly to the OS, it also reduces metaspace footprint, simplifying metaspace codento reducing any militance costs. Metaspace has always had problems with high-heap memory use. Java 16 calls for replacing this existing memory allocator with a buddy-based allocation scheme, which will be much more reliable and efficient. The buddy allocation offers full exploitation of the elasticity, allowing the metaspace memory to be arranged into uniformly sized granules that can be committed and uncommitted independently of each other.
One of the most widely anticipated features of this release is the providing of record classes that act as transparent carriers for immutable data. These records can now be considered as nominal tuples. Provided record classes reduce the ceremony of Java by cutting boilerplate code. Additionally, one of the main aims of this new release is also to help developers focus on modelling immutable data rather than extensible behaviour, by devising an object-oriented construct that expresses a simple aggregation of values. This allows developers to make the most of JDK 16.
Unix-domain socket channels has also been included in this drop of JDK 16. These are added to the socket channels and server channel APIs in the nio.channels packages. Unix-domain socket channels will have the same function as existing TCP/IP channels in terms of read/write behaviour, whilst also having similarities with old connection set up’s and acceptance of incoming connections by servers. This Unix-domain channel also offers more security and efficiency than previous TCP/IP loopback connections for local, inter-process communications.
Java 16 has presented endless new and exciting developments which also includes a foreign-memory access API along with a jpackage tool for packaging self-contained Java applications. Again, Java programming language continues to expand and develop for the greater good of technology and we look forward to seeing what new ideas and features JDK 17 will present us with in September.