Well, this last month has not been the best of all times for the Java community. Oracle, which has acquired Sun Microsystems a while ago finally began to work on its new and most important asset: Java.
Oracle, in many ways is very similar to Apple. They have a working strategy for their products, and they hold on to it. Whether or not you like it, they are good at making it work, and they make lots of money. Without a doubt, their product is good. Both Apple and Oracle provide solutions which are leaders in their domain. You’ll always find others claiming to do better, but you’ll rarely see them defeated in their main line of business.
My view of Oracle has always been that they are an enterprise computing vendor. They operate at large scale, and you do not see them trying to address the small vendor or user. Sure, they’ve done a lot to provide solutions to smaller vendors and consumers, but most of the time, they are not the first name that pops into your mind if you are looking for a small, and especially low cost solution.
I’ve got no intention of bashing Oracle here, after all it is their business model, and if I were to work for Oracle as a CEO (yeah, I can see that happening any day..) I would not have strong arguments for moving away from their current strategy.
However, now that Java is apparently being integrated into their existing strategy, everybody who has invested into this technology, or anyone who is planning to invest in it need to see the ongoing process very clearly. Oracle has recently made its intention about charging for Java Virtual Machine public. They’ve announced that there will be a pro/enterprise/whatever_you_call_it version of Java, with extra features. Those extra features are likely to be related to Oracle products, namely Oracle database servers, and some other Oracle middleware. Needless to say, if you’re not interested in Oracle’s offerings, you won’t care about these features. Oracle will surely do its best to make this JVM as stable as possible, so even if you’re not interested in other features, you’d still like to run your applications on the best JVM out there.
For that, you’ll have to pay Oracle. This is a huge, huge, change in the way things have been so far. You could download a rock solid operating systems, you could download the very same Java Virtual Machine that everybody else is using, and enjoy the same mature technology with everyone else, without paying a single dime. You could have stability, maturity, and scalability, and you would not hate to pay a dime. When Oracle begins charging for JVM, this will not be possible anymore.
If you do not want to pay, you’ll have to use Open JDK, an open source version of the Java Virtual Machine, which was released by Sun Microsystems, after Sun promised to make Java open source.
At the moment, the most significant announcement regarding this free option came from IBM. IBM announced that they’ll be focusing on Open JDK. It makes a lot of sense, since IBM has a very large investment in Java. They have lots of enterprise products using Java, and they have the huge Eclipse ecosystem, which is completely built on top of Java.
Oracle has already announced IBM’s commitment into Open JDK as loud as they can, since they want to ensure a very large community that Java is not going to be a completely proprietary product. There is a huge ecosystem around Java. It has been the number 1 language in academia both for teaching and research purposes, and there are lots of open source frameworks, and many companies who use these frameworks to develop commercial solutions. Java has been a big choice for cloud too, with both cloud infrastructure and cloud APIs offered in Java. Naturally, beginning to charge for something which has powered a huge software base for free for ages would not be an insignificant move. Oracle knows this, so they are pointing towards a free option backed by IBM and Google, and possibly others.
IBM has always managed to use open source in a way that would allow them to make money out of it. They’ve always had a great relationship with Apache Software Foundation for example, where they’ve provided resources for some key projects, and used the resulting code in their commercial products. They’ve chosen a model that works better for the parties who do not want to pay for Java licences. However, in supporting Open JDK, they are actually ending a long term relationship with Apache Foundation around Harmony. Harmony is the open source JVM developed by Apache Software Foundation, into which IBM has put resources in the past, and if I’m not mistaken, they’ve used the results in their products and/or solutions. Oracle however simply did not let Harmony get branded as a Java standards compatible JVM. They simply did not let the process go forward, with no explanation, at least I did not come across one.
So IBM announced it will play along with Oracle and focus on Open JDK. By doing that, in a way they choose to have greater control over the open Java Virtual Machine space, since investing in Harmony would mean an obligation to listen when Apache Software Foundation talks. Or this is the way I interpret their move. Oracle ended up happy, since they managed to point towards a free option with backing from names like IBM and Google, and IBM and possibly Google ended up happy, since they’ll still have an open codebase which they can use in their own business models, in the way they’ve done so far.
Again, I can not blame IBM for their choice, but this does not mean I’m happy about it either. The problem is, Open JDK, even if it has the same codebase with the actual Sun Microsystems JVM, has not been a major choice for Java projects in the past. We all used the Sun JVM all the time, because it was being used and therefore tested by a very large community. I can’t see the same kind of maturity in Open JDK, and even if IBM backs it up, I will have serious doubts about its scalability, reliability etc.
Inevitably, this will lead to issues in the Java space in the near future. Until Open JDK reaches a certain maturity, investing in Java will mean that someone will have to pay money at one point, if the application makes it to enterprise scale.
This does not work too well for the things I’ve been doing. I simply had the option of putting together a set of components which would go all the way up to cloud level scalability, without paying anything at all for software licences. When this situation changes, people like me, trying to do serious work with Java, will not feel as safe as they used to feel with their choice of technology. For tooling and non-enterprise uses, Open JDK can easily be an option, but if you want me to run Hadoop (a cloud storage and processing engine in Java), I’d rather run it on Sun JVM, at least for some time from now on.
The only assurance I can see for the Java community who’d like to have the same advantages we have now, is that Java is now too big to kill. There are a lot of opportunities around the open source JVMs, that at one point one large vendor or another would step up and support it to create, sustain and grow the open source model that has been very successful for many cases in the past.
Oracle’s control over is going to be an issue though. If they repeat the same thing they’ve done with Apache Software Foundation’s Harmony project, we’ll either have to use non certified Java Virtual Machines, or we’ll have to live by the choices Oracle approves. Due to its size, Java still has enough gravity to keep us around it, but we’ll have some muddy times ahead.