I decided to promote this exchange from my comments section on the last post:
IMHO it's fairly simple.
If you develop web apps in ASP / Visual Basic, you should seriously think about learning C# and upgrading to ASP.NET.
If you develop desktop apps for Windows in Visual Basic, Java or C++, you should learn C# and start using it for everything in a couple of years, when everybody running Windows has the .Net runtime. It'll make your life much easier, and your apps will behave like real Windows applications.
Otherwise -- keep doing what you've always been doing. If you develop web apps in Java or desktop apps in Delphi or Python, it's a waste of time to port to C#, because you're already using a good platform. If you develop desktop apps for Linux or the Mac, keep using your favourite development system, whether it's Java, C++, Python, or whatever.
.Net is the future of programming for Windows. You want to switch to it if (1) you program for Windows, and (2) your current system doesn't do what you want. Otherwise, stay where you are; there's nothing to gain by moving.
I respectfully disagree with this. I see your point and it makes sense, but we're talking about Microsoft. They're going to use whatever advantage they have as a leverage to push out all competitors. Java, Python or what have you.
You pointed out my problem exactly: Java needs to continue to grow and thrive. Growing means the continued recruitment of MS programmers. If you're using ASP right now, don't switch to another crappy MS solution ASP.NET, you need to switch to Java. If you're doing VB programming, switching to VB.NET is going to be as much effort as switching to Java, so you should switch to Java.
Java's a better platform. It's a 3.0 language and platform with a ton of libraries already written, the bugs worked out, the security tested. It's mature and does everything that .Net claims it will do and does it better now.
.Net may be the future of Windows programming, but it shouldn't be the future of programming period. What you said sounds reasonable. But you CAN'T BE REASONABLE with Microsoft because they LIE. They market and spin. .Net is a 1.0 product that is substantially different than everything that came before it. The effort to move to DotNot programming is going to be huge - so don't do it. Move to Java.
As for #2, the problem with Microsoft programmers is they don't KNOW what is out there. Their whole world is Microsoft so they don't realize what "uptime" is or real security or what being able to develop your whole system on multiple platforms totally remotely. Right now Microsoft is using FUD again. "Don't move from MS because, hey, we've got DotNet coming. It's going to be GREAT!" Christ, when have we heard that one before? It's bullshit, as always from MS.
Stick with Java. MOVE TO JAVA. Now.