Hits
- The new try/catch - In Java, it's cool that you can catch individual Exception types. You may want to treat different Exception types differently. But let's be realistic: a good percentage of the time you end up treating all the Exceptions in the same way. And while it is considered bad form to just catch a superclass, I also don't like repeating those same lines of code in each catch block. As part of the COIN JSR, Java 7 introduces an "or" operator in the catch block, so you can have one catch block that catches, for example, IOException OR FileNotFoundException.
- The "Diamond Operator" - This will make for easier to read code and a few less keystrokes. No need to explicitly tell the parameterized types on both side of an assignment.
- Try with resources - Tell try which resources need to be closed before you user them. Could be a timesaver and help save some coding mistakes, since you won't have to use a finally block to close things like DB connections.
- The NIO updates - I guess that is cool and eagerly awaited. I don't think it will drastically change my life for what I do on a daily basis though. The filesystem provider for ZIP and JAR has a lot of potential though.
- Security updates are always welcome. Not sure how far behind the curve they are - this is the sort of thing that should be updated more often than major Java releases, IMHO.
- "Cloud" - Everything today is about the "cloud". But what does that really mean? Nobody knows. It's still a "nebulous" (pun intended) set of ideas, ideals, and technologies. It means everything, it means nothing. But instead of leading the charge to define how Java is all about the cloud, Oracle takes a back seat and gets their butt handed to them by Google, VMWare, Red Hat, etc.
- Closures - It's on the bill, but not for Java 7, it's destined (as of now) for Java 8. Too little, too late. The developers who are loving to hate Java right now, in favor of the newer languages like Ruby, Scala, Groovy, etc., aren't going come flocking back in a few years just because Java finally has closures.
- Consurrency and Collections Updates - According to Oracle docs, it's a "good start". But it's a few years behind languages like Scala that make concurrency a central issue.
- Modularization - it's on the roadmap for the future. What about OSGi? Isn't that already here and fairly well accepted?
- Invoke Dynamic - From what I can tell, average Joe Java Dev gets nothing from this. It is for dynamic languages running on the JVM. But languages like Groovy, JRuby, Jython, etc. are already thriving on the JVM, so not sure what the point is.
- Strings in switch statements - who cares? I tend to not use switch statements often. One time I thought I wanted to use Strings in a switch, but enums were the better choice anyways. This one has potential to get abused and end up with very un-OO code.
- Underscores in literals - thanks, because I know I was really hoping for this. On wait, no I wasn't.
- Unicode 6, IETF BCP47 and UTR35 - yawn! But then again I'm a stupid American who only cares about English ;-)
- The Swing and graphics enhancements - Java is still used on desktops!? Thought everything was server-side nowadays?


