Much of the promise of Java has been delivered. But it's going to take a lot of work by a lot of people to take Java from being a relatively immature--though useful--tool for a variety of tasks to a mature, robust system which can be applied to almost any computing problem.
A large degree of the interest in Java is because Sun has presented it as a ``Write Once, Run Anywhere'' technology. Sun has an obligation to the organizations and individuals supporting Java to keep it unified, and to keep the ``Write Once, Run Anywhere'' promise.
Microsoft will have none of this. Microsoft realizes that a ubiquitous Java Virtual Machine is a direct threat to the virtual monopoly that they've been able to build primarily through savvy marketing and questionable business tactics. A recent example of a questionable business tactic is the surreptitious behavior and interface modification of some of Java's core classes in their own implementation of Java. Programmers who do not recognize these undocumented changes can build their applications expecting them to run anywhere that Java can be found, only to discover that their code works only on Microsoft's own Virtual Machine, which is only available on Microsoft's own operating systems.
Sun Microsystems, so far, has been doing an admirable job of keeping its ``Write Once, Run Anywhere'' promise. This means refusing to tolerate ``alternate'' implementations. Java must be united if it is to ``Run Anywhere''. If Microsoft wishes to propose new functionality to Java, it's perfectly free to do so, just as countless other companies have done. However, it must cooperate such that the goals of Java--including ``Write Once, Run Anywhere''--are brought closer to achievement, not further away.