Where We Are With the JDK
Roadmap for Mustang
Sun began the Mustang project (Java SE 6) on java.net over a year ago when we started releasing weekly binary and source snapshots that included bug fixes and minor enhancements to Tiger (Java SE 5). Over time we've introduced major features described by new and existing JSRs that are part of the Mustang release. For those of you who have been watching the blogs, articles, JavaOne presentations and Mustang snapshots, you've seen these new features unfold.
Here is where we stand now with Mustang and Dolphin (Java SE 7):
- The draft Mustang feature set has been approved by the JSR-270 expert group. See Mark Reinhold's blog for more information.
- Sun currently plans to release a Mustang beta in early February.
- The Dolphin project is expected to be opened in spring 2006.
- Weekly Dolphin snapshots of source and binaries will be released in parallel with Mustang snapshots. New fixes put into Mustang will also be put into Dolphin.
- Sun will likely release a second Mustang beta in summer 2006.
- Mustang is planned to ship in autumn 2006.
- Mustang updates will be released every few months after Mustang ships. These updates will contain mostly bug fixes and performance enhancements (i.e., no API changes).
- Dolphin is scheduled to ship during calendar year 2008.
These are our current plans. They may change. Let me say that again, "The schedule may change..." but it's what we're working towards now. We will let you know more details as things move forward.
So why will Mustang slip to autumn?
We've recently decided to make changes to address some issues in sensitive areas of the codebase (e.g., the classloader) and want to be certain these changes won't break anyone's code. These changes will require significant work by Sun's engineering team. In addition, our top goal has always been to make Mustang the highest quality JDK release to date and the added time will provide us with an adequate period to run an exhaustive beta cycle, which will better ensure our ability to deliver: (1) quality and (2) compatibility of the release.
At this time, all the expected Mustang features are nearly complete. The next step is massive testing and targeted bug fixing on all levels (i.e., spec conformance, binary compatibility with prior releases, performance, robustness, etc.). It takes a long time and the efforts of people both inside and outside Sun to ensure the new features work properly and verify that we haven't broken anything in the process.
Sun's Java SE Quality organization has been in full gear for months and it will take many more months to prove the code is ready for final release. The developer community can provide tremendous assistance as well by testing existing applications against the snapshots and investigating new features -- then letting us know when problems are discovered.
The Mustang beta will be based on build 59 with some tweaks to clean up several bugs. This beta has been heavily tested so you may be more comfortable running your applications against it rather than a snapshot release (though to be honest, most of the latest snapshots have been very robust). However, the beta is missing some improvements that are included in more recent builds (which can be found on the Mustang changelog).
What does this mean for developer community fixes?
Sun still wants your bug reports, bug fixes and enhancement contributions. We are making a special effort to evaluate and include everything reasonable that we receive from the community. As time progresses, code changes (especially API changes) will become increasingly difficult to add to Mustang. For example, if a fix is risky or if it only solves part of a more general problem, we may need to defer it to a Mustang update release or to Dolphin.
Update releases generally address bugs or performance problems that were missed (or deemed too risky to fix) during beta. They are not "dot-dot" releases and don't include changes to the API. When it makes sense and testing resources are available, Sun may choose to back-port certain bugs fixed in new releases to updates of prior releases (for example, 3 bug fixes contributed by the community for Mustang were included in the latest Tiger update). For this reason, when we receive a minor fix late in the development cycle, it may be better to wait than take the risk of accidentally destabilizing code that is otherwise working well. Waiting a few months longer to more closely evaluate and test the impact of a proposed fix will in some cases be the most pragmatic way to incorporate (or reject) it.
So keep those fixes coming -- here's how and why. All contributions are appreciated and can really help to make Mustang a better release for everyone.
What about Dolphin?
We are just beginning to talk to vendors, developers, and end-users about Dolphin features. If you have any ideas, please post them to the Java SE forum on java.net (note that we've recently renamed the Mustang forum to the Java SE forum so the good ideas already expressed there won't be overlooked for Dolphin). Sun will make further announcements about this in the next few months.
The Dolphin project on https://dolphin.dev.java.net is currently being prepared to manage snapshot downloads and share other project information. Some things such as existing forums may be shared with the Mustang project and/or renamed to minimize confusion and unneeded duplication. We should be ready to release source and binaries for build #1 in spring 2006.
So where should developers focus their efforts? The Tiger project is the place for current stable release work and research; the Mustang project will have the role of pending release with opportunities for testing, bug fixing and additional research; and (when made available) the Dolphin project will be available for proposed cutting-edge development and enhancements.
So please stay tuned, we have several Mustang-related activities planned for the JDK Community during the next few months and hope you'll join with us to help finish off Mustang and get started on Dolphin!