I am not disagreeing with your overall premise. However, I seem to remember that the original J2EE implementation license was going to be available for commercial use. However, IBM, Weblogic, and the other App server vendors raised a holy stink, basically saying, "Gee, at what point to we get to make money off of Java, or are you going to keep giving everything away for free." That is when the licensing changed.
On the other hand, Sun's lawyers have been making it extremely difficult for FreeBSD and others to release binary JDK and JRE with their operating system distributions or packages. The choices currently consist of Windows, Solaris on Intel, Solaris on Sparc, and Linux. But Open Source operating efforts don't have a corporate veil of liability. Sun's lawyers want an individual on an Open Source project to say they, personally, will be liable for any damages or lawsuits arising from any use of the Open Source project, regardless of who wrote the code. Whoever signs is likely to lose their house, their car, their life savings, etc. So with this requirement, similar to the J2EE testing costs, Sun is actually reneging on the "write once, run anywhere" promise.
The reason for this might be in the next release of FreeBSD. Version 5.0 is to incorporate a very efficient light-weight threading model. Coupled with a Java port, it could take the J2EE arena by storm. Linux currently has a heavy-weight threading model. Is it really a competitor in the higher end markets Java EJB server market where companies are buying higher end software and hardware products? Several people running JBoss have commented that they would be better off running under Windows NT than Linux. A FreeBSD 5.0 with Java could displace those SPARC and AIX boxes which are populating some corporate racks.
One of the original purposes of Java was to overcome Sun's obstacle in the desktop market place. There were ten thousand apps for the PC and hundreds on the Sun. By creating a virtual machine, developers could write one application that would run equally well on all platforms. With such a goal, it would be advantageous to “put out” as many applications as possible. But, perhaps Sun has given up on the desktop marketplace. They see their market in the racks of web enterprises. By allowing any platform to run Java, Sun suffers the risk of having its markets eaten into by those platforms. Perhaps it is Sun who has given up on the promise of Java.