What is the OpenJDK Community?
Sun has established the OpenJDK Community for the ongoing development of Sun's open-source implementation of Java SE. The OpenJDK Community is where developers gather to collaborate on the open-source JDK code base and related projects. The OpenJDK project in which the open-source code base lives is part of this community. Through the OpenJDK project, developers can directly influence the future of the JDK implementation, participate with their peers in an open community and help take Java technology where it hasn't been before. Sun evolved the earlier JDK Community, where developers worked on the source code the two years prior to open-sourcing the JDK, into a site where Sun and non-Sun developers alike can collaborate together on the implementation. The OpenJDK Community can be found at http://openjdk.java.net
What components of the JDK software are you open sourcing today?
In November 2006, Sun open sourced the Java programming language compiler ("javac"), and the Java HotSpot virtual machine. In addition, Sun open sourced the JavaHelp 2.0 extensible help system, Sun's reference implementation of JSR 97. Now Sun is open sourcing most of the remaining components of the JDK, with the exception of a few encumbered components that we hope, with the community's help, can be re-implemented so that 100% of the OpenJDK code commons is available as free software.
Specifically, which components of the JDK are being added today to the OpenJDK project's code base?
The following components are newly open sourced under GPL version 2 plus the Classpath Exception:
* Core libraries
* Networking libraries
* Security libraries
* Serviceability libraries
* Internationalization libraries
* 2D graphics subsystem
* AWT, the Abstract Windowing Toolkit
* Swing GUI toolkit
* Sound subsystem
* Various tools, including JConsole and javadoc
Is the entire OpenJDK code base under the GPL?
Yes, much of the OpenJDK code is licensed under the GPL version 2 with the Classpath exception. The Java Hotspot virtual machine source code is licensed under the GPL version 2 only. All of Sun's Java platform implementations are or will be licensed under the GPL version 2, or GPL version 2 with the Classpath exception. The GPL is endorsed by the Free Software Foundation, and is the license used by the GNU/Linux operating system.
When will you finish clearing encumbrances? What is the timeline?
With the community's help, we hope that encumbered code can be re-implemented over the next 6 to 12 months, balancing this critical engineering task with other priorities, and depending on the level of community participation in speeding this effort.
Will Sun continue distributing its commercial implementation of the JDK?
Yes. For people who want the benefits of commercial support, and predictability, they may choose to use Sun's commercial distribution of the JDK or JRE. The free commercial implementation of the JDK may be found at http://java.sun.com/javase/downloads/index.jsp. Similarly, Sun's free JRE may be downloaded from http://java.com. To learn more about development and deployment support options, visit http://sun.com/javasupport.
Will Sun's commercial JDK releases be built from the open-source code?
Yes, for the most part. Since there's some encumbered code in the JDK, Sun will continue to use that code in commercial releases until it's replaced by fully-functional open-source alternatives. In addition, Sun may deliver more differentiated commercial JDK products that address specific market needs in the future with these variants still built from the open-source code.
Are you open sourcing the Java language or the Java SE platform specifications?
Since both of these are documents and not source code, there is no source to open! Thus, while we are open sourcing Sun's implementations of both, we cannot "open source" the Java programming language, nor the platform APIs and specifications, which are governed by the JCP.
Which version of the JDK do these components come from? Are you open sourcing the latest code?
We're open-sourcing these components from an early build of JDK 7. JDK 6 is the current shipping production release, and is stable. Hence we're releasing these components from the JDK 7 tree. At this stage, the only significant differences between the JDK 6 and 7 versions of these components are minor bug fixes and enhancements that have already been integrated into the JDK 7 tree. JDK 7 is the next feature release where all the action will be for innovation and new capabilities.
Didn't you promise to open source both JDK 6 and JDK 7 last November? What happened to JDK 6?
Sun did make that promise, and we plan to keep it. But in the six months since the November 2006 announcement, it has become clear that doing this is far more complex than just changing the license and publishing the source code. JDK 6 is a stable, production release that millions of developers and users depend on. Sun's Java platform release engineering processes have evolved over 12 years to insure this stability, based on very tight control over changes. We don't yet know how to open source a stable release in a way that maintains the robust quality and compatibility characteristics consistent with this tight control, while creating a community that attracts innovation and participation. We have some ideas on solving this problem based on the inherent differences between established APIs and new platform directions. We're looking forward to working with the community to adjust the release cycle and processes to solve this problem.
The OpenJDK code base is huge! How do I know what each component does, and where to begin?
Hacking on the OpenJDK project can be daunting for those just starting out. Even the most experienced Sun engineers who've been working on this code base since the first line of code was written find it necessary to specialize and focus on specific modules. A solid grounding in the language and platform are a must for working on this project, but for the aspiring systems programmer or experienced Java developer there are many interesting opportunities in such a large body of code. Find the elements that interest you most, study the APIs and javadocs, then dive into the code to see how these APIs are implemented, search the bug database for interesting problems to solve, and get going! It might be tough going at first but you can join the community discussions and get some help and advice, and enjoy the satisfaction of working on one of the most widely used programs in all of computing. We will be providing a list of suggested "starter bugs" on our community site, to give you some ideas where you can get started.
Where do developers go to participate in implementing these JDK components?
Developers can gain immediate access to these components under the open-source license by visiting https://openjdk.java.net. NOTE: The URL has changed and been simplified with this announcement!
How can I get involved?
Visit the OpenJDK Community at http://openjdk.java.net and check out the projects, mailing lists, pointers to blogs, and other opportunities to participate. Sun, and indeed the whole Java technology ecosystem, welcomes any and all suggestions, bug fixes, and contributions of code, ideas, and energy.
With this announcement, how is the governance model for the OpenJDK projects evolving?
Sun is pleased to announce the formation of an Interim Governing Board for OpenJDK, and a charter for this board to create the new, community focused governance model for OpenJDK featuring transparency and an open, meritocratic process. The IGB will invite the community to join in discussing and debating its own structure and rules, and the resulting model will reflect the will of the OpenJDK community. For more details on the IGB, the charter, and the roadmap to establishing the steady-state governance model for OpenJDK, please see the Governance section of this FAQ. In the interim, Sun will establish the needed processes and governance criteria (as required) for community interaction and projects to operate effectively.
With the JDK nearly completely available under the GPL, and working implementations based on OpenJDK code on the horizon, both the promise and peril to compatibility of an open-source Java platform are upon us. How will Sun make the JCK (the Java SE TCK) available, and provide access to the "Java Compatible" brand?
Sun understands the importance of compatibility. In fact, most users, developers, source licensees, open-source contributors and leaders indeed most of the Java technology world all agree that compatibility is essential to the value of the Java SE platform. For that reason, Sun will establish a clear process for the Java SE TCK (JCK) to be available to developers who need to verify the compatibility of OpenJDK-based implementations. Please see the TCK section of this FAQ for more information.