This is an ultra-brief, brass-tacks, rubber meets road description of what Sun’s decision to open source Java means for the average developer. Someone asked a question about what open sourcing Java meant and I was surprised I didn’t have a good answer. So not much opinion or independent thought here, this is just a summary of what I’ve found out. I’m not a lawyer, yada yada. Don’t consider this legal advice.
What’s it mean?
The good news is that (going forward) Java will always be an open platform for development. No one is going to hijack it, it won’t become abandonware. But with such an important platform there’s always the danger of forking. Fortunately the key players have promised to keep the JREs compatible.
Read below about the Classpath exception, the new GPL Java is not viral. Usage of the Java platform is business as usual!
Sun chose GPL v2 for Java SE, Java ME, Java EE implementations. No open source zealots can see this choice as a weeny move, Sun is all in. You can get all code for JDK6 and JDK7 under the Java Research License in the meantime. As indicated in their FAQ, this isn’t a vote against GPL v3, Sun just went with the version that’s already out.
Here’s one mans summary of the GPL.
You can re-distribute this stuff and even charge for it. But if you make modifications to the software you need to provide source code so that others can benefit from your modifications.
What will be open sourced?
Java SE, these are early versions of the JDK7 release. All will be GPL v2 + Classpath exception
• Java compiler javac
• Java HotSpot virtual machine
• Java class libraries
• JavaHelp 2.0 (JSR 97)
The GlassFish Java EE application server will be GPL v2 with Classpath exception (actually it’s dual licensed under the CDDL as well).
Sun is gradually releasing parts of their Java platform. They’re not releasing everything because of licensing issues. They refer to it as not releasing encumbered code that Sun doesn’t have rights to open source legally. Look for this code to be early targets for open source clean room implementations.
The Classpath exception
The Classpath exception that Sun adopts for open source Java is an innovation of the GNU Classpath project. The GNU Classpath project is a GPL v2 implementation of the JDK by the GNU folks.
The Classpath exception means that code that you write to the GPL v2 Java APIs aren’t required to adopt the GPL v2. This removes the possibility of the often misunderstood viral nature of open source technology. Businesses can continue to develop on the Java platform taking advantage of an open source community while still making money from their efforts and applying whatever license they prefer. However if you take the source code for the Java APIs, modify and distribute those, then the derived work needs to be GPL v2. Other than that, you have no fear of infection.
Basically the Classpath exception makes the license on the APIs very similar to the LGPL. The Classpath serves as a firewall between the GPL v2 and users of the Java APIs. There is precedent in the open source Java world to use the Classpath exception (by the GNU/ Classpath project) so Sun went with that.
The forking danger
Will IBM try to eclipse Sun with their own blue JDK? Will Microsoft embrace and extend, remember J++? The open source implementations (GNU/ Classpath and Harmony) have promised to build fully compatible implementations of Java SE.
Sun will still be the gate keeper for the Java Compatible and Java Powered brand and logo. Others can fork such that they have an incompatible JRE but they won’t receive the special Sun seal of approval.