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.