I come from a strong Java background and in recent years have been also developing in C#.
What I can never understand is how far behind (Personal Opinion) the Visual Studio IDE’s are in compared with Intelli-J IDEA and Eclipse (Java).
There have been improvements by Microsoft from VS 2005 to VS 2008, but I feel they are not quite there in terms of taking the development experience to the next level.
What I want to know is, is VS 2010 any different?
Why is it that the tools and syntax editors are so much more “evolved” in the Java IDE’s.
Just to name a few:
- Code Completion (Much more advance in Java IDE’s)
- Ant Integration (Eclipse and IDEA) vs Visual Studio Build Events
- Lack of Code Repository integration in VS (Subversion and CVS) out of the box.
- Lack of Advance Re-factoring Tools in Visual Studio.
Thanks.
A few points…
People tend to like what they know.
It is quicker to get up-to-speed in C# as the IDE and most of the tools / docs come from a single source.
In the Java world you have a lot more chooses, this is great for expert that spend times learning about them all, but does also lead to its own problems.
Adding ReSharper or Refactor to Visual Studio may give you what you want.
The Visual Studio debugging is great.
Visual Studio tries to make life easy for you by trying to find missing dlls etc and then storing where they are in the registry. This may be great for a 1 man project, but can often lead to build problems across developer’s machines if you are not careful. In the Java world you have to edit more config file by hand, but at least you can put these files under source code control.
There is not a small command line tool that works well on a build server that will build all types of Visual Studio projects. However in day to day usage you don’t need to learn how to use command tools, as Visual Studio hides them form you.
Note I wrote this over 6 years ago, since then C#/.Net has got a lot more complex, with lots of open source projects. Microsoft has also open sourced a lot of the .net framework. For web and server side development I expect there is now little to choose between the Java world and the .Net world. For “smart clients” .net still have a lot to offer including the new support from cross device phone development.
For multi-threaded IO, I think c# is years ahead of Java, but that could change as C# and Java keeps learning from each other…