The day Microsoft 'embraced and extended' Java
Myths and legends It's early December 1995 and it has been a heady few days for Java. IBM and Adobe Systems have agreed to license this strange and embryonic new software that Sun Microsystems keeps telling us can be "written once and run anywhere".
Now December 7 is dawning bright and blue over America's Pacific coast, and with it breaks the news that startles an industry. "Today Microsoft has announced that it has signed a letter of intent with Sun for a Java technology source license... Microsoft has agreed in principle to provide to Sun Microsoft's reference implementation of the Java virtual machine," said Java software division director of corporate marketing George Paolini.
"We are happy to be working with Microsoft on a license for the Java technology and look forward to working with them on optimizing the Java technology for Windows," Sun said in an official release.
On the same day, though, Bill Gates gave the keynote at Microsoft's Internet Strategy Workshop, an event he used to outline his company's internet strategy. It was the height of Microsoft's "embrace and extend" policy. "We will embrace all the popular internet protocols," said Gates. "Anything that a significant number of publishers are using and taking advantage of we will support. We will do some extensions to those things."
Java was a case in point. At the same moment Paolini was stating that "applications written in Java will run anywhere," Gates was making no secret of Microsoft's intention to create extensions for Windows. Microsoft later made public the full text of its March 1996 agreement, which provides for the licensee to "make, access, use, copy, view, display, modify, adapt, and create derivative works of the technology."
Microsoft was quick to deliver such extensions, presenting a design preview the following May. A press release emphasized how Java integrates with ActiveX, Windows-specific components. "Developers will be able to write Java applets that work with ActiveX Controls... developers can also use Java to create ActiveX Controls that work with ActiveX Controls written in other programming languages. All of these will run seamlessly on the Java reference implementation in Windows," Microsoft said.
Might make more sense to only comment after you've read something about what .NET is.
The .NET VM is far faster than the JVM (which makes sense) and is better implemented than Java in general. I've spent a few years coding in Java, I did C++ before that, I now do C++, but I prefer working with C# (and I was a diehard C++er until I started learning C#). It has a few problems with the language (that will be here to stay unfortunately), but overall it's fantastic, and a joy to be using VS as well (let's face it, there's IDEs that come close, but the only one I've used that I would consider an alternative to VS in Java is iDEA, but it deleted about 70% of the work I was doing on refactoring so I lost some faith in it).
More than just $20 million
The article suggests that the $20 million was sufficient to settle the spat between Sun and Microsoft about Java. However, Sun filed an antitrust lawsuit against Microsoft in 2002 for using Windows to undermine Java. This was resolved in April 2004 to the tune of $700 million! At the same time, Microsoft and Sun signed a $900 million licensing deal.
I've written with Java and .NET. The Java applet project I was involved with was written with MS J++, but tested with Suns JVM. I just prefer the developer tools from Microsoft, compared to things like NetBeans, which seemed to take 1/2 hour to start-up on my system and looked and felt totally different to all my other windows software.
I also think .NET is one thing Microsoft has actually done very well. Both C# and Visual Basic.NET are ahead of Java imho with respect to things like generics and the richness of their libraries. WPF (Windows Presentation Foundation) is another technology that I think is going to ably compete with Flash (Action Script if I remember was a royal pain in the arse). I would even go so far as to say MS are ahead of the game with their WPF coding model, especially as it's backed by the .NET CLR.
I don't hold out much hope of true .NET platform cross-compatibility; people speak of Mono, but as far as I can tell the application would have to be pretty limited to succeed (and as such, why not just use Java?). In any case, in these days of Virtualisation, does cross platform compatibility really matter? I wonder.