It has been a tumultuous time for Java – the transition to Oracle ownership has been rocky, there has been JCP drama, the language is falling behind feature-wise, and it’s future on a increasingly important platform (OS X) was briefly looking bleak.
Oracle’s stewardship over Java has been the center of a lot of controversy lately, and at least some of it has been largely due to Oracle’s communication with the Java community. I think there is a bit of a culture shock for both sides in this transition – Oracle is used to tightly controlled, infrequent communication with developers, whereas the Java community is used to constant communication and openness from Sun.
I suspect over time this culture difference will become less of an issue – Oracle is already showing a little bit that they can learn to open up and communicate better, and I think the Java community will grow to accept Oracle’s communication style.
For me, however, there is a much more depressing situation going on with the Java platform right now – Oracle not only lacks a (public) vision for the future of Java on mobile devices, they are actively preventing others from making Java relevant in the mobile space through litigation and licensing terms.
First, where is Oracle taking Java in the mobile space? In my view, down a dead-end. At JavaOne, there was a lot of hype (as there was under Sun) about the number of mobile devices Java ran on. Unfortunately, JavaME lacks most of the appeal of the current generation of smart phone platforms – it lacks the features of iOS or Android, is more difficult to develop with, doesn’t target powerful smart phones, and has a much more involved deployment process. In my view, JavaME represents the past, and concentrating on past success isn’t a very good long-term strategy.
There is, however, a company doing interesting stuff with Java in the mobile space – Google. Android competes very well with iOS, is relatively pleasant to develop for, and has a good deployment model. It has its drawbacks, but it is far more interesting and relevant than JavaME. What does Oracle do? They sue Google.
Adding to this is the licensing spat with Apache Harmony over field-of-use restrictions in the TCK designed to prevent Harmony from being used in the mobile space. To be fair, this was an issue that Sun failed to resolve and wasn’t something that Oracle added in after acquiring Sun. To be less fair, when Oracle was just a member of the JCP and not the owner of Java, they strongly supported removing the field-of-use restriction – now that they situation has changed, however, they aren’t doing the very thing they originally supported.
So, to sum up my complaints as a member of the Java community – not only does Oracle (and to be fair, Sun before them) lack a coherent, interesting long-term mobile strategy, they are actively preventing others in the community for moving forward on their own. Will this kill Java? Doubtful – Java can remain viable and interesting without any sort of mobile presence. It certainly is missing a huge opportunity and it will be unfortunate if the millions of talented, motivated Java developers can’t apply their Java skills to developing compelling, useful mobile applications.