You know, half the world is stumbling over each other trying to point out that Oracle is alienating the open source community from Java. And maybe they are, but until now, for me, it is still undecided.
Yes, Oracle did make Apache leave the JCP. But Apache was the one mixing the JDK7 specs with the fact that they wanted Harmony to be put through the JVM certification. I understand Apache, but I also understand Oracle for wanting to move forward. And for all the negative issues that people like to mention, Oracle also scored some points with me for getting Java on the Mac rolling again (they would score big time with Java on iOS, but that is a different matter and probably biased by my latest Objective-C experiences). And Google with Android, well, would the Android JVM pass the JVM certification? Most likely not, so legally it should not be called Java. And just like Microsoft wasn’t allowed to “abuse” Java many winters back, neither should Google.
For now Oracle is getting the benefit of the doubt, let’s see where they are taking it. The soup usually isn’t eaten as hot as it is served. [freely translated Dutch saying.]
That doesn’t mean that one should be oblivious to the negative points. What if Oracle is leaning too hard on the open source community and they are going elsewhere… Where would they go? DotNet? It’s not like Microsoft is much better than Oracle. PHP? Come on, PHP is just a scripting front-end for a bunch of Unix system libraries. It needs some serious growing up to be able to do full scale software development. Scala? Python?
Ten years ago Java became popular, and the moment I saw it I knew that this was going to be the next thing. DotNet was clear cut as well; based on Java, backed by Microsoft, no way that would fail. But I have not seen any new language / platform that gives me that same feeling.
It’s that combination of expressiveness of a programming language, but at the same time its readability, the way the code is structured, the software is packaged and deployed. Being more compact doesn’t make code better readable. And the Java packaging and deploying; copy was back! No more registries! Take DotNet; there is no enforced relation between the package & class name and the location of the file & the file name. Now don’t tell me that that is an improvement in readability of a source code tree! (And was the binding ever a annoyance in Java?)
My point is that I’m not having that warm and fuzzy “ohhhh” feeling on any alternative. It’s not like Java is perfect; those setters and getters deserve some attention, and the single method anonymous inner classes as well. But these things are fairly easy fixed. So right now I’m staying put; taking a peek here and there (like iOS and Objective-C lately) and savoring my Java in the meantime.