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…

81 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.

    Like

  2. 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?

    Like

  3. 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.

    Like

  4. 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.

    Like

  5. 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 :)

    Like

  6. 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.

    Like

  7. 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 :)

    Like

  8. 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.

    Like

  9. 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.

    Like

  10. 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 :)

    Like

  11. 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.

    Like

  12. 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 ?

    Like

  13. 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.

    Like

  14. 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.

    Like

  15. 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

    Like

  16. 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.)

    Like

  17. 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.

    Like

  18. 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 :)

    Like

  19. 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.

    Like

  20. 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.

    Like

  21. 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.

    Like

  22. 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.

    Like

  23. 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

    Like

  24. 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.

    Like

  25. 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).

    Like

  26. 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 :)

    Like

  27. 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.

    Like

  28. 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.

    Like

  29. 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?

    Like

  30. 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.

    Like

  31. 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.

    Like

  32. 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.

    Like

  33. 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.

    Like

  34. 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.

    Like

  35. 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).

    Like

  36. 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!

    Like

  37. – 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.

    Like

  38. 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

    Like

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

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s