Lord knows I'm no fan of MS, but I can't believe that Sun would sue MS over this!
The fundamental problem is that Java (and in particular it's cross-platform capabilities) have been hyped so far beyond reality that Java is beginning to loose its shine and so Sun is looking for someone to attack and divert attention from the fact that, to date, no-one has been able to actually DO anything with Java.
I actually think MS approach is quite reasonable: Java is a very nice language to work with, quite independent of any perceived or actual cross-platform benefits. If I am happy to target the Win32 platform only, then why NOT be able to call upon the native API directly for performance and capability reasons? And if I DO want cross-platform, then I just won't use those API facilities (or I'll use another tool altogether).
All I really want is for the MS Java VM to run "100% Pure Java" apps correctly. If it ALSO runs JDirect apps - well, so much the better. And given the MS is the reference VM for the Win32 platform, that pretty much seals it, no?
Java's goals are ambitious, and the approach to cross-platform development in embedded systems is absolutely right.
If it were 8 years ago, and you were talking about Windows instead of Java, the same over-hyped "can't do anything with it" complaint would apply equally. Windows needed time to mature, and Microsoft's persistence is to be applauded for standing behind Windows through the times when the pundits said the same thing about Windows as is now being said about Java.
I seem to recall Desqview being a very real alternative multitasker at the time. QuarterDeck and MS did not sue each other - they just put effort into developing their offerings. Ditto IBM's OS-half v Windows. Litigation in this scenario, to me, indicates that you are acknowledging you can't win any other way.
JDK 1.2 has made significant strides, and Java's growing pains are coming to an end. Unless new technologies have time to mature, they can never be compared even with inferior technologies which have gone through several maturity cycles like Windows has.
You're talking to someone who is all too aware of this -- remember, I like Delphi but use VB 99% of the time...
Is Microsoft's white bread so compellingly tasty that we must forgo really good food in order to stuff ourselves with it?
No, but neither is Sun able to prescribe that I cannot spread their sourdough rye with creamy butter if that's what I choose to do, acknowledging that in that case it is probably no more healthy than MS' white bread <g>
Sun is right to try to assure that Java code does run on all platforms. That's the whole reason for Java's existence. Java doesn't have to be boring and incapable, but it does need to deliver on the very thing which makes it an attractive alternative to other languages. If you want to make something run on Windows, you have many options. Java doesn't need to become yet another Windows developers tool as we have enough of those.
Sun agreed to make MS the owner of the reference implementation, and this is good. It assures that Java will work well on the platform. But MS has refused to work with Sun at all, and rather hands Sun documents and deliverables at the same time as the general public does. In fact, Sun had to wait until IE4 was downloadable from the web site in order to get a copy of the VM to do compliance testing! MS would not give them any preference or work with them in any way to try to address the larger goals Java is trying to achieve.
In my opinion, Sun is totally correct in their claim that MS is intentionally trying to turn Java into a Windows-only technology. It is clear from the new release that JDK1.2 applications written using J++ will operate only in IE4 because MS has actually masked Win32 events and given them the same names as Java events, but has not conformed to the Java event coding, semantics, or other requirements which would make the applications work anywhere except under Win32.
So, essentially, when a Java event is supposed to be sent under certain circumstances, it will actually happen only if you are lucky enough to happen to have a Win32 event which just happens to be sent exactly at the same time.
From rather extensive experience with Windows events, it's clear that any application written would have to be tweaked to respond to the events as Win32 defines them, and to try to make sure that the same application runs elsewhere would be close to impossible.
There are myriads of other issues, but suffice it to say that none of the enhancements Microsoft has made to Java are in the interests of creating a good, reliable cross platform tool, and are specifically targetted at providing developers with more alluring Win32 alternatives to Java capabilities rather than work to assure that the Java capabilities are implemented properly to work within the environment. This should be no surprise, right? But, I don't think it fits in with the strategy that many other adopters of Java are banking on, and I think Sun is, for the most part, acting responsibly in the interests of Java stakeholders.
Sun is not slack in their dedication to making sure Java works properly, BTW. It is not fair to judge Sun by the implementation of Java Borland developed for Netscape or for Corel's foolish attempt to compete with MSOffice with a Java suite. The latter labels Corel as a stupid company, and doesn't say anything about Java. Try writing MSOffice in WISE. If you can't, does that mean WISE is a bad technology?
Sun is not perfect and I don't have any illusions of that. But, I want more choices, not fewer. So, I'm glad that Sun is at least willing to stand up for something reasonably important against what will probably be a hopelessly overwhelming competitor.
It's one of those cases, though, where keeping quiet and bending over might have been better. If Sun doesn't have an amazingly drum-tight case, they're fools for pursuing this.
I agree about the approach to cross-platform development. The portable VM with adjustable sandboxing is just right and makes a lot of sense when portability and security are of concern. However there is NO valid reason to prevent extensions to the Java *language* that are not cross-platform compatible. Java is a really NICE language and its attraction (for me, anyway) has nothing to do with any platform independence it may or may not have. I think I have mentioned more than once that Java is Object Pascal with C syntax -- philosophically, it is Delphi's twin.
I think that Sun would have a valid complaint IFF it could demonstrate that applications that worked correctly on the JavaSoft reference implementation of the Java VM did NOT work correctly on the MS VM. In that case, Sun could legitimately claim that MS was requiring developers who were targeting multiple platforms to use custom code for the MS Win32 platforms and we would all agree that this would be a bad thing.
However, I don't think that this has been demonstrated or claimed (although it has been hinted as a possible future problem). MS has added additional capabilities to its VM and class libraries that allow (but do not compel) Java programs to take advantage of the full Win32 infrastructure. Now obviously, if a developer DOES use these facilities then the program is no longer a portable program -- it is a Windows program that happens to have been written in Java.
As long as a developer can use all of the native JavaSDK functionality through the MS VM, then what, exactly, is JavaSoft's problem?