Java is back on track. The first major release of the Java development environment since Oracle purchased Sun Microsystems became generally available today. Java SE 7 includes the culmination of years of work on the language, and it brings with it an updated XML stack, better support for other languages on the JVM, and improved Unicode handling.
Adam Messinger, vice president of development for Oracle Fusion Middleware, said that Java remains a dominant language worldwide. “Java’s been here at Oracle now about 18 months, and in that time we’ve tried to follow a really simple recipe for moving Java forward,” he said.
“We started with proven technology, added in a great community, and then finally added our own commitment and investment. We’re standing on the shoulders of giants. In the 15 years of Java history, we’ve been lucky to build up a giant base of 9 million developers. It’s the No. 1 choice by developers according to the TIOBE index, and more than a billion computers around the world run Java. It’s by far the most widely deployed language in the history of computing.”
The OpenJDK forms the basis for Java SE 7, marking the first time in history that an open-source version of the Java development environment has been used as the basis for a commercial release. Mark Reinhold, Oracle’s chief architect for the Java platform, said that the new open-source development process has been a success, despite a few bumps in the road, such as the Apache Foundation’s sudden resignation from the JCP.
“This is the first release we’ve done where most of the development has been done in the open on the OpenJDK, so all the code has been out there,” he said. “It’s true that the development process has not been as transparent as we or others would have liked, and we’re continually improving that.
“But we have some significant external contributions in this release. The fork/join framework, for example, comes from Doug Lea and his group of concurrency experts. We also have the new render pipeline for Java 2D, which brings a big performance improvement to 2D running on top of xwindows. [The pipeline] is from Clemens Eisserer and Dmitri Trembovetski. We also have a brand new sound engine written from scratch by Karl Helgason called Gervill, and it’s actually better than the proprietary one we used to have.”
The core changes to Java SE 7 were solidified last fall by Reinhold and the Oracle Java team. Among those changes are new support for elliptic curve encryption, Unicode 6.1 and JDBC 4.1. The rest of the Java SE 7 change set came under scrutiny last year, and had since been winnowed down in what Reinhold termed “Plan B.”
The original planned changes for the OpenJDK have been spread out across two planned releases of SE. The effort to include small changes in the language, known as Project Coin, was split between Java SE 7 and Java SE 8, which is scheduled for release at the end of 2012. Two much larger projects were removed entirely from the SE 7 release: closures and more modularity for the Java environment.
Project Coin is an ongoing effort to spread small changes throughout the Java language. From the description in the Java SE 7 change log, Project Coin’s first release in SE 7 brings capabilities such as “Strings in switch statements, try-with-resources statements, improved type inference for generic instance creation, simplified varargs method invocation, better integral literals, and improved exception handling.”
Oddly enough, one of the most significant changes in Java SE 7 is about languages other than Java. In modern server environments, the JVM has become an underpinning technology, especially since the last release of Java SE. In Java SE 7, the InvokeDynamic JVM instruction allows developers building environments for running other languages within the JVM to add dynamic language support to the platform with much less work. While this will undoubtedly help projects, such as Clojure and Scala, Charles Nutter, one of the primary developers of JRuby, said that this change comes after the JRuby team implemented a workaround that gives them access to similar functionality on the JVM.
Stephen O’Grady, principal analyst with RedMonk, said that the addition of InvokeDynamic is significant for many users. “We’ve been able to run dynamic-like languages on top of the JVM for a while, but making that a simpler, more straightforward process—that’s a nice feature. Anything to make Java that much more friendly and heterogeneous,” he said.
Reinhold has his own favorite portions of Java SE 7. He pointed out the new I/O API, JSR 203. “We finally have a real file system API that will let you do things like manipulate symbolic links and access file system specific operations, when you need to do that. That’s been a long time coming,” he said.
Another feature Reinhold is excited about is “The fork/join framework. This is a first step toward really enabling Java for multicore applications. Fork/join is one of many kinds of ways to deal with parallel computations and of expressing parallel computations in a way that will scale well to arbitrary numbers of processor cores.”
Trent Gray-Donald, IBM’s Java 7 technical lead, said that the Java SE 7 release is exciting for IBM as well. “We think it’s a great release with some strong technology. My favorite here is the asynchronous I/O, which definitely makes some huge performance improvements to Java. My second favorite addition is the powerful new file systems. Finally, as a VM guy, I’m impressed with the work that’s been done around the JVM languages in JSR 292. That has been very interesting,” he said.
Not all is rosy
Despite the lengthy development cycle and the hype surrounding the OpenJDK, the Java SE 7 release is not as groundbreaking as some previous releases. Reinhold said that “the transition out of Sun and into Oracle brought new focus and energy. This is not a revolutionary release the way some of our releases in the past have been. This is more of an evolutionary release.”
Perhaps that is why some analysts aren’t hearing too much excitement around the Java SE 7 release. John Rymer, principal analyst at Forrester Research, said that it hasn’t been at the top of his client’s lists of questions.
“Nobody’s talking to me about it. Clients aren’t talking about specifically SE 7,” he said. “I think it’s important, and I think we are glad that they are getting Java moving again, getting it back on track. They’ve got a bunch of work to do to continue to make Java relevant, particularly in the area of cloud, and they are keenly aware of this.”
Gray-Donald said that the new collaborations between IBM and Oracle will help to push the platform forward. “I think the major thing we’re seeing is that there’s a major surge of energy around Java again,” he said.
“IBM’s been participating very actively in all the JSRs for Java 7. We’ve been providing experts and scrutiny to ensure Java 7 is the best it can be. IBM has been with the Java space since the very early days, and we believe very deeply in the Java ecosystem. We’re deeply committed to providing the best development and runtime experience on the planet.”
Of course, IBM and Oracle are still fiercely competitive, but Gray-Donald said that a rising Java tide lifts all boats. “One of the big questions everyone has for me, is ‘Don’t IBM and Oracle really compete with each other?’ Yes, but it turns out we can collaborate, and we should collaborate, and we need to,” he said. “IBM has always been a believer in strong open standards. They create ubiquity and enable competitive innovation.
“This raises both product quality and capabilities. As a JVM guy I’ve seen this first-hand that we’ve had some amazing performance competition around Java. We’ve seen the HotSpot JVM leap over JRockit and J9, and everybody wins when this happens. It’s great to be a part of. We’re going to collaborate around things that strengthen that, and that mostly means the core class libraries.”