A launch event was held yesterday to celebrate the fact the Java 7's build 147 has become the first, and hopefully only, Release Candidate for the long-awaited JDK 7, which is scheduled for general release on July 28.
What is most significant about Java 7?
According to Mark Reinhold, Chief Architect of the Java platform group at Oracle its
"The fact that is actually shipping".
He say in the video below, which was recorded two days prior to the live event, that Java 7 has been almost 5 years in following Java 6 due to business and political reasons during which Java went into "hibernation mode".
He also says of Java 7:
it's not revolutionary; it's evolutionary.
Prompted by Adam Messinger, leader of the Java Development Team at Oracle, to discuss features of the release he leads with JSR 203, which he describes as the successor to JSR 41 which introduced non-blocking I/O and better channel abstraction. Now 203 provides a truly asynchronous I/O API which is important for high-end server apps and databases that need low latency coupled with high throughput and access to multiple channels.
Rheingold next points out that JSR 203 finally brings a "real file system API" describing existing Java I/O File as "pathetic" and having been done "in a bit of a rush". The new API is capable of creating symbolic links and is "clever" in that its layering enables platform-independent operations that enable closer integration with, say, Windows or Unix. Rheingold notes that while purists might say that this is a violation of the basic Java write-once-run-anywhere principle, he consider it is better to have these facilities for better integration with specific platforms.
Next John Rose, Consulting Engineer in the VM group in answer to the question "What's new in the VM", introduces InvokeDynamic, the first new instruction since the beginning of Java, which he admits will be of immediate interest to a very limited number of developers. He likens it to "pipe fitting" that will be of interest to people like himself whose role is that of "plumber".
InvokeDynamic performs a function that was left out of the original VM on purpose because it was Java-specific. Now with people building hundreds of different languages on the VM and running into optimization limitations this, instruction provides a new invocation mode that can be programmed to user-definable specifications.
Looking next at the language side, Joe Darcy Principal Engineer in the Languages Group introduces the small language changes referred to as Project Coin that intended to simplify common, day-to-day programming tasks.
strings in switch statements
improved type inference for generic instance creation ("diamond"),
simplified varargs method invocation,
better integral literals
improved exception handling (multi-catch)
The discussion then goes on to look forward to Java 8 and you can see it for yourself here.
At the launch event Mark Rheingold also highlighted the Fork/Join framework (JSR 166y) overseen by "concurrency genius" Doug Lea, who having resigned from the JCP continued to his work on the OpenJDK. This lightweight framework which features flexible and reusable synchronization barriers, transfer queues, concurrent linked double-ended queues, and thread-local pseudo-random number generators is seen a means of providing true parallelism on the platform.
According to Rheingold
"This is the first step towards really enabling Java for multi-core applications."
So today's Java is ready for the multi-core world we have been inhabiting for a while and it plays nicely with other JVM targeted languages. The only thing that spoils the present is the fact that we have had to wait so long for it to be delivered. Indeed it really is true to say that the most significant thing about Java 7 is that it is shipping... well almost...
At the turn of the year we always take a look at the dubious results offered by the TIOBE index. Don't get too hung up on issues of accuracy, this is more about the feeling of the programming communit [ ... ]