Thursday evening, hours after the last session of the conference, it is time to look back and reflect. Twenty years of Java certainly has been an interesting ride and in those years I probably visited about half of all the JavaOnes. A lot has changed though. Java started out like most inventions, being “invented” by accident whilst trying to achieve something else. I still remember when the language was introduced in my home country of The Netherlands. Sun organized an event at “Het Spant” in Bussum and I remember leaving the venue with an enthusiasm that I had not had since the release of the Amiga computer by Commodore. This was the new programming language to learn. A step up from C/C++ and very interesting because it abstracted away from the differences in operating systems and CPUs. The same code could literally run “anywhere”… as long as you had a virtual machine.
In the first couple of years I feverishly tried to find a virtual machine for the Amiga. Eventually some ports did pop up but the experience was never good enough to be usable. Part of why the Amiga was so great was its tight integration between the operating system and the custom chips that off-loaded the CPU by executing specific tasks very quickly. A virtual machine could never really leverage those chips effectively and the extra translation between bytecode and real instructions meant the end result was not very pleasant. On top of that it was buggy as hell. The Amiga had no memory protection or virtual memory, two other concepts that this virtual machine kind of relied on.
On Windows, which I was using in my part-time job to pay for my University study, the situation was a lot better. The language was usable, had a reasonable UI and there was even a decent IDE called Visual Cafe. A lot of things were still lacking to make the language usable though, compared to, for example Borland’s Delphi, which was pretty much the language to beat at that time. My career path then took a turn and I ended up in a research project at an insurance company where I was basically allowed to experiment with Java for a full year. Here I also got more heavily involved in open source and the first Java web frameworks started to appear. After buying us Solaris based SparcStations first, I quickly replaced those with custom PC’s that I hand-built at only 10% of the cost and 1000% of the performance. Linux and Mac virtual machines were both still lagging behind severely, but nobody was seriously using those anyway at the time.
At the end of the year I switched jobs again and started at the R&D department of a product company that, at the time, were developing a pure Windows product that they wanted to evolve. After an initial debate about Delphi vs Java the latter was chosen and development of a web based, modular “application server” started. In more than three years we built quite a system, reviewed the first Java EE specs and implemented them ourselves, only to throw the prototype away again because it was slow, cumbersome and lacked a few essential features that we needed and had already built ourselves. At that time already it was obvious that these specifications were designed to favor big vendors and lock in users to their expensive products and it wasn’t until JBoss was released that there was a decent, free, alternative.
Another career switch landed me a job at the company I still work for and this is where I also visited JavaOne for the first time. At that time the conference was still held in the Moscone and the opening keynote was already very exciting as Sun was not shy to announce all kinds of cool new projects and technologies around Java. We were just getting started with OSGi at the time and Nokia showed their first “smartphone” that could run a virtual machine. Yes, it was still a development prototype at the time, but it was a very exciting concept to be able to run the same software on a mobile phone and desktop. In the years that followed I was lucky enough to visit several more incarnations of JavaOne, up to and including the “last real JavaOne” at the Moscone. I vividly remember discussing with my colleagues at that time that this was a historic moment.
With the buyout of Sun by Oracle, something died in the Java community. Granted, Sun had never been great at opening up Java to real community involvement and had gotten into a big argument with the Apache Software Foundation about the “clean room” Java implementation they had developed in the Apache Harmony project. Initially promising to allow this implementation to run the TCK so they could call themselves a Java compatible virtual machine, Sun soon realized they had made a big mistake that could cost them their “mobile” business. Having a free alternative would certainly be tempting for some of their licensees which caused them to try and enforce “Field Of Use” restrictions onto the Apache Harmony project. Such restrictions however were incompatible with the Apache License and after trying to resolve the matter behind closed doors, diplomacy failed.
Oracle’s position was not different in this matter. What is interesting to know is that quite a number of developers on the Apache Harmony project were IBM employees. More or less overnight, they were all forced by IBM management to stop working on the project. No plausible explanation was ever published, but it was quite clear to me that Oracle used their power to force IBM to do this. The end result is that Apache Harmony was stopped and moved into the attic and the Apache Software Foundation decided to get out of the JCP and all the standards they were involved in as a protest. That was obviously a big blow as a lot of standards were backed by Apache projects at the time.
Oracle decided to co-host JavaOne with their own OpenWorld conference, pushing the Java sessions out of Moscone into some hotels. This was bad for a number of reasons. First of all the image of Java as an innovative language was totally killed by having a 10:1 ratio of “suits” running around boasting about their ridiculously priced bloatware that is forced onto customers that are in a strangle-hold because they realized too late what was going on. Secondly it had a practical downside as the price for attending the conference went up due to a total lack of hotel rooms being available at reasonable rates.
Oracle was never a technology company. Their keynotes got more boring by the year as they had no interesting announcements whatsoever beyond simply rehashing release notes of the next Java version and inviting sponsors that did boring enterprise projects. Fast forward to 2015 and that gives you a conference where both the opening keynote and closing “community” keynote were a complete waste of time to attend. There certainly still are people that are innovating around Java, I’m not denying that, but the big inspiration that Sun once was to us all is not there anymore and other inspirational companies such as Google are not even attending JavaOne anymore to present after they got sued about Dalvik.
Dalvik is incidentally the biggest mistake that Sun and then Oracle made. They should have licensed Java to Google. Any deal they would have made would probably have kept Sun in business for years to come and would have put Java in a position where it was totally ready and optimized for IoT and other embedded applications. Oracle is struggling to find “new” customers as their offerings have largely become irrelevant for new businesses and jumping on the cloud bandwagon is probably not going to save them in the long run.
That leaves the question what will happen to Java. Looking 20 years ahead I am convinced that Java needs a new home if it wants to survive. In one of this year’s sessions, a speaker explained he was working for a company that needed to support their software for a long time and that this posed issues with commercial vendors as they could never promise they would stay in business for so long. That prompted them to demand they’d open source their products or else they could not be used. Maybe it is finally time to do so with Java. Release it under a more permissive license, backed by a strong community that want to drive the language for another 20 years.