Every now and then, people like to speculate over Sun Microsystems releasing their implementation of J2SE under a sane, open source license. Sun's executives used to say "No" to such speculation each time that sort of issue was brought up over the past 10 years.
That tune has changed to a more undetermined "You Never Know" recently. That has, in turn, led some people to assume that the funniest things will happen for Java One. To those of us writing free software in Java, that's a familar ritual: each year, a few months before Java One, someone will start drumming up the Java developers with "they'll totally open source Java for real this year! You just have to totally believe in it!", usually based on someone at Sun getting tired of saying "No", and chosing the easier answer, that leaves no room for counter arguments: "You Never Know".
So, here is a my take, why Sun will not, any time soon, relase their Java implementation under an open source license, and how you'd notice if they were planning something like it:
a) Marketing. In 2006, Sun Microsystems will be interested in migrating their customers to the next release of their implementation, i.e. Java 6. Opening up an older version would take away momentum from that. Opening Java 6 would only lead to higher support costs on Sun's side, without getting more migration to Java 6 done. I.e. less money for Sun.
b) Support. Sun could not just open up their former crown jewels and let them bitrot in public without earning some bad press. I've watched people struggle majorly on Mustang forums to build Sun's 1.6 betas at all, and I doubt Sun could just push out the source they have for 1.6 with anyone outside Sun being able to build it without massively cleaning it up. But otoh, supporting people building and hacking on an old release would take away momentum from the new release, and simply costs good money for the support engineers that Sun would probably rather invest into supporting their 1.6 release or into 1.7. Again, less money for Sun.
c) Nowhere to go with patches. It's unlikely that Sun would want or be able to accept community patches for an old release, while they work on Java 7, due to the way the Java trademark is tied with compatibility requirements. Making any release based on community patches would either require extensive compatibility testing, or, if Sun deliberately released untested, possibly incompatible implementations, dillute the Java brand's positive connotations. The real, licensing-cash-worthy value for Sun is in the brand, not in a particular implementation they give away gratis.
d) Legal. Sun's implementation contains several million lines of source code. Just like with Open Solaris, Sun would have to undergo a lengthy, costly process of securing relicensing rights/copyrights to each line of code it does not hold copyrights or relicensing rights to. That takes time, as one can see with OpenSolaris: work on opening all of Solaris up started a few years ago, and is not finished yet, afaik. It would be pointless for Sun to say they'd open up anything but their Java implementation, and then spend their resources doing it the other way round, wasting the positive PR effect.
e) Community. Sun would first try to build up a community around the code base, before they push it out in the open. Since there is no pilot program for Sun's implementation, there is nothing in the works of that sort. Note that the Mustang 'JRL community' is explicitely designed to not be an 'open source' community, but to encourage collaboration with VM researchers and small bug fixes on Sun's proprietary code base. There is nothing on the Mustang forums from Sun's employees that indicates that Sun Microsystems would have an interest in transforming the Mustang code base into an open source offering in the near future, and there have been no such remarks from anyone who'd know in public, for all I know. They would contradict the official statements from Schwartz, McNealy, Gosling, Hamilton and others, anyway, and last time someone said something like that in public, his superiors were quick to rectify the mistake.
On the other hand, I know that a lot of great people inside Sun would welcome being able to work with an open source community on J2SE as well, just like developers outside Sun, but I assume that Sun's management would prefer to proceed gradually and see how the JINI, OpenSolaris, GlassFish and JES transitions work out before they tackle the big one. If ever.
f) No real need for Sun. Sun's implementation gets 20 million downloads per month, according to a statement from Schwartz at the Sun/Google press conference last October. It's hard to see for Sun how relicensing their implementation would buy them more 'volume', as the maker of the dominant desktop software platform, Microsoft, is not going to ship Sun's implementation, no matter what the license is. They've got their own offering in the managed runtime space to promote with their upcoming operating system release, Vista.
For other popular software platforms, Sun either provide a compatible implementation themselves, or have a contract with someone with a financial interest in a seing compatible Java implementation on their platform, like Apple or IBM. If Sun opened up their implementation, and started to include ports to platforms where their licensees have financial interests of their own, they could cut into that licensing income. Not a good thing.
g) Licensing revenue. Sun monetizes their investment in Java technology just like any other proprietary software company: by selling restricted usage, modification and redistribution licenses. Sun sells licenses for their Java-based products, the RIs, the test suites, and sells support services. That very lucrative revenue stream would most likely stop, if Sun released their implementation under an open source license.
In particular, in the mobile market, there are many devices, many carriers, and many manfacturers, so there is a lot of (potential) licensing revenue to be made. Since J2SE is a superset of J2ME, where the licensing revenue is, if Sun opened up their J2SE implementation, they'd be inviting competitors for that license revenue. That's the last thing Sun needs.
So, there you have it, a handy reference for why Sun's implementation won't be open source any time soon, i.e. for as long as Java really matters: It would make Sun no money to open it up. The only way for Sun to keep extracting the licensing revenues for their J2SE implementation is to keep it proprietary and keep control over what Java is.
It's that simple.