Friday, November 2, 2012

Updates in Java7 (Dolphin)



Java7 update came out on July 28, 2011 but still a lot of programmers do not want to shift from the Java6 to the Java7 version. Well, extensively using Java from the last couple of months, I decided to write about the update.
Java7 also named Dolphin, is the outcome of the OpenJDK 7 project. Java7 has many new feature improvements. Many of its milestones and builds have different names like Project Coin.
Feature updates:
1.      Virtual Machine: Da Vinci Machine Project
Multiple Language support: The JVM will now have architectural support for languages other than Java. This move is done to extend the JVM and portability to different languages. This is definitely a move to expand the future JAVA ecosystem.
Strict Class file Checking: This was introduced in SE6. There are major improvements in this version like type checking verifier. Also, improvements in backward compatibility with old inferencing verifier.

2.      Lang: Project coin
Lang is one of the most extensively used Java libraries. There are a couple of small language enhancements which are significant for programmers.
-          Strings in Switch statement
-          Automatic Resource management in try statement
-          Type Interface Improvements for generic interface creation (diamond)
-          Binary integral literals and underscores in numeric literals
-          Simplified varargs method invocation
-          Precise Exception throwing for multi-catch

3.      Core:
API modifications to class loader for Deadlock fix: Custom class loaders that do not adhere to a acyclic class loader delegation model can be deadlocked by this modification.
Method to close URLClassLoader: A new method to close the files which are kept open by the URLClassLoader.
Concurrency and collection framework: A improved framework lightweight fork/join framework, flexible and reusable synchronization barriers, transfer queues, concurrent linked double-ended queues, and thread-local pseudo-random number generators. These include changes in the java.util.concurrent package with classes like ForkJoinPool, Phaser, TransferQueue, ConcurrentLinkedDeque, ThreadLocalRandom.

4.      Internationalization:
Unicode 6.0: This is upgraded support for Unicode character set to 6.0
Locale Enhancements: Locale enhancements for Chinese, Hebrew, Uzbek and Latin characters.

5.      I/O and networking
New I/O APIs: New I/O APIs for filesystem access, socket binding, configurations and multicast datagrams for NIO.2
NIO.2 filesystem provider for jar and zip extensions.
Upgrade to the networking configurations using the Windows Vista IPv6 stack.
Support for transport layer security version 1,2

6.      Security and Cryptography:
Elliptic curve cryptography: A portable Elliptic curve Cryptographic implementation for all java applications to use them directly.

7.      Database Connectivity:
One of the most important use cases of Java that is DB connectivity gets a JDBC 4.1 upgrade.

8.      Client
XRender pipeline for Java 2D: 2D graphics made easy with a new Java2D graphics pipeline based on X11 XRender extension which harnesses the power of modern GPUs
New Graphic platform APIs: New features for platform include translucent and shaped windows and heavyweight/lightweight component mixing.
New Look and feel for Swing: Nimbus like new look and fell for the Swing package.
Swing JLayer component: Addition of new SwingLabs JXLayer to decorator platform.
Grevill sound synthesizer: New and improved sound synthesizer created as a proposal for the Audio Synthesis Engine Project.

9.      Web
Crucial Update XML stack: The extensively used XML stack for the web framework gets an update here to the most stable version.

10.  Management
Enhanced MBeans; Handle your CPU loads and notifications better by enhanced MBeans. MBeans report recent CPU load of the whole system, the CPU load of the JVM process, and to send JMX notifications when GC events occur.

Apart from these there is something that you can expect from JDK8 like more enhancements to JVM for modular programming, Annotations, Language support, project Lambda, Modularization which focusses on JDK, Swing application framework and JDatePicker components.