Visual Studio vs Eclipse

I often see people in newsgroups saying how wonderful Visual Studio is, and they often
claim it’s the “best IDE in the world”. Strangely enough, most go silent when I ask how
many other IDEs they’ve used for a significant amount of time. I’m not going to make any
claims as to which IDE is “the best” – I haven’t used all the IDEs available, and I know
full well that one (IDEA) is often regarded as superior to Eclipse. However, here are a
few reasons I prefer Eclipse to Visual Studio (even bearing in mind VS 2005, which is a
great improvement). Visual Studio has much more of a focus on designers (which I don’t
tend to use, for reasons given elsewhere) and much less of a focus on making actual coding
as easy as possible.

Note that this isn’t a comparison of Java and C# (although those
are the languages I use in Eclipse and VS respectively). For the most part, I believe C#
is an improvement on Java, and the .NET framework is an improvement on the Java standard
library. It’s just a shame the tools aren’t as good. For reference, I’m comparing VS2005
and Eclipse 3.1.1. There are new features being introduced to Eclipse all the time (as I write,
3.2M4 is out, with some nice looking things) and obviously MS is working on improving VS
as well. So, without further ado (and in no particular order):

Open Type/Resource

When I hit Ctrl-Shift-T in Eclipse, an “Open Type” dialog comes up. I can then type in
the name of any type (whether it’s my code, 3rd party library code, or the Java standard
library code) and the type is opened. If the source is available (which it generally is –
I’ve used very few closed source 3rd party Java components, and the source for the Java
standard library is available) the source opens up; otherwise a list of members is displayed.
In large solutions, this is an enormous productivity gain. I regularly work with solutions
with thousands of classes – remembering where each one is in VS is a bit of a nightmare.
Non-Java resources can also be opened in the same way in Eclipse, using Ctrl-Shift-R instead.
One neat feature is that Eclipse knows the Java naming conventions, and lets you type just
the initial letters instead of the type name itself. (You only ever need to type as much as you
want in order to find the type you’re after anyway, of course.) So for example, if I type
“NPE”, I’m offered NullPointerException and NoPermissionException.

Note that this isn’t the same as the “Find Symbol” search offered by VS 2005. Instead,
it’s a live updating search – as you type, the list is updated. This is very handy if you can’t
remember whether it’s ArgumentNullException or NullArgumentException and the like – it’s very fast
to experiment with.

There’s good news here: Visual Studio users have a saviour in the form of a free add-in
called DPack, by USysWare. This offers dialogs
for opening types, members (like the Outline dialog, Ctrl-O, in Eclipse), and files. I’ve only
just heard about it, and haven’t tried it on a large solution yet, but I have high hopes for it.

Sensible overload intellisense

(I’m using the word intellisense for what Eclipse calls Code Assist – I’m sure you know what I mean.)
For some reason, although Visual Studio is perfectly capable of displaying the choice of multiple
methods within a drop-down list, when it comes to overloads it prefers a spinner. Here’s what you get
if you type sb.Append( into Visual Studio, where sb is a StringBuilder
variable:

Here’s what happens if you do the equivalent in Eclipse:

Look ma, I can see more than one option at once!

Organise imports

For those of you who aren’t Java programmers, import statements are the equivalent to using directives
in C# – they basically import a type or namespace so that it can be used without the namespace being
specified. In Visual Studio, you either have to manually type the using directives in (which can be
a distraction, as you have to go to the top of the file and then back to where you were) or (with 2005)
you can hit Shift-Alt-F10 after typing the name ofthe type, and it will give you the option of adding
a using statement, or filling in the namespace for you. Now, as far as I’m aware, you have to do that
manually for each type. With Eclipse, I can write a load of code which won’t currently compile, then
hit Ctrl-Shift-O and the imports are added. I’m only prompted if there are multiple types available
from different namespaces with the same name. Not only that, but I can get intellisense for the type
name while I’m typing it even before I’ve added the import – and picking the type adds the import
automatically. In addition, organise imports removes import statements which aren’t needed – so if you’ve
added something but then gone back and removed it, you don’t have misleading/distracting lines at the
top of your file. A feature which isn’t relevant to C# anyway but which is quite neat is that Eclipse allows
you to specify how many individual type imports you want before it imports the whole package
(e.g. import java.util.*). This allows people to code in whatever style they want, and still get
plenty of assistance from Eclipse.

Great JUnit integration

I confess I’ve barely tried the unit testing available in Team System, but it seems to be a bit of a pain
in the neck to use. In Eclipse, having written a test class, I can launch it with a simple (okay, a slightly
complicated – you learn to be a bit of a spider) key combination. Similarly I can select a package or a whole
source directory and run all the unit tests within it. Oh, and it’s got a red/green bar, unlike Team System
(from what I’ve seen). It may sound like a trivial thing, but having a big red/green bar in your face is a
great motivator in test driven development. Numbers take more time to process – and really, the most important
thing you need to know is whether all the tests have passed or not. Now, Jamie Cansdale has done a great
job with TestDriven.NET, and I’m hoping that he’ll integrate it with
VS2005 even better, but Eclipse is still in the lead at this point for me. Of course, it helps that it just
comes with all this stuff, without extra downloads (although there are plenty of plugins available). Oh, and
just in case anyone at Microsoft thinks I’ve forgotten: no, unit testing still doesn’t belong in just
Team System. It should be in the Express editions, in my view…

Better refactoring

MS has made no secret of the fact that it doesn’t have many refactorings available out of the box. Apparently
they’re hoping 3rd parties will add their own – and I’m sure they will, at a cost. It’s a shame that you have
to buy two products in 2005 before you can get the same level of refactoring that has been available in Eclipse
(and other IDEs) for years. (I know I was using Eclipse in 2001, and possibly earlier.)

Not only does Eclipse have rather more refactorings available, but they’re smarter, too. Here’s some sample code
in C#:

public void DoSomething()
{
string x = "Hello";
byte[] b = Encoding.UTF8.GetBytes(x);
byte[] firstHalf = new byte[b.Length / 2];
Array.Copy(b, firstHalf, firstHalf.Length);
Console.WriteLine(firstHalf[0]);
}

public void DoSomethingElse()
{
string x = "Hello there";
byte[] b = Encoding.UTF8.GetBytes(x);
byte[] firstHalf = new byte[b.Length / 2];
Array.Copy(b, firstHalf, firstHalf.Length);
Console.WriteLine(firstHalf[0]);
}

If I select the last middle lines of the first method, and use the ExtractMethod refactoring, here’s
what I get:

public void DoSomething()
{
string x = "Hello";
byte[] firstHalf = GetFirstHalf(x);
Console.WriteLine(firstHalf[0]);
}

private static byte[] GetFirstHalf(string x)
{
byte[] b = Encoding.UTF8.GetBytes(x);
byte[] firstHalf = new byte[b.Length / 2];
Array.Copy(b, firstHalf, firstHalf.Length);
return firstHalf;
}

public void DoSomethingElse()
{
string x = "Hello there";
byte[] b = Encoding.UTF8.GetBytes(x);
byte[] firstHalf = new byte[b.Length / 2];
Array.Copy(b, firstHalf, firstHalf.Length);
Console.WriteLine(firstHalf[0]);
}

Note that second method is left entirely alone. In Eclipse, if I have some similar Java code:

public void doSomething() throws UnsupportedEncodingException
{
String x = "hello";
byte[] b = x.getBytes("UTF-8");
byte[] firstHalf = new byte[b.length/2];
System.arraycopy(b, 0, firstHalf, 0, firstHalf.length);
System.out.println (firstHalf[0]);
}

public void doSomethingElse() throws UnsupportedEncodingException
{
String y = "hello there";
byte[] bytes = y.getBytes("UTF-8");
byte[] firstHalfOfArray = new byte[bytes.length/2];
System.arraycopy(bytes, 0, firstHalfOfArray, 0, firstHalfOfArray.length);
System.out.println (firstHalfOfArray[0]);
}

and again select Extract Method, then the dialog not only gives me rather more options, but one of them is
whether to replace the duplicate code snippet elsewhere (along with a preview). Here’s the result:

public void doSomething() throws UnsupportedEncodingException
{
String x = "hello";
byte[] firstHalf = getFirstHalf(x);
System.out.println (firstHalf[0]);
}

private byte[] getFirstHalf(String x) throws UnsupportedEncodingException
{
byte[] b = x.getBytes("UTF-8");
byte[] firstHalf = new byte[b.length/2];
System.arraycopy(b, 0, firstHalf, 0, firstHalf.length);
return firstHalf;
}

public void doSomethingElse() throws UnsupportedEncodingException
{
String y = "hello there";
byte[] firstHalfOfArray = getFirstHalf(y);
System.out.println (firstHalfOfArray[0]);
}

Note the change to doSomethingElse. I’d even tried to be nasty to Eclipse,
making the variable names different in the second method. It still does the business.

Navigational Hyperlinks

If I hold down Ctrl and hover over something in Eclipse (e.g. a variable, method or type
name), it becomes a hyperlink. Click on the link, and it takes you to the declaration. Much
simpler than right-clicking and hunting for “Go to definition”. Mind you, even that much
isn’t necessary in Eclipse with the Declaration view. If you leave your cursor in a variable,
method or type name for a second, the Declaration view shows the appropriate code – the line
declaring the variable, the code for the method, or the code for the whole type. Very handy if
you just want to check something quickly, without even changing which editor you’re using.
(For those of you who haven’t used Eclipse, a view is a window like the Output window in VS.NET.
Pretty much any window which isn’t an editor or a dialog is a view.)

Update! VS 2005 has these features too!
F12 is used to go to a definition
(there may be a shortcut key in Eclipse as well to avoid having to use the mouse – I’m not sure).
VS 2005 also has the Code Definition window which is pretty much identical to the Declaration
view. (Thanks for the tips, guys 🙂

Better SourceSafe integration

The source control integration in Eclipse is generally pretty well thought through, but
what often amuses me is that it’s easier to use Visual SourceSafe (if you really have to – if you
have a choice, avoid it) through Eclipse (using the
free plug-in) than
through Visual Studio. The whole binding business is much more easily set up. It’s a bit more
manual, but much harder to get wrong.

Structural differences

IDEs understand code – so why do most of them not allow you to see differences in code terms?
Eclipse does. I can ask it to compare two files, or compare my workspace version with the
previous (or any other) version in source control, and it shows me not just the textual
differences but the differences in terms of
code – which methods have been changed, which have been added, which have been
removed. Also, when going through the differences, it shows blocks at a time and then what’s
changed within the block – i.e. down to individual words, not just lines. This is very handy
when comparing resources in foreign languages!

Compile on save

The incremental Java compiler in Eclipse is fast. Very, very fast. And it compiles in the
background now, too – but even when it didn’t, it rarely caused any bother. That’s why it’s
perfectly acceptable for it to compile (by default – you can change it of course) whenever you
save. C# compiles a lot faster than C/C++, but I still have to wait a little while for a build to
finish, which means that I don’t do it as often as I save in Eclipse. That in turn means I see some
problems later than I would otherwise.

Combined file and class browser

The package explorer in Eclipse is aware that Java files contain classes. So it makes sense to
allow you to expand a file to see the types within it:

That’s it – for now…

There are plenty of other features I’d like to mention, but I’ll leave it there just for now.
Expect this blog entry to grow over time…

80 thoughts on “Visual Studio vs Eclipse

  1. Although I agree with most of your points, you failed to mention the one reason that will make me a VS believer forever – the speed. I have almost 3 yrs experience with eclipse (WSAD, to be specific), and if the PC was less than HAL, it just didn’t move. 15 minues to open the solution, 1 min
    to open the intellisense box (or whatever they call it there…), 10 mins to compile the whole project, 15 mins to restart the server, about 15 times a day this restart was required, and so on and so forth.
    The features it has are really nice – I just didn’t find enough time to use them.
    On the other hand, just today I’ve installed VS 2005 on my wife’s machine, which is Celeron 1.3 with 256MB RAM, works like a charm.

  2. VS has the equivalent of the navigational hyperlinks with the F12 key (Edit.GoToDefinition). I used to love the navigational hyperlink, but that requires one to reach for the mouse!

  3. Memi: I don’t find Eclipse that heavy – it’s certainly as responsive as Visual Studio on everything I’ve used it for. It helps if you tell the JVM that it can have a lot of memory, but I’ve never found it a problem. I’ve never seen an Eclipse workspace open as slowly as the VS.NET (2003 admittedly) solution I regularly use at work, nor does it take as long to compile. What JVM were you using last time you tried it?

  4. David: Yes, Ian Griffiths has pointed out F12 to me now. VS 2005 also has the code definition window which is just like the declaration view, so that’s good. I’ll update the entry later.

    From Ian’s mail, it sounds like I haven’t described the Open Type dialog well enough – it’s a live dialog rather than just a search that is then performed. I’ll try to improve that too.

  5. So, I’ve used a few IDEs.
    Visual Studio 6-2005
    IntelliJ
    Eclipse
    XCode 2.1-2.2
    Delphi -something (don’t remember the version)
    Lots and lots of one-offs that I tried and never used again.

    Eclipse is SLOW, it’s slow on my iBook, it’s slow on my PC with 256MB of RAM, it’s slow on my PC with 1GB of RAM. It’s just SLOW. Slow to start, slow to do anything, even slow to close. Even IDEs based on Eclipse (like the RadRails IDE) are slow. That being said, it’s UI widgets are still much faster than the default Java widgets.

    IMO, Visual Studio has the best debugger of any IDE on the market. If anyone knows of one that is better, PLEASE tell me. But the IDE itself annoys me.

  6. Hmm. As I said, I have no performance problems with Eclipse. Anyway, about debuggers:

    The Eclipse debugger is a real mixed bag. It has some *great* features – and some lousy ones. It’s a faff to add watch expressions (just a little faff, but it’s not as nice as VS) but it’s got some lovely breakpoint features (in terms of conditions and the like). It also allows you to specify code to format how the value of a particular type should be seen.

    I always change the Eclipse shortcut keys for the debugger to be the same as VS, just because I’m used to them from VS.

    To be honest, I don’t tend to spend that much time in debuggers anyway, so I probably don’t have as much experience as most, but I generally find Eclipse about as good as VS on that front.

    Btw, I’ve decided that after a good poke around VS2005 I should really write a “Visual Studio strikes back” entry as well, for cool things which VS does but Eclipse doesn’t. It may well be shorter than this one, however 🙂

  7. Well I also agree that eclipse is slow. It has some addtional tools which are not available in VS. It does not have good documentation and is not very easy to extend (Add-Ins). But afterall it’s freeeeeeee!. Everyone loves free goodies.

  8. It’s clearly not that had to extend Eclipse with add-ins, given the number of free plug-ins available. Heck, I’ve written my own before now. The availability of some great plug-ins is another feature in itself, in some ways. The Spring Beans plug-in is particularly handy for viewing how an IoC application is wired together.

    I agree that the documentation could certainly be better – and that goes for both “user” documentation and “plug-in developer” documentation. At least, last time I looked. I don’t tend to need the user docs, and I haven’t written a plug-in for a couple of years.

    Oh, and it’s also possible to change existing code (again, something I’ve done in the past) as it’s all open source. I changed what editor tabs looked like (to get rid of the filename extension and the icon). Nothing major, but I couldn’t have done it if Eclipse hadn’t been open source 🙂

  9. For all the people who think VS.NET 2005 is NOT slow: what kind of software do you develop and on what kind of machines? VS.NET 2005 is slower than vs.net 2003 in a lot of areas, and in code of large forms it can’t keep up with the typing. For example I store all my interface definitions (which are a lot) in a single .cs file, and if I try to type a comment below line 2000 it’s slow, it simply can’t keep up.

    But for kicks, try to debug design time controls. On my 3ghz xeon box with raid 0 scsi hdds, it’s so darn slow, it takes 20 seconds for it to open a form in the designer with 20-30 textboxes on a couple of tabpages, and if you flip through the tabpages it takes half a second or so to render each textbox.

    The hardware isn’t the problem, there’s some serious slowness in vs.net’s software internally. I don’t know how fast other IDE’s are, I never used Eclipse for example. For what I read what it can do, there has to be a penalty for that, as it’s all Java. But perhaps I just want snappy IDEs. I mean: I definitely can’t live with Resharper’s slowness, while others don’t mind and find it very useful.

  10. Regarding “go to a definition” in Eclipse, use F3.

    When your cursor is on a variable, F3 brings you to where you declared it. If your cursor is on a class name, F3 opens up the source file of that class. Alt-left/right arrows works like back/forward arrows in browsers, so F3 to see, alt-left arrow to go “back” to where u jumped from.

    Btw, regarding viewing of source codes, I use jadclipse. Never have to feel at loss with binary classes with no source.

  11. Greg – I wouldn’t read too much into the fact that there’s not much about the debugger there. I suspect that’s because I try not to spend much time in the debugger. (Unit testing helps with this immensely.) In some ways, I view it as a failing if I have to launch the debugger – it usually means that my code isn’t clear enough to just visually inspect.

    As such, I wouldn’t be a terribly good person to compare VS and Eclipse in terms of debuggers. I will say that I find Visual Studio’s debugger easier to use to do the simple things (watches, for instance) but Eclipse has some nifty features in terms of break point conditions etc which may be present in Visual Studio but which I’ve never used. Both now have visualisation I believe (where you can say how you want a type to be displayed in the debugger) which is great on the rare occasions in you need it.

    One annoyance I *have* had with the VS debugger (in VS.NET 2003) – if you break into the code without a breakpoint, and you’ve got threads running in multiple AppDomains, it picks *a* thread to break on, and only shows you the threads in that AppDomain (I believe). This is a real pain when you have to keep starting and stopping just to get lucky and hit the right AppDomain 🙂

  12. Yes, Eclipse has supported E&C (“hot replace” or something similar in Java terms) from the start, although the support has improved as JRE support has improved. (It used to only be available in an IBM JRE, but now it’s part of Sun’s.)

    I’m not a big fan of E&C, I’m afraid – I feel it *tends* to encourage lazy programming where you just try something until it works rather than really thinking about it. That way you sometimes end up with code which works with the situation you happen to have at the time, but not other situations.

    Test driven development tends to tell me almost instantly whether I’ve fixed the problem, but in a way which runs *all* the tests, not just the situation I’m in at the moment.

    On the other hand, I can certainly see the benefit of E&C for UI programming, where it’s not a case of correctness but a case of what looks and feels good.

  13. Humm. Look like the author find ONLY stuff better in eclipse than in VS…

    I work every days with Eclipse,VS and Delphi at the same time (yes I have enough memory)

    Delphi start in 10 secondes.
    VS start in 30 secondes.
    Eclipse in 1 minutes.

    All are good editors, but for me, eclipse forget 2 importants functionalities :

    The first one is very irritant : Drag and Drag of source code. Any stupid editor (wordpad can do it) allow the user to select piece of code and move (of duplicate with Ctrl key) to another place.

    The second improve productivity : Macros
    In Delhi and VS you can start macro with Ctrl-Shift-R and run the macro with Ctrl-Shift-P
    Why use macro ?
    Supose you have well formated C# code declaring 200 constants with comments. You want now to convert to Java. That take 20 secondes to create the macro that convert the “const int” to “static final” and also convert the associated Xml documentation to Java doc.
    When finished, just hold down Ctrl-Shift-P on each line and convert the code in 10 secondes.
    How much minutes in Eclipse ?
    When I need to do that in Eclipse, I copy the code in VS or delphi, run the macro and copy back to eclipse. 🙁
    But Maybee it’s a hiding option in eclipse or a plugin ?

  14. Drag and drop: my team leader finds this a pain too. Personally I never use it even in editors where it’s available, so it’s not an issue for me that it’s not present in Eclipse. I expect there’s a feature request somewhere for it – you could always vote for it 🙂 (Or add one if there isn’t one already…)

    Macros: I never use the macro facilities of Visual Studio, doing your copy/macro/copy business into Jed (a lightweight Emacs clone) instead. It’s definitely a weakness of Eclipse though. There’s a feature request about it (8519) but no planned action as far as I can see.

    I must do a like-for-like comparison of VS and Eclipse some time, including opening a solution in VS (similar to opening a workspace on startup in Eclipse). It’s just never been an issue for me.

  15. I use Websphere site studio developer during the day which is based on eclipse and I use visual studio at night for my night job.

    I do like the navigation hyplinks a lot. It’s good that vs 2005 implemented this too, I have yet to tried this one out. It really makes debugging and tracing errors a lot easier.

    Visual Studio 2005 is awesome though,

    1. if you declare a private variable and tab it twtice, automatically you get setters and getters. neat. In addition, if you change the private varaible, it’ll change everywhere in the code. If you type if, while, try or wahtever, tab twice, you auto get the entire structure set up for you.

    2. Custom Snippets. I can add custom code into vs and retreive it by simply typing its name. great.

    3. A green line shows the line that was saved before the last edit. (many times, i can’ remember what i did since last edit, it helps)

    4. The live exception box. Eclipse has this too. But I like how I can move the exception box around like a sticky note. Personal preference.

    5. Great class designer build in, pretty helpful.

    6. Debug Visualizer. I can view the content of dataset live while debugging. This helps tremendouly. I would like to have a ResultSet visualizer in Eclipse.

    7. The deployment option helps a lot as I move from local machine to test server, to production server.

    Just some I have noticed.

  16. Okay I think it may be a case of familiarity. Since I find working in visual studio very comfortable and do not find the issues raised to be of any annoyance. For example, in my project there are thousands of files and I never find using find definition a problem since it finds the definition in worst cases in 3-4 seconds. I also generally do not find the overloaded list shown in parameter completion annoying. This is because as soon as it is shown i can quickly press down button to navigate through all options in matter of 1-3 seconds. For those really big list I think it does not matter whether it is a drop down list. Anyways it has really never annoyed me.

    However, I was recently considering doing a hobby project in Java. I was evaluating Eclipse and Sun Studio. Eclipse is much better than sun studio since the UI is more professional and more responsive. However I find lack of a real UI designer for web application to be annoying. Since I have gotten used to not worry about hot to code the UI or how to write control code and tags and rather concentrate on working logic and maybe persistence (i use a nhibernate sort of persistance layer which makes it a charm to do that as well). I find it convenient that creation of presentation layer is very intuitive in object oriented sort of way. For example if I drag and drop a button and text box on UI, it is a button and text box object in my code! I do not have to code to bring the the data to the textbox. I know it will come there once the page is submitted. It reduces how much I have to code for the UI and control logic. Drag drop, click click, write only the intelligence (working logic) code and you are done. That is one place where I find VS to be pretty good. And since i have grown used to it, I find it annoying not to have it in Other IDEs.

    How do you generally solve the problem of reducing the UI and control logic code when you develop in Eclipse ? Do you find yourself putting a lot of time in coding GUI and writing control code ??

    Regards
    Shishir

  17. I haven’t done much UI work in Java at all. However, a colleague has been investigating using Spring and Tapestry together. It looked like the result was UI code which was easily unit testable, which is more than can be said for ASP.NET. (The unit test tools I’ve seen for ASP.NET aren’t really up to scratch – there’s no simple way of using Inversion of Control to make sure you’re really unit testing rather than system testing.)

  18. I don’t know why people are saying Eclipse is slow. It’s easily as fast as Visual Studio 2003.NET on my work machine (2.6GHz p4, 512MB RAM, Win2003 Server). I do have Resharper installed so I can get refactoring like Eclipse, and that seems to slow VS down a bit, especially on startup. So maybe w/out Resharper it would “beat” Eclipse in speed. I don’t know. Of course, then you wouldn’t have refactoring support. Maybe there is still the “Java is slow” bias? I code in both extensively and I can tell you there is no difference in speed.

  19. For those who complained about Eclipse’s slow startup, your AV software is the likely culprit, if you are running one.

  20. On my system (Dell Latitude 2.13GHZ, 1GB RAM), Eclipse launches in less than 10 seconds and exits in about 1 second.

  21. on my PC(Dell Optiplex Gx620 N series, 1gb ram, 3.0 Ghz ) VS 2005 opens up in less than a sec! I don’t really know about Eclipse eventhough I’m better java programmer than C#, but I find it quit relaxing creating GUI application with VS 2005 (C#) than with JAVA, and refactoring for me works just fine in VS 2005.
    I have to try eclipse as well, and I already feel that it is a decent product and it is free.

    I love SWT, I read about it and it should be fast, so yes there goes some points to Eclipse vs other Java IDE’s.
    I have tried IntelliJ IDEA some months ago, but no way VS 2005 is much better indeed, I don’t like their interface therefore compiling and running a program is much slower than doing it with VS 2005, I hope Eclipse does better with GUI apps.

    Very nice discussion indeed, I learned new features about VS as well, keep it going 🙂

  22. I am really surprised to read about the slowness of Eclipse. Both at my home and work machines, both of which are not very fast, it launches in several seconds, does everything I need (and I need a lot 🙂 ) in less than 2 secs etc.
    Several features of Eclipse debugging that I find extremely nice are:
    -Drop to frame: it allows you to restore the stack state of a function to the state that was before you started it. That is, to restart a function from the beginning without restarting the whole program. Sometimes this is unbeleivably useful, especially in case it takes a long way for the program to actually reach this moment. And you can change code inside the function before restarting it.
    -Scrap pages and Display window: while Visual Studio has its Immediate window, it can only execute one line of code whereas Eclipse can execute several.

    Launching a test or a test suite in Eclipse takes me a couple of seconds whereas on Visual Studio it takes about 30 seconds to open the test view, then 30 seconds to start launching tests and then a minute for Windows to recover from the immense memory and CPU stress induced by Studio while testing. Almost same thing for just launching a program for debugging.

    Well, so the only thing that bothers me about Eclipse is that it is not C# 🙂 If it were, I wouldn’t use studio.

  23. Just started using VS2005 having mainly done java in Eclipse over the past few years (I don’t find it slow at all – must be something wrong if it is).

    One thing that hasn’t been mentioned at all, which makes me think I’m missing something in VS is the difference between VS’s Class View (rubbish) and Eclipse’s Outline View.

    Here’s what I can do in Outline View:

    – hide fields (just show methods)
    – therefore display only the methods in the class I currently have open in the editor pane.
    – when I change to a different class in the editor, the Outline view dutifully updates, and presents all the methods in that class instead.

    By contrast, VS’s Class View just seems.. completely useless. It contains a tree view of every class and field, I can’t hide the fields, and most importantly, when I change to edit another file, it doesn’t update to expand the relevant part of the tree.

    If I’m editing a number of large classes at once, and I want to jump around to various arbitrary methods within them quickly, what am I supposed to do? I can’t believe I’m expected to use the Class View like it is now, or else search, or else use that dropdown listbox every time.

  24. I use Eclipse for Java and Visual Studio .net for C++. Ecipse is so much faster than VS. I can’t believe people complaining eclipse being slow.

    It is a pain to use VS. For example, to start a debugger, I have to right click on the startup project and select debug -> start new instance. If I hit F5, VS will complain some projects are not built, even though the startup project is not dependent on those projects.

    I just installed VS 2005. It looks better VS 2003. Hopefully, it is also faster.

  25. Jon,

    after reading all your comments, I see a pattern emerging regarding the VS features that are better than their Eclipse counterpart:
    * you haven’t used it
    * or didn’t know about it
    * or don’t see the need for it

    To me it seems that you are much more experienced in Eclipse than in VS (at least 2005) which causes a bias.

    In all honesty I think that both IDE’s have their strengths but the differences in quality are minor. They are actually so small that most people’s preference is based on taste/experience/education and not on hard facts.

  26. There are a few I haven’t used, usually because I haven’t known about them.

    There are a few which I don’t see much need for.

    There are plenty of features I use in Eclipse *all the time*, only some of which are now available in VS2005 and which weren’t available in VS2003.

    It’s certainly true that I’ve used VS2003 much more than VS2005, and likewise Eclipse much more than VS2005. Between Eclipse and VS2003 it’s probably about even, so I don’t think there’s much bias in that area. It’s worth noting that before VS2005 arrived, people who hadn’t used Eclipse (or at least hadn’t used it for production work) were still claiming that VS2003 was “the best IDE in the world”.

    Of course, it helps that most of the features that I miss in Visual Studio have been around for several years in Eclipse…

    So yes, there are no doubt some things in VS which I don’t fully appreciate – but there are too many things which really *should* have been in VS2005 after they’ve been around for so long in Eclipse. Open type, open resource, organise imports and the pitiful tooltip for overloads are the prime candidates. I don’t believe these are really a matter of taste or education – they’re significant productivity improvements, even if they’re really simple to implement as features (which I believe they are).

    Another “hard fact” is the lack of built-in refactoring prior to VS2005, and the relative paucity of the VS2005 refactorings compared with the Eclipse equivalents.

    Jon

  27. Eclipse rocks ! eclipse-3.2 starts in 10 seconds on an old computer (athlon xp 2500 + 1gig) !

    And quick fix is wonderfull ! Refactoring is excellent… VS2005 is years behind with the old compile + edit cycle.

  28. I have never failed to use a Microsoft product in my life. With other products you have to spend at least a week or more before you can start development.

    Let’s stop this Anti-Microsoft thing and focus on what we do best(programming).

  29. No, you don’t have to spend at least a week before you can start development. And no, this isn’t an Anti-Microsoft thing – I just find there are lots of *very* useful features in Eclipse which are missing in Visual Studio. (Many of them are present in VS 2005, fortunately, but not all.)

    Funnily enough, it’s precisely because Eclipse *does* allow me to focus on programming that I like it so much 🙂

  30. In Visual Studio 2005 I could not find the “Mark Occurrences” feaure, which is available in Eclipse. I used this feaure so much in elipse that I am really having hard time to browse the usage of namespace classes, variables, methods etc. e.g. to check which classes from the imported namespace (e.g. using log4net) have been used in the class.

  31. Eclipse is waaay slower than VS 2005 (express edition). i know exactly why, too: my computer is over 5 years old, runs window XP (not a factor, but still), has 256 mb RAM, and javaw (which runs while eclipse is up) takes over 90,000 K on my memory usage (i found this by looking under Mem Usage in the windows task manager).

    i plan on getting one of those new mackbooks with 2gb of RAM, 200 gb of storage space, and many more impressive features, so i doubt speed will be an issue for my near future.

    in that case, i’d use Eclipse in a heartbeat. and yes, i can use VS 2005 on a macbook because there’s some program that allows you to run windows on it (check the site for details). eclipse has more features, compiles a platform-independent language, and is still 100% free. yet to mention its popularity among developers. they upgrade it constantly because, unlike Microsoft, they aren’t ignorant and geared towards money.

  32. I like Eclipse just fine. On a fast computer there’s not much difference in performance with visual Studio; (although yes: there is a difference – like it or not, VS is always a little quicker). My only REAL gripe with Eclipse is that the set of keystrokes to accomplish very common tasks is different. I don’t want to hit “Ctrl K” for “find next”… I want to hit F3, as does every other Windows user on the planet. But I don’t want to go in a custom remap whatever they have for F3 to something different (and so on and so forth).

    Less griping, more constructivism: does anybody know of a plug-in to make all the keystrokes in Eclipse essentially the same as those used in Visual Studio?

  33. responding to Thierry:
    Your macros-importance-example isn’t very helpful, because it would take maximum 4 times Find/Replace in both Visual Studio and Eclipse and I bet it is faster than 30 seconds.

  34. Have used VS for a long time, since the native ver 4 is many years ago, used to be the best. Only discovered Eclipse in the last two years. Gotta admit, won’t be going back to VS unless work requires. Just one thing though, get a machine with at least half a gig to run Eclipse, otherwise, it’s just a little slow when more than one perspective/view is open.

  35. i think Visual Studio is a better IDE then a eclipse . I have worked on both IDE’S . I think Visual Studio 2005 is a Smarter IDE..

  36. Karan:

    I can only agree, i tried to use Eclips many times, but the look and feel of it is just bad.

    Maybe it has some nice features compared to VS2005, but i have never missed the stuff Jon complains about.

    Instead of features, they should really look into the look&feel and userfriendliness of Eclipse instead. But typical for that type of programs they just stuff it with more or less usefull features.

    The first time i used Eclipse, it reminded me af Visual Age from IBM, which was a terrible IDE, more useless than usable.

  37. Well, I’ve never had a problem with the look and feel – and as for user friendliness, that’s exactly what this post was all about.

    Visual Studio is stuffed full of designers etc that I rarely use rather than making the *editor* user friendly. Making it easy to open a particular type, or a particular file, without having to find it in solution explorer: *that’s* user friendliness, to me.

    Whether refactoring counts as user friendliness or not I don’t know – but it certainly saves a *lot* of effort (and potential issues), and was in Eclipse (and other IDEs) for *ages* before MS appeared to realise how important it is.

    Fortunately I now have ReSharper for VS2005 to give me back the features of Eclipse which I view as pretty much essential.

  38. Also,Vs2005 hava some features better than eclipse,like debug. vs2005 is an IDE for .Net,and Eclipse is an IDE for others,especially for Java.If you want to get a BETTER one through comparison,there is no significance.

  39. This is a great blog entry!

    I’ve used Eclipse a lot and have recently changed jobs and come back to Visual Studio (2005) again. Like you, I was surprised that the features directly related to writing code doesn’t seem to evolved much in the last few years. It is like Eclipse has overtaken it.

    For my two cents the Eclipse features that I’m really missing are the “Compile on save” and the “Quick Fix”. The reason for which comes from my unit test driven approach (which Wayne Beaton eloquently describes http://wbeaton.blogspot.com/2005/11/he-who-lives-by-quick-fix.html).

  40. Eclipse is far better than Microsoft Visual Studio 2005!!! Eclipse has better refactoring support and is WAY AHEAD of Studio in that regard. Also, Eclipse is built on an extensible framework that easily allows customizability. The Eclipse IDE is also way better!! Errors are displayed right there, it has smooth integration with source control providers. Studio sucks integrating with Clear Case, etc.

    Also, the debugger in studio sucks. You cannot debug a type library project without having an executable to the project, etc. It also runs so slow…

    IBM is way ahead of the curve. Good job, IBM and open source!

  41. – Where is in Eclipse ‘Generate Method Stub’?
    – Manage Eclipse fill constructors during typing ‘new’ command? (StringBuilder sb = new ….). After I type ‘new ‘ in VS, IDE provide me rest of command.

  42. Amadeus:

    1) Generate method stub is just one of the many things that “Quick Fix” is capable of. Press Ctrl-1 or click on the lightbulb in the margin.

    2) It depends on how you have autocompletion configured. If you type the line of code shown and press Ctrl-Space, it offers you StringBuilder as one of the choices. After that, it offers you the choice of which constructor overload you want to use.

    Eclipse’s argument autocompletion is smarter than VS’s, from what I’ve seen – if you’ve got local variables “name” and “town” (both strings) and you call a method with parameters called “name” and “town” it will intelligently guess which should be which. It can be incredibly fast.

    Jon

  43. Both get me to my accurev software configuration management tool in an efficient way, but refactoring support in Eclipse has the edge.

  44. ThatPerson> That’s a pretty significant accusation. I don’t see Bahar’s comment as being any more biased than many of the other comments to this post which show a clear preference for one platform over another.

    Jon

  45. A fanatic? Hardly. The “fanatics” are the ones who claim that one development platform is the best without having experienced any others.

    Which of my points do you actually dispute?

    (It’s nice to see that VS2008 improves on some of these things, btw – although “VS2005+ReSharper” still beats “VS2008 on its own” from my experience so far. Fortunately ReSharper works with VS2008 too…)

    Jon

  46. I have the following Installed:

    Visual Studio 6
    Visual Studio .NET 2003 (Lots of Add-Ins)
    Visual Studio 5 (Lots of Add-Ins)
    Eclipse Europa 3.3 (J2EE Package + CDT + TPTP)
    NetBeast 5.5 (+Profiler + CDT + Ent. Pack + UML)
    Delphi 7 (LOTS of Add-Ins)

    My JVM is the latest Java 6 version (all updates). I believe everything on my machine has every update installed that is available for it (unless I missed something a couple of days ago).

    Eclipse is slower than all of them. I think it has something to do with the way it loads plugins, and the way the plugins tie to the IDE – but I’m unsure because I’m not an Eclipse developer (or any RCP developer at that). I think my projects are big enough for a good comparison.

    Also, My experience has been that Visual Studio .NET 2003 is faster than Visual Studio 2005 (P4 HT 2.8GHz, 1GB RAM, 160GB 7200RPM HD, XP Pro). Eclipse is slower than even NetBeans.

    Fruitless arguments of what is faster than what won’t accomplish nothing. There are so many factors that aspect speed (especially start-up/shut-down and you never know when the Framework/Platform decides to Garbage collect unless you force it to [I wrote little apps to do that for me :P]).

    It’s just dumb and very unintelligent to argue about it IMO.

  47. I used for the last 4 years VS, and Eclipse for two years now… the two are not even comparable in my book.

    I love .Net, for the web its better than Java, but for Application development ill still take Java. VS is exclusively for .Net whilst Eclipse is for almost anything you want, it is so extensible that the sky is the limit. Eclipse way way outperforms VS in almost every feature including performance, debugging, profiling. The refactoring tools are so incredible I have seen nothing to match.

    Features like the test and performance tools platform and the web tools platform allow you to running and debugging Servlet containers like Tomcat within eclipse. The perspectives available in eclipse including extensions for CVS, SVN, resource and package views, a web view, and so many more… there is just so much in eclipse feature wise it makes VS look pale!! Eclipse is a platform, VS is an IDE, why compare them?

    Peter

  48. The only Java IDE that can compare to Visual Studio is NetBeans ATM. Eclipse lags horribly behind NetBeans when it comes to out of the box functionality and “personality” integration. NetBeans looks like it’s on its way to becomming a better multi-language developer’s tool than Eclipse ATM.

    NetBeans is the Visual Studio of the Java world. A role it acquired when Borland/CodeGear bastardized their JBuilder into another Eclipse abomination…

  49. I disagree with Hrm… (who should use his real name instead of hiding behind a fake one).

    I’m a C++ developer for a large company and Eclipse is a better solution due to space constraints I’ve put on VMs. Here’s a small overlook.

    Netbeans + JDK (required) (not including CPP Plugin or compiler) = 351 MB

    Eclipse + CDT + JRE (required) + Compiler (MinGW + msys) = 232.9 MB

    If you want a compiler with netbeans then it is going to cost you more disk space. So I’d say that netbeans is harsher on the resources than Eclipse.

    AND – I can simply download an empty shell of eclipse and then add in the C++ compatibility. When I was trying netbeans (after that comment you posted) I uninstalled it immediately (almost) after installing it because of the resources it took to run it; I didn’t even bother to install the CPP plugin because that means even more resources gone. Not only that but you have to install the whole Java Programming IDE and then install the CPP plugin for programming in C++. With Eclipse you don’t have to install the Java programming IDE, just the platform that can run it. And then the CDT (C Dev Tools) plugin and compiler. Which instructions are easy enough to follow.

    My final ratings for you after that comment…

    Eclipse – A+ for being small and a good solution for most constraints
    NetBeans – A- for taking up so many resources but it is still a great IDE for those who want to use it.

    I’ll stick with Eclipse.
    SAM

  50. Sorry I did a size miscalculation.

    Netbeans + JDK (required) (not including CPP Plugin or compiler) = 480 MB

    Eclipse + CDT + JRE (required) + Compiler (MinGW + msys) = 232.9 MB

  51. You use Eclipse as your primary C++ Development Environment? Lol.

    I don’t see why my name has anything to do with it. Obviously you missed the point of my post, and you think Disk Space is a resource worth worrying about on desktop developer systems…

    In a thread comparing VS to Eclipse where VS has an install size of 2-4.5 GB…

    Yea, you got me there… Refactor much C++ code in that Eclipse IDE? Lol…

    Don’t be so religious, it’s only a program 😛

  52. And with NetBeans 6.0 (you should have known this if you have ever heard of the betas/RCs) you can have a base NetBeans with just the bits that you want. The IDE was totally modularized like that, yo!

    So the install size won’t be anything near what you stated. Not even close.

    Doesn’t change my opinion that Eclipse is a Gorilla, I just finished trying to use it again and had to delete the directory because I cannot dedicate 50% of my computer’s resources to an IDE.


  53. Eclipse’s argument autocompletion is smarter than VS’s, from what I’ve seen – if you’ve got local variables “name” and “town” (both strings) and you call a method with parameters called “name” and “town” it will intelligently guess which should be which. It can be incredibly fast.

    Not at all true. If you use a method with parameters, bob and john it will put them in the autocompleted line. It doesn’t matter what local variables you have. It just so happens that often it coincides with variables that you’re using in your method.

  54. Um, no. All you’ve got to do is check “Guess Filled Method Arguments” in the preferences, and it works. For instance, with this code:

    public class Test
    {
    public void check()
    {
    String theTown = “Reading”;
    String theName = “Jon”;
    String theCountry = “UK”;

    }

    public void firstMethod(String town, String name)
    {
    }

    public void secondMethod(String name, String town)
    {
    }

    public void thirdMethod(String name, String country)
    {
    }
    }

    If within check() you type first-(CTRL+SPACE) it fills in:

    firstMethod(theTown, theName)

    If you type second-(CTRL+SPACE) it fills in:
    secondMethod(theName, theTown)

    If you type third-(CTRL+SPACE) it fills in:
    thirdMethod(theName, theCountry)

    Try it!

    Jon

  55. @Memi – Please don’t take WSAD as indicative of anything. WSAD is nothing like the regular Eclipse – it has many badly written plugins and is very far behind Eclispe (last I say ESAD used Eclispe 2.0 when Eclispe was on 3.0). I have colleagues who were forced to use WSAD at a client’s and who eventually moved to Eclipse because WSAD demanded 2GB of RAM back in 2005.

  56. I’ve used Eclipse for years now. I just downloaded the trial version of VS 2008 Pro. I wanted to try VS since we’ve pretty much migrated to Windows and SQL Server as the basis of our software development (I hope for tighter integration and better performance in the deployed app).

    I found this blog, because I was searching for a way to do some of the tasks in VS that I’m familiar with in Eclipse. Is it true that there’s no Quick Fix in VS? I also noticed that the VS editor didn’t seem to highlight compiler errors as I type. Is there an option for this?

    I’m going to stick with VS for the trial period and see how much of my current distaste is just lack of familiarity — not knowing how to accomplish the same task in VS — rather than missing features.

    I may end up using VS because of .Net integration with Windows, but I suspect I’ll be pining for the development features of Eclipse.

  57. Eclipse is nice but VS2005 is better I try Eclipse for tester and at the beginning I found many good things but is slow and very heavy and pay atention over .net mono, dotgnu (linux)

  58. I think comparing features of Eclipse to VisualStudio2K5 can only be fairly done when comparing the same languages.

    For my work (C++ on Windows), I find VS2K5 to do everything I expect of a Windows IDE. The look and feel, shortcuts, drag and drop code, responsiveness, and finally GUI development are all in line with what I expect.

    Not long ago, I was doing technology research for a large project and was tasked with deciding the IDE/Language we would work in. I was able to try virtually every professional IDE (great fun!) on the market. In addition I had to get a feel for what the team liked.

    The most prominent were: VS2K5/NetBeans/SunStudio/Eclipse/VSExpressEditions

    It was my experience that the Windows developers (C++) prefered VS2K5 hands down, followed by NetBeans and Sun Studio. My guess is that all of those IDEs had a similiar look and feel to other MS products. My personal favorite was the ExpressEditions since they seem to run very fast and light but were lacking heavy features that perhaps “real” software engineers demand. My second was VS2K5 followed by NetBeans. Reason?

    Well, I took a bit to reopen Eclipse right now and really focus on what turns me away from it.

    First, the startup time. This seems to be VERY different depending on platform/configuration. On my laptop, VS2K5 takes 15s. Desktop it takes 4s. On my alternate box it takes 10s. All are minimum 3.0Ghz Machines with at least 1GB-2GBRam. Eclipse by comparison takes upwards of 45 seconds on my laptop, upwards of 45 on another XP box and 20 seconds on the last. I find this performance strange and perhaps to blame for the perception amongst some devs that Eclipse is slow. Although, I do not believe Eclipse could ever get much faster then VS2K5 when configured similiarly as one is C++MFC and the other is Java.

    Second, look and feel. First off, I’ve always hated the Eclipse start page, of course you can change/disable it. I find the colors/layout of VS2K5 to be more what I expect from an windows/IDE. Windows in eclipse seem fat and bloated. I tend to have to shrink everything right away to get viewing room. On my original 17inch. I had about 4 inches of ‘coding’ room when Eclipse launched by default. By comparison, VS2K5 in C++ gives you about a bit over 1/3 of your screen by default. Now, on a 22′, this isn’t as much of a problem but I always feel like space is being wasted. This is the same with the intellisense. I don’t want 20 lines in my face, I want 1 line and I can decide if I want to ‘turn the page’ or not. I actually prefer the VS2K5 method. Intellisense also seems to be timed better in VS2K5 in that the popups appear quicker.

    Third GUI development, I really and truly thing that C# GUI development is as perfect as it gets in GUI development. As one user above put it, “it’s actually relaxing to develop in C#”. Even tiny things like the layout tools do wonder for producing a stunning application.

    Fourth, 3D/Game/visualization development. One of our projects here was to introduce the capability to view data in a 3D visualization (it gives the client a way to correlate data which wouldn’t immediately be apparent). Using DirectX or OpenGL with VS2K5 is the easiest thing since slice bread. Configuration is a breeze and this can be expected from MS to MS products (Direct3D). I would not even want to attempt doing hardcore 3D development in anything else. Perhaps this is why virtually every game in existence was developed using VC++6.0. But, let’s not get too off topic.

    As you can see, the majority of my points have to do with usability of the IDE and how it affects your coding experience. I like something lightweight, with intellisense, and a fast compiler, nothing more, nothing less. This is why at home I use Express Versions!

    Ultimately, it all depends on the developers background, objectives, experience level and how often they use the common and more obscure tools in the IDE. Very subjective indeed.

  59. no matter how good is my IDE i can’t even code a single beautiful code, i guess i need an IDE that can do the programming for me (i just think what i want the program to do and the code with be made for me) (hahaha) THAT’S THE BEST IDE THAT I WANT TO SEE!

  60. Many of the points made above are only valid in the context of VS being used with C#. When VS is being used with VB for example, talk of add-ins like Resharper are irrelevent. This discussion is not comparing IDE’s at all, it is comparing “IDE plus my favourite language”.

    I code in VB – I dont even know what refactoring is, it’s just an alien term to me 🙂

  61. Why is talk of ReSharper irrelevant when VS is being used with VB? ReSharper is certainly available to help VB.NET developers as well as C# developers. It doesn’t have quite as many features for VB.NET developers, but certainly plenty to recommend it.

    Likewise, although you may not be familiar with refactoring, that doesn’t mean that it wouldn’t help you, and the better the refactoring support is, the more potential help it will be to you. It’s quite possible that you’re using some features I would deem to be part of refactoring support, but just don’t apply the term to it. Things like intelligent renaming of a class (with that change being reflected in all the code which uses it).

  62. Jon,

    Thanks for clearing up the auto complete thing for me. Really helps a lot.

    Another big thank you is for bringing up DPack. I didn’t notice it first time I read through this article. The only thing that is driving me to pull my hair out in VS is lack of ^O. The lack of outline view and refactoring (although resharper solves this) is annoying but not essential. ^O is essential. Maybe you should put around DPack. *ducks*

    I am of the opinion that the speed of startup and shutdown shouldn’t be taken into consideration for using an IDE. Both VS2k8 and Eclipse stay open for days at a time so a 1 minute startup time is irrelevant. What is relevant is if the intellisense drop down takes longer than it would for me to type the class name. In other words, for short classes it’s got about half a second to appear. On my laptop (P4 1.8 + 1gig doing far more than it should) both IDE’s have reasonable response times when you’re working in them.

    A big bug bear when it comes to VS is that it seems MS have deliberately kept functionality *OUT* of the IDE, allowing plugin developers to sell their stuff to you. ReSharper is something that should be baked into the IDE but isn’t. Why?

  63. I run a MacBook with a 2.0 Intel Core Duo Processor and 2 gbs of ram…and eclipse CRAWLS at times. not just loading, which is a painful minute long ordeal, or closing, which i can’t even measure because it crashes so often i find mself force quitting, but even while coding. Opening a source file causes my ENTIRE computer to hang, not just the program itself. Maybe it’s just the mac version since my colleagues do not have this problem, but I end up seeing most people with Macs prefer VIM over eclipse.

  64. I completely agree I recently transfer my platfor from MS to Java. And I can already see how facinating the Eclipse is. Free IDE that is far more superior than the paid one

  65. Blogger is still as biased as ever, and this blog post is still about as irrelevant as it was over a year ago.

  66. @Hrm:

    Yes, clearly being the author of C# book and a C# MVP, I’m *obviously* biased towards Java…

    Care to make any *technical* comments which make your point, instead of just ad hominem attacks?

    Jon

  67. Hi
    while debugging (C program in my case) I found VS has a better feature. for example when I place the mouse on a structure variable var1 of a struct temp, Visual studio fetches the value of temp.var1 and displays it, while eclipse just says ‘No symbol “var1” in current context’, If posted this at http://www.eclipse.org/newsportal/article.php?id=18497&group=eclipse.tools.cdt#18497 but no one seemed to be there to respond. If I am wrong or if there is a solution, please let me know (ramprasad85@gmail.com) Thank you

Comments are closed.