Main

Faqs Archives

May 10, 2007

The Announcement

What is Sun announcing?

Fulfilling its promise to the world exactly one year later, Sun is releasing a fully buildable implementation of the JDK in the OpenJDK Community.

Specifically:

* Sun proudly announces that almost all of the JDK is now available under the GPL 6.5 million lines of code, one of the largest and most important contributions to the Free Software community in history.
* In conjunction with the NetBeans 6 preview release, Sun has created pre-built Netbeans projects to make it easy and intuitive to dive into the OpenJDK code base, making NetBeans and Sun Studio the gateways to participation in the OpenJDK project.
* Sun announces the formation of the OpenJDK Interim Governance Board with the charter to write and gain ratification for a Constitution for the OpenJDK Community, based on transparency and an open, meritocratic process. The IGB will invite active participation in this process, with the goal that OpenJDK governance will be representative of a broad and inclusive consensus reflecting the will of the whole community.
* Sun is creating a clear process for OpenJDK-based implementations of Java SE to test for compatibility starting with implementations of Java SE 6, and once certified, to brand their implementations "Java Compatible" while still meeting all of their obligations under the GPL. This process will advance the "Write Once, Run Anywhere" promise of Java Compatibility into the Free and Open Source software world, and guarantee that the innovations made possible by OpenJDK remain forever available to all.
* Sun announces a one year roadmap for the OpenJDK initiative, including clearing the remaining encumbrances, open sourcing an implementation of Java SE 6 and associated deployment code, implementation of the compatibility testing and branding program, and establishment of the governance and contribution model for the community.

Following on to Sun's November 13, 2006 announcement six months ago of the creation of the OpenJDK project and community, and the widely acclaimed choice of GPL v2 as the license for Sun's open-source JDK initiative, Sun is delivering in only one year on substantially all of its promises to the industry. Building on this momentum, Sun has solidified its position as the pre-eminent contributor to the F/OSS ecosystem.


What is the significance of this announcement to the industry?

This announcement takes open-source, compatible Java from a long-standing dream of developers worldwide, to concrete reality. With the open sourcing of the code base for one of the industry's most significant and pervasive software platforms, the groundwork has been established to foster adoption in new markets, to build broader communities, and fuel even more innovation. With over 5.4 billion Java technology enabled devices, Java technology has already demonstrated explosive growth, appearing in volume nearly everywhere. Now, as free software, the Java platform can address new markets and be the engine of innovation for the next generation of networked applications.

Java SE (JDK) Announcement Specifics

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.

May 20, 2007

Java ME Announcement Specifics

What is the Mobile & Embedded Community?

The Mobile & Embedded community establishes a central location for the open-source development of Java ME technologies and applications. This community has been launched on java.net and can be found at the following URL: http://community.java.net/mobileandembedded. It currently includes the phoneME project, the cqME project, and the application developer project. In the future we anticipate that this community will grow by adding additional Java technology and application projects.

What license did you choose for Java ME?

The phoneME project is where Sun is releasing its phone implementations for Java ME. It has a single repository that consists of various active development modules including CLDC, CDC, MIDP, and various JSR implementations.

What is the cqME project?

Java ME code is licensed under GPL v2, as are all of our Java implementations.

What parts of Java ME has Sun open-sourced?

Sun has open-sourced its implementations of Java ME. Available since November 13, 2006, are the source code for Sun's feature phone implementation called the Sun Java Wireless Client (based on the Connected Limited Device Configuration, CLDC), and the advanced OS phone implementation (based on the Connected Device Configuration (CDC) specification). The Java Wireless Client is the next generation version of the platform that currently enables rich mobile data services in over 1.5 billion handsets.

Sun has also open-sourced its compatibility and quality testing tool frameworks. This includes the source code for the Java ME TCK Framework, the foundation for Sun's Java ME compatibility tests. We believe this project can help to standardize the industry on a single framework to simplify the testing process. In addition, Sun has open-sourced the Java Device Test Framework, the foundation for the quality and function tests. This project enables developers to create new tests, reducing implementation variation and enabling their applications to run across multiple devices.

What is the feature phone implementation?

The feature phone implementation is a Java runtime designed to run on today's mass-market handsets.

What is the Advanced OS phone implementation?

What is the Advanced OS phone implementation? A: The Advanced OS phone implementation is a Java runtime designed to run on operating systems targeting advanced mobile devices like smartphones, set-top boxes, etc.

Will Sun's implementation be built from open-source code?

Will Sun's implementation be built from open-source code? A: Yes, Sun's implementations for feature phones and advanced OS phones will be based on the open-source code base.

What can a developer do immediately with the CDC and CLDC code bases?

A developer is able to build both the feature phone and the advanced OS phone code bases now that these are open-sourced. Developers have the opportunity to download, evaluate, and play with the source code, and help in its ongoing development.

Will Sun continue to ship commercial implementations?

Yes, Sun will continue to ship commercial implementations for feature phones and advanced OS handsets under Sun's commercial licenses.

What is the difference between the open-source and the commercial code bases?

The differences include encumbrances and some minor modifications to the source code such as splash screen, logos, license, header files, etc.

What can a developer do with the framework code bases?

A developer can use these frameworks to drive testing of compatibility tests for new mobile JSRs, and create tests to improve the quality of implementations.

Where do developers go to participate in the Java ME projects?

The Mobile & Embedded community has been created to enable platform developers and application developers to participate. Visit http://community.java.net/mobileandembedded for more information.

What is the phoneME project?

The cqME project (compatibility and quality) is where Sun has released the source code and is doing the active development on the Java ME TCK Framework. In the future, Sun will release into this project the source code and engage in the active development of the Java Device Test Framework.

What is the Application Developer project?

The Application Developer project provides resources to developers and a place to engage in the development of open-source Java ME applications. The project is the home for the new developer guidelines that were created in partnership with Orange. These guidelines will help developers minimize porting efforts. This project is also a home to open-source Java ME application projects.

NetBeans Announcement Specifics

How can developers use the NetBeans IDE to get started in working with this code?

In conjunction with the NetBeans 6 Preview Release, Sun has created pre-built NetBeans projects and incorporated this project metadata directly into the newly open-sourced OpenJDK code base. This NetBeans integration makes it intuitive and easy to use NetBeans and also Sun Studio to dive into the OpenJDK source code and begin working on the platform right away. Once you've inspected the code and made changes, the NetBeans "Build Project" command lets you easily build modules. For more information and a step-by-step tutorial, please visit http://nb-openjdk.netbeans.org

General and Goals

Why is Sun open sourcing its Java implementations now?

The Java platform is 12+ years in the making. When it was first released it was a radical departure for commercial software, including full source code under a novel license. Sun and the Java ecosystem have been extremely successful at establishing and growing a very large and dynamic market in this time. The Java platform retained its own licensing model even as the open-source model proliferated, because the Java licensing model successfully created a large and open market with many compatible choices. We now see an opportunity to encourage even more possibilities for adoption in places the Java platform hasn't gone before, where Free licensing and open-source development approaches are a prerequisite for consideration.

At the same time, the Free software and open-source communities are now saying that compatibility is a given for any Java implementation. And there is a new spirit of innovation with Web 2.0, SOA and collaboration/participation technologies, and the Java platform is the perfect foundation platform on which to innovate - and open-source can help accelerate this innovation.

What influenced this decision?

Key Free software and open-source communities have stated that they believe that only Java technology implementation that are completely compatible with the specification can succeed in the market. These communities, which provide thought leadership for the open-source Java world, are now focused on delivering only compatible implementations. In addition, Sun has gained experience in community development with the Project GlassFish open-source implementation of Java EE, with OpenSolaris, with OpenOffice.org and NetBeans, and with the JDK Community on java.net. This experience makes us confident that when we open-source Sun's Java implementations, the platform will benefit, and we can better balance the needs of community with those of customers, end users, and licensees.

Overall, we feel that caution is appropriate for a technology that affects the lives and livelihoods of tens of millions of people around the world. After much reflection we feel now is the perfect time to take the next step with the Java platform.

Why is this good for Java SE developers?

Because volume wins. Open sourcing Sun's Java SE implementation will lower barriers to adoption in markets where open-source software leads. As new markets adopt Java technology, developers will discover new opportunities. More applications. Innovations that leverage the industrial strength foundation of Java to deliver valuable new products and services. And developers will be able to directly influence the future of the JDK implementation, participating with their peers in an open community. Taking Java where it hasn't been before, and helping to ensure that Java technology remains a central unifying standard for the Internet.

How does this benefit Java SE customers and users?

Your investment is safe, with multiple independent implementations of Java SE, and the reference implementation from Sun available under an open-source license. An open-source JDK provides peace of mind, plain and simple:

* You can adopt Sun's Java technologies with full confidence. Java SE will be freely available - subject to the market forces that drive competition, reduce price and speed innovation.
* Whether you value Free and open-source software for philosophical or economic reasons, want more flexibility, appreciate the quality that transparency brings, or want to know you have ultimate control over your investment, you can adopt the JDK knowing that you'll gain these advantages.
* With the rock-solid, high performance JDK implementation from Sun under the same open-source license used by GNU/Linux distributions, you can expect Java technology to find its way onto new platforms, be leveraged for new applications and infrastructure, and be the foundation of tomorrow's most exciting new products and web technologies.

Your investment in Java technology will become even more valuable as open-source speeds innovation, spreads adoption, and carries the platform to places it couldn't previously go.

What markets do you believe this initiative will open up for the JDK?

Several markets are likely to find the JDK to be more suitable for use once it is under an open-source license:

* Government, educational, and research markets where open-source software is either mandated, or highly desired.
* Enterprises that mandate open-source infrastructure to retain maximum flexibility and drive competitive procurement.
* Enterprises and organizations that have selected OS distributions based on GNU/Linux and OpenSolaris as preferred OSs for deployment.

In order to gain the benefits of commercial support, and predictability, these customers may choose to use Sun's commercial distribution of the JDK or JRE in conjunction with a support contract. However, they might not consider the commercial product if the open-source version were not available.

What impact will this move have on the adoption of the Java SE platform?

The Java platform has been very widely adopted already - it is one of the most important and widely used components of modern web-based infrastructure. But there remain un-tapped or under-served markets. In particular, Java technology is not always included in open-source web infrastructure stacks that are commonly distributed and deployed alongside and included with GNU/Linux distributions. Those that do include Java technology often do not include an up-to-date, compatible runtime and development environment. We continue to work with the GNU/Linux distributions to get the JDK included as part of the free software repositories commonly included with these open-source operating system distros. Once the JDK is easily obtained and installed with these platforms, we expect to see more widespread adoption of Java technology especially outside of North America and Western Europe, as well as in cutting edge web infrastructure deployments worldwide. Since the GPL is a very widely used open-source license (in fact it's the same license used by GNU/Linux), distributing the JDK under the GPL with GNU/Linux distributions should be a good match, making it easier to adopt by those looking for open-source alternatives.

What are your goals in open sourcing Sun's Java ME implementations?

To remain the number one mobile application development platform*, Java ME needs to grow and evolve. This means engaged developers, accelerated innovation, and a more consistent implementation across devices.

Who benefits from open sourcing Java ME?

Everyone in the Java ME ecosystem benefits from open sourcing Java ME. Benefits include:

* simplified evaluations,
* transparent development,
* opportunities to directly influence the future of the platform

By open sourcing these implementations, handset manufacturers can leverage the common code base to reduce their development costs. The result will be less variation across devices P in other words, Write Once, Run Anywhere taken to the next level.

Both application developers and operators will benefit from the accelerated innovation, enabling developers to continue to create compelling applications and services, which in turn help drive revenue. Operators and handset manufacturers will benefit from lower porting, testing and maintenance costs.

What does Sun mean by "compatibility?"

Compatibility for a Java technology means the implementation of that technology meets the associated compatibility requirements of its Technology Compatibility Kit or TCK. For Java SE this means passing the TCK tests and other requirements defined in the Java SE TCK, known as the JCK.

Do you think anyone will fork the JDK?

We expect great new ideas and valuable research to come from adaptations (i.e, forks) of the platform. Sun encourages compatible forks where the code is ported to additional hardware and software platforms. Such ports extend the breadth of Java SE to places currently not supported by any vendor. Broad distribution of incompatible forks is potentially a danger since such forks could damage the "Write Once, Run Anywhere" compatibility value of the Java platform.

So, what about compatibility? How will Java technology remain "Write Once, Run Anywhere" since Sun's Java platform implementations are open sourced?

The Java technology compatibility promise is so central to the value of the platform that it has been the single most important influence in driving the detailed planning and decisions for this initiative. Sun is making a number of key decisions and commitments to the community that we believe will help foster compatibility:

* License: GPL makes proprietary forks less likely, as all changes must be published.
*
* Branding: the Java trademark and logos are for compatible implementations only.
* TCKs: Sun will make TCKs available to OpenJDK-based implementations for testing compatibility.
* JCP: the JCP's role as the governing body for Java standards and evolution is not changed by this move.
Community Development: Sun's experience in building strong communities means developers will likely find the governance and infrastructure to their liking.

In addition to the specific steps that we're taking to help foster compatibility, we are convinced that the market will demand compatible implementations, and that incompatible ones won't gain traction. With the billions of dollars of Java applications in the installed base, the community has recognized that a Java implementation that doesn't run the installed base of code won't get very far. That is why both the GNU/Classpath and Apache Harmony projects have stated unequivocally that they're working to build fully compatible implementations of Java SE.

We have experience in the Java EE world to back this up: there are four compatible, open-source Java EE implementations in the market including Sun's GlassFish Application Server, and no incompatible variants have achieved any market penetration. We expect the same dynamic to happen with both Java SE and Java ME platforms.

Business Model

What do Java SE customers buy from Sun?

The JRE and JDK binaries themselves will remain zero cost downloads. End-user customers can buy subscriptions and one-time engagements for enterprise-class support from Sun for Java SE, including:

* High quality, optimized performance binaries released on a predictable schedule.
* Packaged updates, patches, and security fixes.
* Break/fix support including customer-specific bug fixes delivered out of cycle.
* Branding: Access to trademark and logo licenses including "Java Powered".
* Installation, custom engineering services.
* Training, education.
* Developer support.

Commercial source code licensees may optionally buy additional services and gain additional rights, including:

* The right to ship binaries derived from custom modified source code.
* The right to make modifications to the source code without putting those modifications back into the open-source code commons.
* The right to use the "Java Compatible" logo for compliant custom implementations.
* Porting services.
* Custom development and engineering support services.
* Upgrades and updates to the source.
* Performance tuning services.
* Binary support.
* Testing services, including TCK testing.
* Training.

In addition, some customers needing specialized versions of Java SE for embedded and real-time applications may purchase licenses to these added-value implementations. We're also investigating support services that could be offered optionally to customers who prefer to "do it themselves" using the open-source code base, but need a bit of additional help.

Why purchase these added value services and implementations from Sun?

Sun, the only systems vendor to have open-sourced nearly its entire software portfolio, enables customers to leverage a number of unique advantages that only it can offer, including:

* The economic advantages of the open-source business model through a larger range of the stack.
* Recognized "gold standard" Java SE and Java ME implementations on which the open-source communities are eager to innovate.
* Choice of GPL license that maximizes the value of the open-source code commons and maximizes incentives for compatibility, while creating an opportunity to monetize commercial licenses and support services for licensees.
* The ability to tap many of the key architects and creators of Java technology, including for support and tuning services.
* Systems optimized to run Java applications with superior throughput, power, and space characteristics.
* Development tools including NetBeans and Sun Studio that deliver increased productivity for developers.

In addition, Sun brings unique expertise and knowledge of both Java technology and open-source best practices to the table. This combination will help Sun establish OpenJDK as the most compelling open-source community for innovation, allowing Sun to gain maximum benefit from the open-source initiative. Some of these advantages include:

* Experience at both understanding and balancing the needs of the diverse and complex Java ecosystem.
* Unmatched developer outreach and community development expertise.
* World-class ability to combine rigorous, enterprise-class development processes and open-source transparency, bringing together the best of community development with top-quality, on-time delivery of commercial products.
* Proven success at delivering scalable community infrastructure that manages the largest open-source projects on earth.
* Vision and commitment to participation, transparency, open development, and collaboration.
* Deep understanding of F/OSS community concerns and aspirations, and a practical perspective on balancing the needs of community with the interests of customers.
* Best practice policies and procedures for taking large code bases open source, balancing concerns and monetizing adoption and ubiquity, all while respecting intellectual property rights.


How will Sun's Java ME business be affected?

Sun is confident that licensees will continue to leverage Java ME commercial products and services that help them deliver an exciting and compelling mobile internet experience to consumers. As a result, we expect our business opportunities to multiply based on the improved economics that easy access to source code will bring.

OpenJDK License

What license did you choose for the open-source JDK components?

GPL v2 for almost all of the virtual machine, and GPL v2 + the Classpath exception for the class libraries and those parts of the virtual machine that expose public APIs.

What license did you choose for implementations of Java ME and the Java ME frameworks?

GPL v2 was chosen for all components related to Java ME.

What is the Classpath exception?

The Classpath exception was developed by the Free Software Foundation's GNU/Classpath Project (see http://www.gnu.org/software/classpath/license.html). It allows you to link an application available under any license to a library that is part of software licensed under GPL v2, without that application being subject to the GPL's requirement to be itself offered to the public under the GPL.

Why do you need the Classpath exception?

If an application is distributed with an implementation of Java such as the JDK under GPL v2, that application could be subject to the requirements of the GPL that all code that is shipped as part of a "work based on the [GPL] program" also be GPL licensed. Accordingly, a GPL license exception is needed that specifically excludes from this licensing requirement any application that links to the GPL implementation. The Classpath exception accomplishes this. Without the Classpath exception, a Java SE implementation licensed under GPL v2 could not practically be distributed with non-GPL licensed Java applications. This could present a serious barrier to adoption, for example by OpenSolaris or GNU/Linux distributions if left unaddressed.

Why did you choose this licensing method?

This is the licensing paradigm in common use within Free software communities such as GNU/Classpath and Kaffe for the components of a Java technology implementation including the virtual machine and class libraries. We consciously chose the same licensing method so that there would be no temptation to second guess Sun's intention to make its Java SE implementation available under a genuinely Free and open license and to allow easy collaboration with these existing communities.

Are you licensing the entire JDK under this method?

Yes. Note that some of the code included in the OpenJDK project is not part of the Java Runtime Environment, but rather is part of the tools and documentation that let developers use the JDK to create and test code, as well as some demo and sample application code. See below for specifics on how each of these modules is licensed.

What about source code in the JDK that originated outside of Sun and is incorporated into the JDK under its own license? Can you relicense this code under the GPL?

Where such licenses are compatible with the GPL, then this code is licensed under the GPL in the OpenJDK code base. There are some code modules that Sun may not have the right to release under the GPL. We're still investigating some of the license compatibility issues and hope to resolve them as quickly as possible. In the mean time this code will be released only as binaries if the source is proprietary or as source under its original open source license.

How can you ship the JDK with binary-only elements then? You said there were encumbrances.

Well spotted! Because there are encumbered components that must be shipped without source. The Software Freedom Law Center and the Free Software Foundation have helped us craft a special exception to the GPL, called the Assembly exception, to allow the full JDK to be built. This exception will be applied temporarily until the encumbrances are removed to these binary plugs. We would welcome your help to make this happen as soon as possible. In addition, the Assembly exception is needed to allow Sun to combine in a single collected work components under both GPL, and GPL plus the Classpath exception. Without the Assembly exception, the entire OpenJDK code base would have to be licensed under GPL without the Classpath exception.

What are the advantages of GPL v2?

As well as fulfilling its original purpose of promoting Free software, the GPL v2 is designed to help advance projects and code commons by requiring innovation sharing with the commons. By design, it minimizes proprietary forks by requiring any modifications be shared with the project. GPL v2 is the right license to preserve Java's trademark "Write Once, Run Anywhere" value proposition.

What rights do developers have under GPL v2 + Classpath exception?

The best source for answering this question is the license itself . In addition, there have been numerous analyses of the GPL license and its terms, not least by the license stewards, the Free Software Foundation . Sun recommends studying these interpretations, and consulting legal counsel as necessary to understand your rights under this license.

What must I do to call my software based on code from the OpenJDK or phoneME projects "Java"?

The requirements for the use of the "Java" trademark and name have not changed with the open sourcing of the JDK and Java ME source code. The GPL v2 does not include a trademark license - no OSI-approved open-source licenses do. Sun does not currently have a licensing program that permits the use of the "Java" mark in your product or company name. You can use a truthful "tagline" however associating your product or company with Java technology, according to Sun's standard terms for use for trademarks. Please see http://www.sun.com/policies/trademarks/ for more details.

How are the regression tests you have released as part of the buildable OpenJDK code base licensed?

GPL v2 only. There are a small number of files that have no license in the file itself. These files are all licensed under GPL v2 only, as the entire combined work constituting the OpenJDK code base is under GPL v2. These files are mostly data files used in certain tests, for which no provision has been made for comments, and thus which cannot be modified to include the GPL v2 header.

What about GPL v3? Have you considered using that license?

While Sun has been working with the Free Software Foundation as an active participant in the development and review of the GPL v3 license, and while the license is in a late review phase, it is not yet complete. It is Sun's strong desire to advance the open sourcing of its Java technology implementations in a timely manner, so we made the decision to use an existing, established license paradigm rather than wait for GPL v3 to be completed. Using GPL v2 does not indicate anything negative about GPL v3. Sun continues to be very actively and positively involved in this new license's development.

Code and Encumbrances

What do you mean by "encumbered code"?

Some parts of the JDK and Java ME implementations include code to which Sun may not hold sufficient rights to release under a license that allows third parties to create unlimited sublicensable derivative works. These rights are necessary to allow release of these implementations under the GPL v2. Those parts of the code for which we don't have these rights are said to be "encumbered".

What do you mean when you say that you are now shipping a "fully buildable" JDK?

We have released as much of the source code as possible under the GPL. However, there are encumbered modules in the first buildable release of the OpenJDK code base. In the short term we are providing a separate bundle of binaries compiled from these sources that can be combined with builds of the GPL'd sources to yield a complete, working JDK. We hope to rewrite these components to remove the closed-source code - and we welcome your help!

What are the encumbered components in the JDK?

The larger encumbered components requiring binary files for a full build include the font rasterizer, the graphics rasterizer, and the sound engine. Smaller components include some cryptographic algorithms, some SNMP code, and some of the imaging APIs.

How will the encumbered binaries be licensed? Will I be able to redistribute a JDK built from the GPL'd sources and the encumbered binaries?

The Assembly exception allows downstream redistribution of such a JDK. For more on this subject see "Licensing".

I'd like to help clear the encumbrances in the OpenJDK code base. How do I get started?

We're opening sub-projects under the OpenJDK project on java.net focused on the major encumbrances that need to be addressed so that OpenJDK can be 100% free software. These projects and their URLs are:

* Java 2D Font Rasterizer
* Sound Engine

And we will soon launch another project to cover Java 2D Graphics Rasterizer.

Will everything in the Java ME feature phone and advanced OS phone implementations be available in open source?

No, there are several encumbrances in these phone implementations. These encumbrances include support for specific phone hardware, graphics engine, sound engine, etc. All of these components and any other encumbered code will not be included in the open source code base.

How will encumbered code in the Java ME code base be managed?

Sun is actively negotiating with Intellectual Property (IP) owners to gain the rights to add the encumbered code, if any, to the open source code base. We will try to clear encumbrances with open-source or other reasonable alternatives. Implementations including encumbered components will continue to be made available via commercial license.

OpenJDK Documentation

Its great that the community has access to the source code now, but what about documentation? What are your plans for providing developers and publishers access to documentation that enables the openness and sharing that are the goals of the open-source Java initiative?

Sun recognizes that restrictions on how documentation can be created and disseminated would limit many beneficial activities such as training programs and materials, and added-value third party websites. We are re-examining our Java platform documentation policies with community development in mind and will implement a new policy in keeping with the spirit and enabling the opportunities made possible by Java as free software.

Given that the Javadoc content is embedded in the newly GPL'ed OpenJDK code, and the Javadocs can be generated by running the javadoc tool, aren't the Javadocs now also under GPL?

Yes. The documentation that can be generated by running the javadoc tool over the open-source code base is a derivative work of this code base and as such, must also be licensed under the GPL.

So then, is the Java SE Platform Specification now GPL'ed as well?

No. Although the Javadocs are the primary documentation for application developers, they form only a small portion of the Platform Specification, which includes several other important, normative documents (prescriptive parts of the standard) including the Java Language Specification, the Java Virtual Machine Specification, and other ancillary specification documents that are referenced from the Javadocs. It is important that there be a single, definitive specification for the Java Platform, and for this reason the complete Platform Specification is not being open-sourced. It remains under the auspices of the JCP.

Where can I see the complete Platform Specification? Under what license is it available?

Sun is in the process of finalizing a Platform Specification for Java SE 6. Once complete, it will be endorsed through a JCP maintenance review of Java SE 6, and then published. The Platform Specification is made available under the Java Specification License. The Java SE 6 version of this license can be found at http://java.sun.com/javase/6/docs/legal/license.html.

How will Sun promote redistribution of documentation in ways that foster adoption, while respecting and protecting the Java Specification?

As the earlier answer explained, there will always be a single, definitive version of the Platform Specification. However, we plan to create a new "Developer Documentation" bundle that can be licensed for redistribution. Initially this will contain only the Javadocs, but we hope to add other materials such as tutorials and guides later. Links from the Javadocs to other documentation will point back to the relevant documents on the java.sun.com website.

Under what license will this Developer Documentation bundle be offered?

The bundle will be available under two different licenses.

* A commercial license that permits redistribution, but does not allow for modification or creation of derivative works. This license will be most useful for publishers who are seeking to include the bundle with other material as a combined work, and who would prefer not to offer the entire work under the GPL.
* The GPL, as mandated by the inclusion of the Javadocs in the GPL'ed OpenJDK code base. We expect a GPL-licensed Developer Documentation bundle will be most attractive to distributors offering an OpenJDK-based implementation.

You will be able to select whichever license you prefer.


Why not use the GNU Free Documentation License (GFDL) or a Creative Commons License? Wouldn't one of these licenses, designed specifically for documentation and written works be more appropriate than the GPL?

Since we expect that most redistributions of the Developer Documentation bundle will be incorporated into products that also include source code, we felt that the GPL rather than a documentation-only license would be more appropriate.

Now that the Javadocs will be available under the GPL, how can developers collaborate on improving them?

Sun intends to build a new dynamic documentation portal on java.sun.com to bring the power of collaborative development to Java developer documentation. While the specific plans for this portal have not been finalized, we expect it will include features such as:

* Annotations
* Code samples
* Discussion forums
* Translations
* Links to external references

This will be a significant new resource for the entire Java community to use and an exciting new way for developers to participate.

May 30, 2007

What is OpenJDK?

OpenJDK is Sun Microsystems effort to open source Java programming language. Hence forth Java 7(JDK7) and other future releases will be called openJDK with respective version numbers.

At JavaOne 2006, Rich Green, Sun's Executive VP of Software, said, "It's not a question of whether, but its a question of how." One year later at JavaOne 2007, Sun delivered on that promise and announced the source for a fully buildable JDK is now available under the GPL v2 license on java.net. This is that, so called OpenJDK.

So, its simple open source Java Development Kit(JDK) is called OpenJDK.
Open source Java Development Kit(OpenJDK) is maintained by a group from open source community and java architects from sun microsystems.