Skip to main content

Independence Day for Java?

Posted by cayhorstmann on September 1, 2010 at 7:11 PM PDT

I am on sabbatical in Vietnam right now, and today the country celebrates independence day. (On September 2, 1945, Ho Chi Minh gave his declaration of independence speech.)

I read James Gosling's latest blog and wondered whether there ever will be independence for Java.

As James reminds us, there was a time when Oracle wanted to set Java free. I had naively thought we were pretty much there, with a JDK under GPL. But the situation is much murkier, and it is not at all clear under what conditions one can rely on a freely available Java platform as the foundation of one's work. I read Neal Gafter's blog, in which he writes: “Even though I am a contributor to openjdk7, I do not have a license to Oracle's patents that are necessarily infringed by the use of the openjdk7 source base.”

Presumably, there is a process by which Neal could get a patent grant, by getting a license for the TCK, and making his implementation pass it. However, a TCK doesn't yet exist for JDK 7, and the license is only good for GPL implementations that are “being substantially derived from OpenJDK Code”, whatever that may mean.

What's all the fuss about? First off, why GPL? That was so Microsoft couldn't “embrace and extend” Java. Fair enough. But why isn't there a straight patent grant that goes with any GPL implementation? As far as I can tell, Sun wanted to have their cake and eat it too: benefit from open source and keep its mobile phone revenue. That's why we have the “field of use” restrictions.

For a while, it worked. Sun milked its Java ME platform for what remained of it in the feature phone business, ignored Google's “embrace and extend” of mobile Java for smartphones, and enjoyed the benefits of broad community involvment in the Java Community process. I know that many people complained about that process, and it had its problems, but it also delivered results. With one exception: the absence of a JSR for JDK 7.

I think it is no longer working. The Google lawsuit has brought the contradictions out in the open. Java is controlled by a single corporate entity, in much the same way that .NET is. Yes, you can make a GPL clone of JDK 6 that runs on desktops and servers. That's nice. But if you want to run Java on tablets, smartphones, or embedded devices, you'll pay. If you want to use a version of Java that is not “substantially derived from OpenJDK Code”, you'll have to negotiate a TCK license, which Oracle may or may not grant.

For a free software developer, what does that mean? We can almost certainly count on access to a free JDK 6 implementation. It's in our interest to get at least one such implementation, maintain it on free operating systems, and innovate on top of it, independent of Oracle and the JCP. However, there is no way of knowing whether language, platform, and VM innovations, if and when they do materialize, will be available freely, so we shouldn't count on it. As Neal points out, there is minimal incentive to be involved in their development. Overall, that is not so different from what one gets with .NET/Mono/C#.

Of course, Oracle may not care, and laugh all the way to the bank. Then again, how much mirth can there be? Java ME is a lost cause and revenue will dry up soon enough. The Google lawsuit may or may not bring in a bundle, but it may well take a while. There is no other substantial Java licensing revenue outside the mobile/embedded space, and the GPL JDK makes it hard to rustle up any.

So, maybe Oracle will see the light and set Java free? In the manner that they supported in 2007, with an independent foundation, with development funded by multiple parties? That will be a day to celebrate—independence day for Java.



Related Topics >>


"ID" was GPLv2+CP

Hello Cay, AFAIK, the patent grant is implicit on GPLv2. Hence, you sit under the author patent umbrella when doing derivative works. There are some known limitations to "implicit grant" in Europe, but actually the problem is only theatrical as at the same time, patent are not valid on software :) This means here in EU, you can’t sue somebody for software patent infringement. So, the "independence day" has already happened on the code but not the "brand". GPLv2+CP licence enables anybody to get OpenJDK, fork&modify it and redistribute it under whatever name they want. The only limitation I know is that if you want to claim "Java" compatibility, you have to pass the TCK that is still under Oracle hand. To me this is like XFree vs ... if at a point of time, Oracle does not move Java enough faster or is not enough open, a fork can become a good opportunity. And you know what, fork is already there: IcedTea. It is Oracle interest to keep this asset alive and kicking, but if the community feel that the "" is not moving fast enough, there might be a switch to a "" ;-) In a switch scenario, there would be an opportunity for a community to specify the whole specification process in an open & libre mode. About the Oracle patent suit, the impact is not only Google but all the VM implementers (but MS that got an umbrella thanks to the fee payed to Sun). So, from Mono (umbrella patent from MS "own" patent, but not from Sun's) to Parrot ... Oracle can hurt any of them. I would be interested to see what would MS do if Oracle sue Novell on Mono. Any "Java like VM" could also be impacted as long as it does not hold patent grant from Oracle (implicit or explicit). But to me, any OpenJDK fork are safe. By the way, by forking the OpenJDK, the Android team have a way to block further Oracle litigations (and call for a mitigation). The job is to jigsaw android into two part (one that can claim OpenJDK fork and that will be under GPL+CP and the other that will be in the existing licence and contain Android specific API). This will be a tough work and need to be double check with lawyers but it should be a safe harbor from then on. And at the end Oracle could be satisfied as they could claim Android phones are Java compatible ;-) Rgs, JB

OpenJDK is not only GPL

I agree, that the situatrion of OpenJDK could be better.
But you write only, that OpenJDK is licensed as GPL:
"I had naively thought we were pretty much there, with a JDK under GPL."
"First off, why GPL?"
"[...] and the GPL JDK [...]"

That is not really right. It is under the GPL + GNU Classpath exception!

The GPL allows it only to run the code together with other GPL-compatible code.
The LGPL allows it additional to compile any LGPL-files dynamical against any other licenced file.
And the GPL + GNU Classpath exception allows it additional to compile every file statical against any other licensed file.

But that license is thanks to Sun, not Oracle.
Currently Oracle let some parts of Java going on (still paying for the developer) and other parts are going in the wrong direction (sue Google).
But they do nothing better, then Sun have done.
In germany there are some people very unhappy with Oracle, as I have written at:

It could be so easy to make the Java-community happy:
  • publishing OpenJDK under additional licenses (for example: Eclipse License and Apache License, so that the Apache-Harmony people are happy)
  • publishing JavaFX under the same license like OpenJDK
  • open the process of OpenJDK and JavaFX more up. Make it more open then with the Java Community process. More like Novell have done with OpenSuse and RedHat have done with Fedora.

  • But what have Oracle done?
  • it seems the Java community process is frozen
  • sue Google and unsettle with it the whole Java-community

  • I don't like Oracle. And I don't think that this will change after JavaONE 2010.

    This would be humble but...

    If I remember correctly Oracle payed around 6 billions for Sun which was essentially for Java and a little for Solaris (I can not believe that Oracle needed MySQL or the Sun hardware business). If Java would be given to an independent foundation this money would be essentially lost. Larry then should take his fastest sailing boat to a small island in the middle of nowhere so that the share holders will not find him for a long time :-)

    But seriously: To compete, Java needs a clear direction and therefore a strong leader. Not a kind of JCP on steroids. And Java needs legal protection otherwise every big company will make their private fork. Java is too important for their business. Then we would have Android Java, IBM Java, SAP Java...
    Which entity could afford to target those companies legally, when even Sun shied away from suing Google when they started this game?

    I agree with you in that a

    I agree with you in that a strong direction for the language is a good thing. But ask yourself why there are so many versions of C and C++ but we still have a C and C++ standard that everyone who has no specific requirements (usually) adheres to. There are good reasons why embedded java and java-as-scripting-language (your SAP java) deviate from the standard. This is what happened with Android, and it is a good thing for the language.

    What Oracle is doing right now will end up damaging the language and its reputation. Next time a language evaluation comes up, people might start thinking about whether they really need to be on this platform. Right now, mono is equally open and, perversely, less patent encumbered than the JDK (though I doubt many people are doing web programming with a pure open source mono stack right now).

    I know I'm looking very hard at my choices of languages and I'm sure plenty other people are. The harder you push, the more it slips away...

    Java portability versus C++ portability

    The level of standard adherence in the C++ community works well for the amount of portability that the C++ language is intended to achieve. C++ was never intended to achieve "write once, run anywhere" portability, so having the option of using non-standard C++ for specific requirements works well. Java, on the other hand, was marketed with a very strong portability goal in mind, and as such it requires a lot more protection of the platform to achieve that goal. (And I suspect a lot of Java's popularity is due to "write once, run anywhere" portability, becuase Java is the primary language where you can write code and not have to care about the platform on which the code is deployed.)

    In what way is Android a good thing for the Java language? It's certainly not good for "write once run anywhere" portability. Can I download a useful Android app and run it on my desktop? No! Can I get full JRuby functionality on Android? No! At least not without them having to go through several hoops because of limitations of the Dalvic VM compared to J2SE. Simply put, Android sucks for "write once, run anywhere" portability.

    To be fair, I can't run J2ME MIDlets on my desktop either. Additionally, the introduction of new bytecode features in Java 5 caused huge portability problems as people were reluctant to upgrade their JVMs past JDK 1.4 for years. Many developers couldn't take advantage of generics in their code for years because there was no officially supported way to generate code for JDK 1.4, even though generics didn't require any new bytecode features. So some of the portability problems have been Sun's doing.

    Maybe "write once, run anywhere" portability is unachievable. At the very least, that's a discussion we should have before declaring "Android is a good thing for the language." (Why was Android a good thing for the language anyway? Is it anything more than Android's ability to attract eyeballs to a Java-like platform?)

    Now, patent litigation may not be the best way for Oracle to achieve "write once, run anywhere" portability in the Java ecosystem (rigorous trademark protection may be better), and Oracle's motive may not be to protect "write once, run anywhere" portability, but that remains to be seen in the requests Oracle makes of the court, and the conditions Oracle makes to have a settlement.

    WORA must be intended as

    WORA must be intended as "free", that is it's not a black/white concept. 100% WORA is difficult if not impossible to achieve in most contexts, but for sure Java is way more portable than C++, as you said. The same can be said for Android. It's true, you can't directly port most of the existing code. But there are still large portions of existing libraries and code that can run as they are with Android; other stuff can be ported with some static bytecode manipulation. In a few words, you can reuse more Java stuff with Android than with JME. Of course, I think it could have been done much better and since Google decided to go its own way made things less than optimal for us developers. I repeat, I don't have the crystal ball and don't know what are the true Oracle aims here (beyond money); but there is a possibilty that getting to a deal, the two corporates could make Android closer to Java and the life easier for us developers.

    What does WORA mean on a smartphone?

     We all understand WORA on the desktop or server, but what does WORA mean on a smartphone? Look at the BlackBerry. BlackBerry programs are written in Java. Can you run a BlackBerry program anywhere else? Of course not--they use a library that is completely tailored to the BB infrastructure. Ok, you can run a Java ME program on a BlackBerry. But that's not a big deal--the Java ME API is puny and not very useful for a smartphone. I don't know of any serious BB app that is written in Java ME--they all want integration with the device and choose the BB API. 

    So, yes, Android could provide a Java ME subsystem, just to keep the peace, but it wouldn't make Android programs WORA. Really, I don't understand how Android is so very different from BlackBerry--except that BlackBerry has a Java license. Maybe WORA is a red herring.


    Again, it's a matter of the

    Again, it's a matter of the context. We agree that WORA on the server works; I say that it also works on the desktop, with some more difficulties (e.g. integration with some specific o.s. features, look and feel). It's mostly an issue with Mac OS X. I've got customers with some very large industrial applications running in applets and they're pretty happy to develop once and deploy to Windows and Linux. In the mobile world, things are very different since the new generation smartphones have developed not only their own widgets, but the overall workflow paradigm (see the Android Intent/Activity model). If iPhone was open to Java, I suppose similar things would be true. It's clearly an innovation and it's specific for Android, so trying to catch a common ground for portable API across JME, BlackBerry, Android etc... is probably a bad idea. So, the UI must be designed ad-hoc. In some cases, you have apps that are just clients to remote services, and this means that you probably redesign/reimplement them from scratch for every target o.s. In other cases there's a relatively complex data model behind (e.g. my app) and this could be ported as is. For instance, if JME was Java 5 compatible I could happily reuse the model part for a JME version of the app. Also, that model part is running in a JSE desktop application and a JEE server-side application. So, assumed that WORA can't be in most cases something that applies to 100% of a project, it can still be there for relevant parts of it.

    Java SE, Mono?!

    To my knowledge, please correct me if I am wrong, Mono is only free from Microsoft patents if used on Novells Suse Linux due to a Novell - Microsoft agreement.
    Otherwise, if the platform would make huge amounts of money, like Android does, you can be pretty sure that Microsoft would stop that in their own financial interest.
    In the case of of Java, Java SE is GPL so what is the problem?
    The Google Android thing is no Java (Google says), but Google obviously tried to tap the large crowd of Java developers for their Android business and create their own standard independent from Java
    Java ME was the only way for Sun (now Oracle) to get some money from Java. And Android will stop this source of money soon. Therefore I guess Oracle wants Google to license Java and pay. I mean, we should agree that it takes many resources to provide JavaSE and EE. Many software engineers have to be paid and much equipment (for testing) has to be provided.
    Without joining a side in this dispute of multi billion dollar companies (both!) struggling for their money, we should all agree that companies are no charity institutions. They need to make money.
    If Java would be "freed" as Mr. Gosling suggests, the institution that manages Java, beside of providing a strong lead, would also have to collect much money from the industry to evolve Java further and pay their engineers. So Google should have to pay anyway. It must not be that someone forks Java in their private interest.
    C and C++ are bad examples for comparison as they have nearly no standard libraries beside the pure language. But the vast platform neutral libraries are the quintessence of Java.

    1) Mono, with its basic

    1) Mono, with its basic libraries, really does have a pretty straightforward patent grant. See and Of course, there are all sorts of issues when you want to use WinForms etc., or use it for an embedded product. Just like Java :-(

    2) You ask, "In the case of of Java, Java SE is GPL so what is the problem?"  I had the same question. The problem are the patents.

    3) Sun/Oracle have only themselves to blame that Android is eating Java ME's lunch. They should have developed a smartphone strategy instead of letting ME wither on the vine. If they actually manage to kill Android now (and that's a big if), then Apple and Microsoft will have the last laugh. How is that good for Oracle and Java?

    4) I absolutely agree that Google should pay their share, as should IBM etc. That would presumably happen in an independent consortium, and hopefully in a more equitable way than the roulette wheel of the patent system.

    Cay, I don't think that

    Cay, I don't think that Oracle wants to kill Android. They just want to have a part of the profits, and possibly have a political message such as Google licensing Java for Android. This, if happens (and of course it's just one of the possible endings) would be good for Java. In any case, I don't think that Apple and Microsoft have anything to laugh.

    As for Mono, I frankly don't understand the point. Mono is released through a combination of licenses, and the essential parts are under GPL/LGPL. Thus, same stuff as OpenJDK, and same patent protection. If GPL patent protection works for Mono, then it works for OpenJDK too; if it doesn't for OpenJDK, it doesn't for Mono too. And for the Microsoft Community Promise, well a promise is not a legal thing, right? So it counts as zero. Also considering that corporates can be bought by others and change their politics, such as Sun by Oracle.

    Which Java would Google

    Which Java would Google license? Java SE? There is a lot of stuff that Google took out because it makes no sense in a phone, and you aren't allowed to subset SE. So they'd have to license Java ME, which adds no value to Android. I guess Oracle could force a useless/harmless "run a Java ME app" feature, like with BlackBerry. That might indeed be a way out, and I'd be happy if that settled the fight. 

    As for Mono, I was a bit surprised to find out that they have a better patent protection story than Java. The Community Promise is legally binding, can't be revoked, and you don't even need to fill out any paperwork. At any rate, my point was that Java isn't as free as I had naively assumed, and that--give or take a few details--its status seems comparable to that of Mono.

    Project Jigsaw could very

    Project Jigsaw could very easily make it sensible to define sensible and standard subsets of the Java SE platform. With the growth rate of the Java SE platform, it's something we needed long ago.

    Re: licensing, I suppose that

    Re: licensing, I suppose that if they get to a business deal, there are no technical issues for the licensing. They could do whatever they want: license SE with the allowance for subsetting/supersetting, or they could even jointly create a new Java Android Edition. Re Java isn't as free as we had naively assumed, it is one of my thoughts too, but it fails a consistency check. I mean, me, you and other tech guys could be have been fooled up. But what about others? The FSF? Is the GPL seriously flawed? What about Linux, at this point? Some big governments, such as the Brazilian one, who heavily went the open way also to stay free of the royalties hassles, did choose Java as their strategic technology and built large facilities on it. I can't imagine that they didn't first go through legal advice. It's that "free" that we should define better. It's not a black-and-white concept, but a set of shades of gray. As far as I understand, nothing changed if one wants to fork the OpenJDK. The GPLish freedoms are still there. What I see is that it's possibly a problem to create a Java-like thing from scratch. To me it seems a problem more for large corporates such as Google than for the rest of us. In any case, we don't ever know whether Oracle will win and if the patents they're claiming are claimable...

    bad timing

    The L/GPLv3 was designed primarily to address this new type of shenanigans. Unfortunately it was still in draft as Sun was making its decision. For those who question the reason for creating the new v3, here is a shining example.

    I know that GPL3 has got

    I know that GPL3 has got better patent protection, but I'm not sure it is relevant with this kind of patents stuff. In any case, the Linux community, headed by Torvalds, refused to adopt GPL3 and they're still running GPL2. So? Are they naive? Is Linux at risk?

    Linux may be at risk

    Actually the GNU GPLv3 specifically grants patent exemption, exactly the issue in this case. As for linux... unfortunately so many contributors published under GPLv2, without saying any later version; it would be very difficult to gather all of their consent to change it. I would hope if things became hot over patents with linux, the authors would agree to the change.

    Cay, I don't think that

    ** duplicated post killed **


    2. One should stress that the Oracle/Google dispute is not about Java. It is about Android that currently uses an identical syntax (maybe until its own developer base is large enough).

    3. Google developed a smart phone strategy earlier because Erich Schmidt from Google was in the Apple board when the iPhone concepts were made. I guess he knew the details about the concepts of modern smart phones way before anyone else in the rest of the industry (until Steve Jobs learnt that Google also has started to develop a smart phone).

    I would prefer to see the thing as what it is: One of the many patent lawsuits always going on. No commercial developer would stop to develop for MS-Office or MacOSX just because a patent hassle is currently going on. The companies will manage this (pay, if the patent is regarded as valid). See the Oracle/Google thing the following way: One multi billion dollar company haggles over an adequate price for a Java license with another multi billion dollar company.
    I guess that Google earns so much money from selling data of other persons and other persons work that they will be able to resolve this. :-)