Okay, I've been thinking about this for a while, but I wanted to write it down.
First, I've got some old coworkers and blog pals who are doing some really cool stuff with .Net and I think it's great for them. They were doing stuff with Microsoft for a long while and I'm happy for them that .Net has finally dropped out of the vapor so they can enjoy the low-level power that Java developers have been enjoying for years. I don't wish evil on these guys. Hey, if you're earning a decent buck doing .Net programming, I'm not going to tell you to stop.
However, all you guys doing Java development, you need to be vigilent. You need to learn .Net's bad points and repeat it to everyone you can possibly repeat it to. It's not DotNet it's DotNot. If your boss is thinking about a Microsoft solution, you need to explain to them the benefits of working with Java instead. If YOU are thinking about downloading a 20 meg runtime and playing with it, resist the temptation and spend the time working on an open Java solution instead.
Why? Because if not, you're going to end up having to program on a Microsoft OS using MS tools the way MS wants you to. You're going to end up helping the $40 Billion Borg double their money they already have. You're going to lose the flexibility and power that Java allows you. You're going to have to start from scratch again learning a more restrictive copy of an already powerful programming language. Just don't do it.
It's very simple. DotNot came several years after Java. Therefore many of the dumb ass things in Java have been fixed (enums for example). This is great for the MS guys but it shouldn't mean crap to the Java guys... we can live without the small improvements. And though it sounds great that DotNot's VOS means that you can program in any "language" that you want to since it all boils down to an abstract object system underlying the code, it's a lie. It's all just marketing. Everyone's going to end up using C# anyways since it most closely models the object system and mimics Java the best.
Some of the things that DotNot does do better is things that should have been fixed years ago in Java, I admit. Visual Studio is still the best IDE there is - though hopefully Eclipse will start to change that soon. And WindowsForms kicks Swings ass. Hopefully XUL and Mozilla will come to the rescue, but still, it's a weak point. And finally, the DotNot CLR is going to be faster on MSOSes than the JVM... it's a fact. It's targeted at one platform and for speed whereas the JVM is made for portability with JIT tacked on after...
The DotNot system in general is technically strong - there should be no debate about this. But still. There is NO ROOM for TOLERANCE of DOT NOT. Scott McNealy, not known for his tact and not my favorite person, did say it best:
"Think Java. Write new applications in Java. Rewrite legacy apps with Java. Don't upgrade or downgrade. Sidegrade instead to a Java desktop device... I don't understand why anybody would be programming in anything other than Java"
Perfect. Explain it to your boss in terms of Microsoft FUD:
1) There's already a bunch of time, effort and money invested in Java solutions. The bugs have been worked out by now. .Net's just starting... it's a classic MS solution that won't be production grade until version 3.0 . There's no technological or economic reason to switch or even consider DotNot.
2) There's already a bunch of people who understand Java. Why retrain or chance a technology that's only limiting your resources?
3) So what if you can program in any language you want in DotNot. Do you REALLY want all your in-house apps written in 20 freakin' languages? Even if they can interoperate, it'll be a maintenance nightmare. And don't think you can just port all your COBOL code to .COBOL# or whatever it's called because it won't work. Every language needs to conform to the CLS, which means fundamental changes to the way they work. Ask the VB guys. It's all just MS crap.
4)Security: It's Microsoft. Look at their track record. Are you going to trust them? Nope. Does "managed code" seem like a good idea to you? Nope. Will the system be buggy and full of dangerous overflow holes? You bet. It's a fact. It's a 1.0 MS product... it's going to suck for several more years. Bet on it.
Right now I can develop for website using Java locally on an MSOS and push it to my Linux server 2000 miles away without a moments hesitation. It works exactly as advertised. At work it's the same thing, but with HP-UX as the server. In thinking about my next computer, I can look at Macs, Linux boxen or another MSOS... it doesn't really matter. However, once you start down the .Net road, you're never turning back.
My Mom and I were chatting today (about the new pics mostly) and she asked me, "Hey, what's with the Butterfly? Is that something I want?" Oh Jesus. No. This is what's happening in the programming world too. Microsoft is using its marketing muscle to put .Net out there... But if you're a Java guy you have to resist this crap and do what you can to fight against it.
Remember Netscape? Remember how they singlehandedly launched the internet boom while Microsoft was pushing MSN 1.0? And then Microsoft came in, copied the product, gave it away for free, and crushed it out of existance. What do you think is going to happen to Java? They've copied the technology, now they're launching a full out attack on Sun. In as little as 4 or 5 years, Java could be a niche language like COBOL. Don't let it happen.
It's war. You're either on the good side or the bad side. And we all know who the convicted felons are. Personally, I don't know how Microsoft programmers sleep at night.