Ten years later, the open-sourcing of Java remains a point of contention, with many in the community extolling the importance of an open Java, while others remain critical of its handling, including the belief that Sun Microsystems didn’t go far enough.
Sun Microsystems officially open-sourced Java on Nov. 13, 2006—a move long pined for by the industry at large. Java’s code had already been accessible prior to that date—a strategy that helped boost the platform from its earliest days, notes Java founder James Gosling.
“The source code for Java was available to all from the first day it was released in 1995,” says Gosling, who is now chief architect at Liquid Robotics. “What we wanted out of that was for the community to help with security analysis, bug reporting, performance enhancement, understanding corner cases, and a whole lot more. It was very successful.”
Java’s original license, Gosling says, allowed people to use the source code internally but not redistribute. “It wasn’t ‘open’ enough for the ‘open source’ crowd,” he says.
IBM at the time wanted Java to be contributed to the Apache Software Foundation, where it would have been distributed under the Apache license. Ultimately, Sun chose to shift Java to the GNU General Public License, which then-Sun CEO Jonathan Schwartz called a “momentous” change. Under the GPL, derivatives of Java would also have to be distributed, a shift intended to help Java better fit in with the open source community, Gosling says.
Since the open-sourcing, Sun and, in turn, Oracle (which acquired Sun in early-2010) have remained in the driver’s seat for Java’s evolution, although other parties have contributed to the code. While Gosling has taken Oracle to task for its handling of Java at times, he sees the open-sourcing as beneficial.
“It’s one of the most heavily scrutinized and solid bodies of software you’ll find. Community participation was vitally important,” he says.
A former Oracle Java evangelist, however, sees the open source move as watered down.
“Sun didn’t open-source Java per se,” says Reza Rahman, who has led a recent protest against Oracle’s handling of enterprise Java. “What they did was to open-source the JDK under a modified GPL license. In particular, the Java SE and Java EE TCKs [Technology Compatibility Kits] remain closed source.”
This, Rahman says, has been a significant problem for projects like Apache Harmony, as well as for community members that would like to contribute to the TCKs.
“Indeed, Sun retained a lot of control over Java even if the JCP [Java Community Process] is relatively open now,” he says. “In particular Sun and Oracle fully control Java-related intellectual property and copyrights through the JCP.”
Sun was not an open source champion back then, Rahman adds.
“Open-sourcing the JDK had a lot to do with Sun retaining credibility and increasing adoption for Java in the face of pressure from the broader community, industry, and IBM,” Rahman says. “Even then Sun pretty tightly controlled contributions to OpenJDK. Oracle does exactly the same.”
Gosling likes the decision to go with the GPL.
“I think it’s worked well,” he says. “We always had to juggle the community’s freedom against ‘bad actors’ who were always trying to hijack the community.”
While plenty could have been done differently with the open-sourcing, things would have only turned out worse, Gosling says. “Avoiding powerful hijack attempts was the No. 1 reason that the licenses were less liberal than many would have liked.”
The Java community, he adds, is on a pretty good track right now. “I’m really looking forward to JDK 10.” Java Development Kit 9, not 10, is due next summer, featuring modularity.
Rahman, now a senior architect at CapTech Consulting, would like to see reformation of the JCP to reduce Oracle’s strong control. Despite his reservations about how the open-sourcing has gone, Rahman still likes the move.
“It is definitely important for Java to be completely open source. It allows for some degree of contribution from the community, keeps the code relatively open, helps adoption by building confidence in the enterprise, and allows for some third-party use of OpenJDK code,” he says.
More broadly, the open-sourcing helps build a strong ecosystem around Java by signaling that the platform is open source-friendly, Rahman adds. “Without open-sourcing the JDK, I don’t think Java would be where it is today.”