Java 7 is finally nearing general release, but I have to say that I’m fairly unimpressed by the features being delivered considering Java 6 was released 4 1/2 years ago. It’s already been delayed for years, and what is there to show for it? The time between Java 6 and 7 is almost a third of Java’s entire life up to this point (Java was released in 1996). And nothing major is coming, despite the advancements made in .NET, and the general productivity improvements that have been made in more current languages.
Java is hardly a cutting edge language, and Sun was generally quite conservative with language changes, but the language’s progression seems to have stalled in a major way. The most useful features that were proposed for Java 7 like lambda support, and language support for collections has been deferred to at least Java 8, and even then I doubt it will be delivered when promised (late 2012) considering how long they have taken to deliver a mediocre update in Java 7.
So what did make it in? Generally, it appears like housekeeping items like updating the XML stack, JDBC versions, etc. made it in, in addition to some minor syntax improvements like improved numeric literal support (how long could could this honestly take), automatic resource management, exception multi-catch and diamond-syntax for generic instantiation.
Fortunately, InvokeDynamic support is making it in which keeps the release at least somewhat significant, since this is a boon to developers of dynamic languages on the JVM. The JVM is turning into a very nice platform for various dynamic languages, and it’s nice to see them deliver something language developers have been clamoring for during the last several years.
Other than that, the most useful things coming in the release are probably strings in switch (really though, big deal!) and some concurrency and collections updates. It looks to me like we’ll be waiting a couple more years for any improvements that actually help developer productivity, like closures/lambdas. I’m not sure why Oracle hasn’t been able to get their act together with this release, but it’s unfortunate considering Java will continue to be one of the few go-to languages for business applications for quite a while yet.
For details on everything that is included in Java 7 you can head to OpenJDK. You can check out a preview version of JDK 7.
5 thoughts on “Java 7 is Pathetic”
On the outset, Java 7 does look pathetic indeed given the long development time.
However, there’s a little more to it.
Numerous important things that were developed for Java 7 (escape analysis, compressed oops, modular/consumer JRE, etc) have already been back-ported in Java 6. The various updates to Java 6 were at times much more than simple bug fixes, and could maybe have been called 6.1, 6.2 etc.
Another major Java 7 effort, was open-sourcing the JDK. This too has been back-ported to Java 6 (actually, there never was a real Java 6, it was Java 7 modified to be a Java 6).
Then, Java 7 as it’s released now was really a compromise where they released the things that happened to be finished (this doesn’t make it less disappointing, but it at least explains why this release is lackluster).
Large parts of things that had been in development for Java 7 all that time, are simply delayed a little to Java 8. Since they have been worked on for some time, it means Java 8 can be released relatively quick after 7.
So to sum up, it’s not that the Java teams have worked so long on so few things. One part had already been incrementally released, one part is going to take a little longer and then yet another part is what has been released as Java 7.
You make some very good points that are easy to overlook. Work done on the platform and JVM are often overlooked but it is often on the cutting edge of JIT compilation and optimization features.
My main concern is that so the features that I think would really help developer productivity (lambdas/closures, etc.) got omitted and it’s a shame since as you mentioned, Java 6 was not much of a release.
I am looking forward to Java 8, but it’s too bad we will have to wait longer for features that the .NET crowd and others have had a chance to use for years.
I think u forgot NIO2.
Its also significant contribution to NIO
Comments are closed.