Regarding Microsoft not including a Java VM with XP, it is not unexpected but still slightly disappointing. Microsoft's business practices really upset me to the point where I dislike using their products anymore than I have to. Since the early days of Java, they have done a number of things to attempt to hamper its adoption. Many of us know those things, so I won't rehash them.
However, I don't think Java developers should really consider Microsoft's failure to include a Java VM in XP as a big deal. We knew they weren't Java advocates, and it's easy to bundle a Java VM with a Java application. I use a product called InstallAnywhere (
www.zerog.com) to do just that, and have done so even when Microsoft did include a Java VM. This is seamless and does not require any step on the part of the user. Products like Java Webstart (a Sun technology) should also help with such issues.
Why have I always installed a Java VM with our product? Because it allows me to control the Java VM that is running our program without replacing any Java VM the user might already have installed. There are differences between Java VMs, and you should learn about them if you're going to develop commercial software in Java.
For instance, although Sun's Java VM version 1.3 for Windows is quite fast and good at managing memory, we cannot ship it with our product. Why? Because of nasty bugs related to anti-aliasing of text. As a result, we ship IBMs Java VM for Windows with our product, which is not as good about managing memory. When Sun's Java VM version 1.4 comes out, we will test our product under that VM and re-evaluate our decision.
It's also very important to test the virtual machines on all the platforms you plan to deploy on, even if there isn't a choice of Java VM vendors. Does the Java code I wrote on a Windows machine run on a Mac? Yes, under MacOS 8.1 and higher as well as OS X. Are there platform differences you must accomodate? Yes. There are times where you must check what OS you're running on or what Java VM version is running, and have your code address that. Write once, test everywhere.
Regarding C#, I think its timing is such that it will have minimal impact on Java. Java has had a 5+ year headstart on C# and is now quite well established. Java also has the backing of most other major players in the software industry outside of Microsoft. I don't see compelling benefits to C# over Java, except for those developers who like the comfort of a Microsoft-centric world.
The above said, Microsoft has done some great work on Macintosh products lately. I've looked at the Office package for Mac OS X, and it seems quite impressive. I will probably buy it and use it rather than Appleworks (which I did purchase) because it is easier for me to interact with coworkers and their documents by using Office. Internet Explorer 5.1 for Mac OS X 10.1 seems quite stable, although I generally use Opera, OmniWeb, or Netscape 6.1 in OS X (yes, I am using IE right now).
- Mike