I’ve attended three JavaOne conferences. I have Java T-shirts, little Java toys, notebooks, pens, pins, mugs, you name it. Books galore. Somewhere I have a picture of myself and several other EMC employees posing with the Java mascot, grinning stupidly. I’ve written more Java code than I care to remember, and evangelized it over the years to many audiences.
So why do I feel like I just got stood up on prom night?
Because I stopped and read the licenses, that’s why (or, technically, someone else read them, and clued me in).
Take a look at the JRE license, for JDK 1.5.0_14 (emphasis mine) :
The use of Software in systems and solutions that provide dedicated functionality (other than as mentioned above) or designed for use in embedded or function-specific software applications, for example but not limited to: Software embedded in or bundled with industrial control systems, wireless mobile telephones, wireless handheld devices, kiosks, TV/STB, Blu-ray Disc devices, telematics and network control switching equipment, printers and storage management systems, and other related systems are excluded from this definition and not licensed under this Agreement.
I have nothing against Sun’s desire to make more money off of Java. Sure, it hurts me, as a developer of “function-specific software applications,” (storage management, now explicitly called out), but it’s their right. It’s a free market, and my development team can compare the benefits of using Java against the cost (and perform similar evaluations with .NET, C++, and who-knows-what-else) and decide what to use. That’s fine. (For what it’s worth, the cost is probably high, as Sun seems to want to use per-head or royalty models for licensing Java for this kind of commercial use.)
But Java 1.5.0_13 didn’t have this field of use restriction. _14 does. It’s not in the release notes. It’s just in the license, that you probably just click through without reading, knowing worrying about that stuff is someone else’s job (fortunately, they do that job).
So, yes, I’m a little annoyed. Once you’ve done the evaluation and comparison, settled on a platform (Java 5 in this case), and locked yourself in for a while, you expect to not face major licensing changes silently inserted into a dot release. Every single developer I’ve talked to about this has felt the same way. “Why would they change the terms that much in a dot release?” (A dot release that customers will demand you upgrade to, to address security vulnerabilities in the previous release.)
I’ve been trying to find anyone talking about this change, and I’ve failed so far. It’s hard, because searching for anything relating to “field of use” and “license” yields the whole Apache/Sun mess. As far as I can tell, though, nobody is talking about it on Sun’s forums, nobody is complaining about it on their blogs. Maybe they’re all afraid to stir up trouble. Or maybe nobody else is reading the license. I don’t know.
But hey, if the Anarchist can call out Sun for their enterprise flash drive support, I can call them out for changing Java licenses. Thanks for nothin’, guys.
(Extra disclaimer: This post is based solely on my own discussions with software developers about this licensing change. I do not know EMC’s “official” stance on this change, and probably wouldn’t be allowed to blog about it if I did….)