I dont quite agree with your Java and C# assumptions.
Which points to you contest exactly? The fact that Java EE is based on specifications that specifically target enterprise applications and that .NET has nothing in that segment?
In my experience Java turns out to be more of a pain than C#.
Naturally, most .NET developers say that. You apply the right tool for the right job. Java EE is enterprise, you don't do it unless you plan on running redundant, distributed multi-tier enterprise applications, that is the arena. It wasn't developed for RAD, it was developed to handle large volume and offer stability. If you create a small application with low volume on a single server then why on earth would you use Java? I wouldn't use C# (I'm a bit more inclined to PHP in the RAD environment) but to each his own. Microsoft definitely has a competitive product in that area, VS makes it easy to develop, it's got a nice GUI, you don't have to worry about complicated specs, you simply stick to MS and it'll run.
And I dont think its the Java language itself, its more the tools and environment setup.
A programming language is a tool. The environment and tools that come with it (for example IBM Websphere) is exactly the reason you use a specific language for a specific environment.
The one big advantage C# is that I can run multiple versions of the framework (.net 1.1, 2 and now 4) on the same machine.
Not sure why that is an advantage...
You can, but why would you want to? Each version is fully complaint with the Java SE/EE/ME specification, if your program compiled before that means they were complaint then and will be in all future versions, where do you think the write once run anywhere philosophy started? If your program was compiled to byte code on the first release of the Java compiler it will still run on the latest release of the JVM.
I think both languages have their place and it depends on who the person is coding the application.
Both have their place yes. No, who codes the application is relevant to a certain point. I put it to you that .NET cannot deal with the large transaction volumes that Java EE can, nor does it have all the code in place to deal with the large applications that Java can deal with already in the enterprise segment. Unless you plan on coding all that, testing, etc. you'll be using Java. That was the point I was trying to make.
A good Java developer wont make a good C# developer out of the box, and vice a versa. You have to know the environment.
Yes, but the Java environment is far more complex than the .NET. Starting from scratch in the .NET arena is much easier. I've done both, so I feel I can comment.
Here is a good analysis of the two platforms:
http://www.adam-bien.com/roller/abien/entry/java_ee_or_net_an
A bit older ones:
http://www.theserverside.com/news/1...comparison-of-building-XML-based-web-services
http://it.toolbox.com/blogs/lim/net-vs-j2ee-java-ee-architectural-philosophy-11290
They all sing the same tune, feel free to explore for yourself.