93 comments

[ 5.0 ms ] story [ 179 ms ] thread
This post makes me very sad. I am often reminded that the best tech rarely wins. I've never had to use Intellij until my current job, but it is more obvious to me than ever than Eclipse, at least for Java development, is superior to Intellij. Was the free model not enough to sustain it, unlike Intellij, which sells its IDE, or is there another major cause for most of the world drifting to the inferior choice?
How is Eclipse better than IntelliJ? My experience with IntelliJ has been: * Faster than eclipse. * Works better / crashes less. * Less headaches setting up projects. * Far superior vi keymap support.
And more/better keyboard shortcuts.
Recently switched from Eclipse to IntelliJ. I've tried a few times in the past but I think I've reached the point of no return.

More keyboard shortcuts! = better. In eclipse I probably used 10...still hunting for the equivalent. Then there's the fact that some shortcuts require two hands, or a large hand. If you're focused on debugging and you need to step out... Shift F8?

Also the amount of times IntelliJ caches old files and screws up my testing is as much as eclipse... Which is probably my my biggest time waster. At least Intellij has the invalidate cache and restart... Which mostly works, till it doesn't, then I need to reimport.

Most importantly plugins in eclipse never really worked for me. They often broke during updates, the package servers were slow or unavailable, or I had to wait weeks for plugin updates to update to a newer version of Eclipse.

IntelliJ has almost all important plugins and languages built-in. Even some quite nice frameworks.

I agree, but ironic considering that you are focusing on OSGIs main selling points :)
I generally prefer IntelliJ to Eclipse, but what pains me in it is the slowness of the UI. When you open up a menu, you can literally watch as it is being painted to the screen. This is something that was instantenous on a 7 Mhz Amiga back in the nineties.
Maybe it is time to upgrade from that machine.
The machine is less than a year old...

I'm betting the menu content is dynamic (based on preferences, maybe the code that's on the screen etc.) and they're recomputing the content before drawing it - but still, it's no excuse.

Eclipse git support is superior as well as the pom editor.
But SourceTree is better than both.
Haven't used SourceTree. That may be true, but I prefer having all my tools in one place, and eGit is quite good. Besides, eGit has Eclipse Mylyn integration, which is another killer feature Idea doesn't have.
Really? I hate Eclipse git "support" with a passion. I don't want my IDE to go anywhere near my version control. I'll take care of that myself, thankyouverymuch. The fact that Eclipse makes it nearly impossible to disable that git "support" downright angers me.
Impossible? You just go to the Team menu and choose "Disconnect" or am I missing something?
Yes. That's incompatible with my workflow. Projects are generated on the fly, each new project is automatically connected even if I don't want it to be. Having to manually disconnect each project is a pain. I just want a big "disable this plugin" button.
Close the git perspective? Right-click project, team -> disconnect perhaps?

Honestly, I'm curious. It's never occurred to me that having it there, even if you don't use it, could be problematic. What is it touching that bothers you so much? It's not like it's going to jump in your folder and start committing stuff at random.

Eclipses git support: right click on a file, show history, navigate between classes, notice eclipse hanging every time you switch between classes because it’s spending unreasonable amounts of time loading the git history while blocking the main thread every time with no caching whatsoever

Facepalm

I run into thousands of moronic things like that on an average work week

I use Eclipse with Subversion as the VCS. With Subversion you can disable to automatic History tab update on selection change (ie unlink from Editor). Can you not do the same with the Git functionality?
Never had that problem. idea changesets: index no deltas on file or all deltas, but can't index 1 delta. All or nothing. Facepalm.
Sorry. I haven't had a chance to reply all day. The biggest reason I think Eclipse is better is because it has automatic incremental compilation built in. This feature is an absolute game changer in productivity. Visual Studio doesn't have it for C#. Intellij doesn't have it. As far as I know, Eclipse is the only Java IDE that does.

Think about it. As you are editing and saving, a real compiler is recompiling your code. Any and all errors show up as feedback in the IDE immediately. Intellij tries to guess errors for you, but I find that it often misses things until you run a build manually.

In conjunction with automatic incremental compilation is the problems window. I can't find anything remotely like it in Intellij. In a single window I can see all the errors and warnings in my workspace and address them. This is tremendously helpful, for instance, when I'm doing a complicated refactoring that can't be completely automated.

Another insanely awesome feature of this compiler is that it compiles class files with errors in them. This lets you do things like run your program even if there are compiler errors in your project, or, even more usefully, run a unit test. In Intellij I get so frustrated when I can't run a unit test because some entirely unrelated java file in an entirely separate module has a compiler error because I haven't refreshed my gradle project since pulling from git.

I really like seeing the warnings too. In every Intellij-driven project I've seen people do not care at all about warnings and the result is a lot sloppier code, including way more code that uses raw types, code that performs unchecked generic casts, code that makes mistakes with serialization, etc. In this sense Eclipse encourages better coding practices by putting the warnings your face in the problems tab.

I've had the opposite experience with plugins in Eclipse. I've found that there's way more plugins than in Intellij and that they work better. For instance, I completely gave up on Intellij's code coverage builtin plugin. It flat out wasn't working. On the other hand, the plugin I've tried in Eclipse works great. I've also found Eclipse's FindBugs and Checkstyle plugins to work way better for me.

I really dislike how Intellij handles debugging and spawning sub-processes. I remember at $lastjob when I still used Eclipse and I was helping an Intellij user try to debug something. I helped him figure out that he actually had about 5 sub-processes running in a debugger already and they were conflicting with each other. This kind of mistake I think is much harder to make in Eclipse. I also love the debug perspective and how it is separated from the regular perspective.

I could go on and on. I've found Eclipse to always be much snappier and more responsive than Intellij and to use less memory. I've found its code formatter to be more feature rich and useful. I like Eclipse's look and feel a lot better. Intellij uses Swing and it shows. But, at the end of the day, above all else, its the incremental compilation and everything that builds off of it. I have to use Intellij at my current job and I absolutely wish we could use Eclipse instead.

I find for instance that Intellij leaks memory and I frequently have to restart it once it gets to 8+ GB of usage. Also If I give it less than 6 GB of heap it runs insanely slowly.

C#s compiler is absolutely incremental. In fact, there is all kinds of crazy edit time compilation and JITing going on to support the languages extensibility and the edit and continue features.
Rosyln might support incremental compilation, but, to my knowledge, it's not exposed in visual studio still in any meaningful way. See for instance https://stackoverflow.com/questions/34585588/is-c-sharp-comp....

Compilation in VS occurs at the project level. When you change a single file in the project, the entire project must be recompiled to generate the assembly. Eclipse on the other hand can recompile at the level of individual files, which is way faster, fast enough that it auto-compiles for you on save and the updates the editor with all errors and warnings discovered. No other IDE I am aware of can do this effectively.

If most people are shifting from a free product to a paid product the chances are most of those people don’t consider the paid product to be inferior
My company paid for licenses, but I wouldn't pay for it personally. Same with JRebel.

So a better answer may be, they have been improving their sales team.

I was a huge fan of Eclipse back in the day when I heavily used it for (mostly) Java development. However, for me it was death by a 1000 cuts. Workspaces getting into non-functional states that required wiping/rebuilding. Update sites constantly being moved to new URLs that required me manually making configuration changes just so the Eclipse update mechanism would work instead of spitting out cryptic error messages. Updates breaking the IDE to the point that I had to reinstall and start fresh and reconfigure everything from the ground up. Update checks causing every core on a Core i7-2600 to go to 100% cpu usage and remain that way for 30+ seconds.

When I switched to IntelliJ, I suffered from none of those problems and it did not take me long before I went and purchased a personal license.

> unlike Intellij, which sells its IDE

The fancy version costs money, yes, but the community edition is free and Apache licensed. Here's the source code: https://github.com/JetBrains/intellij-community

> is there another major cause for most of the world drifting to the inferior choice?

I've used both Eclipse and IntelliJ, as well as JetBrain's "ReSharper" tool in Visual Studio, and while the UI is obviously different, and in some ways better, some ways worse than Eclipse, the actual functionality and feature set of IntelliJ is clearly superior to Eclipse, especially all the refactoring and code smell tools.

The feature list is just incredible and constantly increasing: https://www.jetbrains.com/idea/whatsnew/

Also, IdeaVim is way superior to Eclim, if you care about Vim keybindings and modal editing.

I didn't know the free version was Apache licensed. That's great!
Unfortunately, Google's fork (Android Studio) is not open source. Previous versions of Android Studio (based on Eclipse) were.

Clearest example I've seen in a long time of why copyleft licenses are important.

EDIT: I was wrong about this, see below thread.

You can find instructions on both getting the source code, and building from source here: http://tools.android.com/build
Ah! I stand corrected. I wasn't able to find a link to that info anywhere from the download page (https://developer.android.com/studio/index.html).

I was also confused before when browsing through Google's Android repos because they don't seem to do any development on the master branch: https://android.googlesource.com/platform/tools/idea/+/maste... ...instead developing on project or release-specific branches: https://android.googlesource.com/platform/tools/idea/+/studi...

I have to say, I'm glad to have been wrong!

How is IdeaVim superior to Eclim? I can use my vim plugins with Eclim?
Perspective is funny. Eclipse has always been a klunky, kludgey behemoth to me. Never enjoyed using it.
I’m baffled by how anyone could prefer eclipse to Intellij and got much glee from downvoting your opinion.

But I’ll retract my downvote if you add any reasons for why you think eclipse is superior?

I've happily been using Eclipse for years for Java development and have never used IntelliJ. I feel very productive in Eclipse and feel no urge to change.
Same here. I don't see a big need to switch off Eclipse. It has all the features I need to be productive in Java.
> But I’ll retract my downvote if you add any reasons for why you think eclipse is superior?

Because downvoting isn't intended to stifle someone else's perfectly valid opinion maybe?

Downvoting is for posts that add nothing to the discussion? Which his post literally doesn’t unless he actually explains why he prefers eclipse
I tried intellij and thought it was pretty crap. I don't remember all the things I didn't like, but I found it almost completely unusable.
I responded to someone else who asked the same question in this thread. Can I have an update now? :)
I don't get it either, I've used Eclipse and IntelliJ for about 5 years each and there are a lot of things that I think Eclipse does better. But whenever I come across a thread like this one people are just aghast at the thought IntelliJ is not superior in all aspects. So there must be something to it but I'm not sure what to make of it.
I find IntelliJ much better at navigation and refactoring.
For less than a dollar a day, access to the entire Jetbrains suite is a no-brainer.
Eclipse was awesome straight out of IBM, but IMO OSGI killed it of. OSGI is such a clunky framework to work with/around, I think it slowed down the devs enough to eventually make it outshined by others.
" but it is more obvious to me than ever than Eclipse, at least for Java development, is superior to Intellij."

This is a pretty huge claim. Care to share your reasoning?

I can't count the amount of times I experienced an eclipse[1] in Eclipse.

IntelliJ is snappy, has a far better search function, makes better use of screen space, lets me keep working while it compiles, and has yet to corrupt one of my projects. I've used both, personally, and for work, for a couple of years. I will take IntelliJ every time.

[1] All the menus fading out, and becoming uninteractible, as it starts recompiling.

Google did not rewrite their Android IDE. IntelliJ IDEA had Android support for years and Google collaborated with Jetbrains to create a dedicated IDE for Android. Jetbrains has a lot of experience in specialized IDE and corresponding plugins for their main IDE IntelliJ. It was the right choice by Google to support and utilize a team of smart developers that already created something superior to Eclipse ADT on their own.
IMO Google made IntelliJ's Android support worse. They added a million items to the menus (like Eclipse), somehow made it slower, replaced IntelliJ's fast and simple project system with Gradle, which is slow and breaks all the time. Bit of a shame really.

Still a million times better than Eclipse though.

IntelliJ doesn't have a dedicated build system. You can choose from no system, Maven, and Gradle.

No system is often good enough for basic projects, but not Android development. Support libraries, configuration, API versions, NDK support, etc. make Gradle a requirement. Gradle is the official build system of Android for a reason, it's not something that Google just added willy-nilly to Android Studio.

As an Android developer, I LOVE Gradle. I think it's a vastly superior build system. I also use it for complex desktop applications, and applications that run on both desktop and Android, using shared code and OS-dependent code (the module system makes this very easy to organize).

I made the switch to jetbrains a while ago, but the one feature i really really miss is the absolute to focus on a set of files and resources and hide all the other unrelated code.

Mylyn alone makes me go back every now and then, but eclipse is just too bloated and unpredictable

I think you can achieve this by creating a "Scope" and filtering to it in the Project view.
IMO you won't miss it in the long run. IntelliJ is good enough to not require such an interface to keep you focused. There is a similar feature, but I never used it.
This is from July 2017.
Come, ex-eclipsians, join the weirdo minority who use netbeans! We don't bite, I promise! And there are literally dozens of us across the world!
I like netbeans but was absolutely unusable on my brand new iMac; the lag.
And at least two of us frequent HN it seems!

I'm also an ex-eclipse user who have been a paying IntelliJ user before settling with Netbeans.

Can confirm that we don't bite.

I went to a seminar hosted by FAI to talk about Cypress wireless chips and Murata Modules. Their IDE "WICD" is based on Eclipse. When I saw that I was surprised because I thought Eclipse was not getting much active development.

Their use of it was faster than I remember but just as difficult to navigate.

fuck jetbrains
We're a mostly java shop at work and I'm one of the last few hold outs still on eclipse. I'm used to it and it mostly does what I need. I use the excellent vrapper (http://vrapper.sourceforge.net/home/), but even that has ceased development it seems. Last I tried intellij the vi plugin was unusable for me. I periodically think it's time to give it a try again. It is too bad the eclipse seems to be falling behind and losing mindshare.
I think there's opportunity for a new, more modern IDE. Something better then Eclipse and IntelliJ, but that's not built on top of JavaScript. Doubt there's the funding for it though, but there's definitely the need (of devs hungry for it, but not willing to pay anything for it either).
> but that's not built on top of JavaScript

I know this is a turn-off for a lot of people, but I still don't see why. Why you need an IDE that doesn't use JS?

VSC feels super fast to me. It certainly has better performance than Eclipse ever had, and feels less janky than IntelliJ.

I know some people like the light speed of Sublime, but to me there's a certain threshold where it's just fast enough. And that's where VSC is.

JS just isn't a great language for text manipulation. Even if you ignore that it is a pretty slow language.
Most JS engines have very fast rope-like implementations of strings in JavaScript. String operations in modern JS engines are very fast and hard to beat in any language. Updating the text buffer is fast. Displaying it on the screen is the slow part. Anything touching the DOM is slow. But you can use the 2d Canvas instead, which is fast.
Also, if we ever get something like Mozilla's Servo technology in something like Electron combined with WebAssembly and you truly have a very powerful platform with lots of development options
> something like Mozilla's Servo technology in something like Electron combined with WebAssembly (...)

That still seems too heavy to me. Surely a native runtime for WebAssembly doesn't necessarily require Node and Chromium and all of Electron's bloat?

Well, I was speaking conceptually when I said 'something like'. There are parts of the evolving web platform that are very capable of delivering very high performance rivaling native.
But does WebAssembly need the "web platform" outside of the web?
WebAssembly does not. However, for UI presentation you would want Servo and Stylo.
I have aarch64 and 4GB of memory. Electron apps are not kind to either.

http://roryok.com/blog/2017/08/electron-memory-usage-compare...

Netbeans nightly and JDK9 is quite nice on this platform.

So will a well-written Electron app like VSCode. It's not like Java hasn't had the exact same challenges leveled for decades because people wrote bad code without thinking about resource usage.
I don't see an aarch64 or arm linux distribution for VSCode.

https://code.visualstudio.com/Download

Java works now. VS Code doesn't. Neither does Atom. Or any other Electron app. ARM is a pretty popular arch these days. They might want to work on that.

This thread started with a complaint about building things in a language which wasn't JavaScript. Getting better ARM support is a reasonable thing – and they have open work on GitHub to save you the trouble of building it yourself – but it doesn't have much to do with the language.
> (...) I know some people like the light speed of Sublime, but to me there's a certain threshold where it's just fast enough. (...)

I feel the same way too. I was a Sublime Text fan/user for a few years until did the change to Atom and finally settle down on VSC two years ago. VSC is fast enough for me. Also, LSP seems interesting, ripgrep-backed search, official support for Python (as an extension) and so on.

EDIT: formatting

>I know this is a turn-off for a lot of people, but I still don't see why. Why you need an IDE that doesn't use JS?

Honestly? This is going to be unpopular:

I resent javascript and the people who write it. I feel like there's this huge cohort of mediocre developers who learned javascript either on their own via tutorials or one of those boot camps, and then just never progressed from there, skillwise.

I feel like this cohort is behind what I perceive to be the gradual but inexorable decline in quality of the web in terms of user-friendliness. Javascript and the people who write it have steadily made my experience as a user worse while simultaneously making it easier for huge advertising conglomerates to track me and sell my data to the highest bidder. I'll say nothing of intelligence agencies that unfortunately do have reason to target me because of my work using those same loopholes.

In any case, I perceive Electron to be an enabler for these mediocre developers to peddle their horrible, poorly-performant spyware on the desktop platform because they're too scared to venture outside their comfort zone and learn something other than javascript. Why should I run a whole frigging browser just to display some text?

Not all ideas are created equal, and I just wish Brendan Eich had maybe gone back to the drawing board.

This again...

If you really believe that the "decline in quality of the web" can be attributed to web developers, then I'm sorry but you're just not seeing the big picture.

Marketers want more and more precise user tracking and analytics.

Designers want bigger and heavier images (and videos!) embedded directly in a website's homepage. They want custom, web-unfriendly fonts that have to be downloaded.

Financial stakeholders want cleverer, more intrusive ads that can bypass ad blockers.

And users want desktop apps that they can "install" by bookmarking a URL.

What can devs do about this? Nothing. Refuse to engage in it? Someone else will gladly take your job. In the end, there were clear economic incentives for the web to evolve this way. In this capitalistic economy, there was just no other possible direction.

I have ten years of experience in professional web development. I personally hate Javascript too. It's a terrible language and an even more terrible ecosystem. But in the end, you can write good software in anything. What you don't let like about the web today has little to do with the technology it is built on... Or the people developing for it.

So instead of having a spine and/or ethics, when marketers and financial stakeholders come asking for more intrusive ads and better tracking, what have javascript developers done?

They have been enablers. Every single time.

What's your point? That every javascript developer is unethical because companies are hiring javascript developers to do bad things?
A question was asked why people don't like Electron apps. I answered.
Eclipse feels dated, but IntelliJ is quite possibly the best IDE I've ever used. The Android tooling can be a bit of a beast (until I got 8 real cores it often gave me 1990s style concurrency issues), but the IDE itself is simply superlative. It leaves me wanting for nothing.
I think IntelliJ is excellent. I can't imagine a better IDE.
You making a good job not saying "emacs" =)
To the author, I actually used RustDT for a while and liked it. I gave up on it when I found it was supported by only one person.

I predicted that you would lose interest and move on to something else, and my workflow would have then depend on abandonware. A gentle bit of advice: Team up with someone as enthusiastic about the idea as you. If you can't find anyone interested, that's probably a signal not to work on the thing.

You might want to check out sulong,

https://github.com/graalvm/sulong

It sounds like a project you could contribute a lot to. There are a few core committers and it sounds like you're interested in staying on the JVM. Compiling Rust to JVM and having a decent IDE for the language would be really nice too.

Finally, remember one thing about IntelliJ. It's popular because of Google, and as you have witnessed with Eclipse, Google is fickle. Chasing Google's whims seems like a bad idea in the long run.

> IntelliJ [is] popular because of Google, ...

IDEA is and was pretty well established in the Java/Scala world. Android Studio is the cherry on top.

I love eclipse and we used eclipse for over a year until we switched to intellij.

The main reason: Updating intellij just works. Updating eclipse on arch linux meant that i have to readd the marketplace url for the proper version, add the maven plugin again and than it worked.

Yes this small detail sucked and yes it just works better in intellij.

I've been using Eclipse for what seems like forever. But it feels like with each new release, Eclipse gets worse. More freezes, more crashes, more really weird behaviour, slower code completion. The fact that I still can't turn off retarded core plugins (like the horrible Git plugin) bugs me to no end. Every time I install a new version, I have to remember to go in and delete the Git plugin jars because it fucks up my workflow.

I'll keep using it, because IntelliJ is almost as bad and has a GUI paradigm I can't get used to. But eventually that balance is going to shift.

If Eclipse is suffering from a lack of man power, they might want to consider making it easier to contribute.

>I deleted core jars from the distribution. It freezes and crashes all the time. Wow, Eclipse sucks.

Thanks dude. I just sprayed coffee all over my keyboard. The laugh was worth it though.

I was hoping the author would talk more about the underlying technical reasons for the problems, as I would have thought he would have insight into that as a plugin developer. It seems like his reasons are really mostly around it losing mindshare and being a waste of his life and the technical is actually less important (even if it is a cause of the former).

I still use eclipse because I haven't found anything else that embraces true full multi-language development the way Eclipse does. That is, in one IDE I have front end, middle tier and back end code all in different languages, sitting next to each other as first class citizens. I can set a breakpoint in my PHP code and my Java code and my Python code, and I can have the source windows right next to each other and debug them in parallel. I just don't know anything else that does that so well.

I also find Eclipse's incremental compile model invaluable. I was kind of shocked when I tried out IntelliJ and had to wait 15 seconds while it ran Gradle for it to tell me about a compile error.

So I'm definitely in the club of being sad it's losing mindshare.

I don't understand what exactly is the reason people don't like Eclipse. The features and the overall feeling of using the IDE is great, that's why I am still using Eclipse (mostly Java and Scala development), so are many of my colleagues. I guess there are some downsides, like slower leading times and a bit clunky compilation process, but other than that, it's a solid IDE.
Everyone complains that it is bloated and slow, but I think a lot of people run it with too little memory. I always change the default settings to give it 2g of memory and it always runs fast. Some people think that's ridiculous, but given I spend 70% of my time in that environment, I'm more than happy to have it use that much memory.
Bye Eclipse, you won't be missed >.<