On the morning of the JFall I find myself pondering about Java, chatting to the people in the community does that. And I find myself wording to my fellow Javagians the feelings I have been getting lately. Pure from a technical standpoint Oracle’s stewarding of Java has been good. They have picked up the language and platform, pushed it into a new gear; lambda’s were added, JavaFX is maturing nicely, and Jigsaw is on track. One cannot possibly complain about what has been happening to the product Java.So why am I worried?
Well, Java is not alone out there. Things like Ruby and DotNet are slowly but continously nibbling away at it. And the most important thing keeping Java the #1 choice is its user base. And that is where Oracle is missing the point over and over again. Most recently the dismantlement of the evangelist team, but we all remember the OpenOffice fiasco or Hudson. Oracle is not getting that in order to grow a tree, you need to nurture its roots. And Java’s roots is its community. Java sky rocketed the concept of open source, and a lot of all the good things in software development nowadays grew from there; dependency management, web and application servers… Too much to name. (In comparison usually the corporate invented concepts were very flaky, like EJB2.)
But there are more subtle issues as well. By now we have all but forgotten about the Oracle – Google lawsuit over Android, but it is still happening. Android represents a very large part of where Java is used nowadays, and it is stuck on Java 7. Ah well, you say, just roll in retrolambda and you’re good. Actually that got me started on this though train a few weeks back, when I retrolambdaed JFXtras. As great and impressive as retrolambda is, it should not be necessary. Android should be on Java 8. And not for long Java 9 will come around, and Android will move even further away. Ah well, you say, Java 9 mostly is about cutting it up. Well, yes, but in order to do that A LOT of packages will be renamed and moved into the public API of Java. When libraries will start using those public API, there is no back porting.
And Oracle won’t ease down, it wants to excises full control. The product Java will be assimilated and honed and tuned and improved and polished until it is glowing Oracle red. There is no room for community or cooperation.
Google (or IBM) should have bought Java.
Update 2016-02-09: how easily things can change. The announcement a while back that Android N will be based on the official OpenJDK instead of Apache’s implementation basically removes a important part of my worries. I waited a bit to see if it turned out to be a hoax, but it seems that Google decided to be smart and use Oracle’s Java libraries. This means Java 8 features will become available on Android, and probably also an official port of JavaFX. We always have to see and wait, but I -for one- am one happy developer. (insert clappy hands here)