Skip to content

Instantly share code, notes, and snippets.

@danthe1st
Last active September 22, 2024 19:17
Show Gist options
  • Save danthe1st/b72175436d9aaf0e19eeca608cce4feb to your computer and use it in GitHub Desktop.
Save danthe1st/b72175436d9aaf0e19eeca608cce4feb to your computer and use it in GitHub Desktop.
Why I personally prefer Eclipse over IntelliJ

Why I personally prefer Eclipse over IntelliJ

Introduction/Disclaimers

I do not claim any IDE being better than another. These are just reasons I personally like developing in Eclipse more than I like developing in IntelliJ.

I have used both the Eclipse IDE and IntelliJ for quite some time and I cannot deny that both are excellent IDEs. While Eclipse is better for me, this might not be the case for you. This is my subjective opinion and this gist is intended to explain some reasons so I don't have to repeat myself all the time.

As I am (mainly) a Java developer, this applies to Java development specifically but some points may not be specific to Java.

What is compared?

IntelliJ comes in two editions: Community Edition (free) and Ultimate Edition (paid). When comparing Eclipse and IntelliJ, this is (in my experience) often ignored. Some functionality is possible in Eclipse (especially using Eclipse IDE for Enterprise Java Developers which is Free and Open Source as well) which are is available in IntelliJ Ultimate Edition (see the point Enterprise Features).
I am not interested in arguments saying IntelliJ would be better than Eclipse because it would support a feature not available in Eclipse when that feature is actually only available in the paid version. Also, nothing would stop you from contributing that to the Eclipse IDE.

I can't (don't want to) really use IntelliJ

That being said, I need some functionality which would be only available in the (paid) Ultimate Edition if I was using IntelliJ. While I would probably be eligible to get a free license, I wouldn't be allowed to use it for some projects and I don't feel like buying a personal license for an IDE, especially when I could get a free license.

However, I do have access to that kind of functionality when using Eclipse.

Debugging

When debugging an application in Eclipse, I can see the returned value of a method after stepping out of or over the said method, even if that value is not assigned to a variable. While this might seem like a minor detail, I use that all the time and not having that capability would be annoying to me at best.

Similarly, Hot Code replace just works in Debug mode. When I debug an application, change something and save the file, the changes are applied to the application without me restarting it, explicitely pressing a button, key combination for recompiling it. When using Eclipse, this just works without me having to tweak any flags or anything else.

The Eclipse Compiler

Eclipse uses its own Java Compiler (The Eclipse Java Compiler). While it is also available with other IDEs, it has some advantages for developing applications.

Platform, plugins

The Eclipse Platform itself is (in my opinion) far more powerful and extensible than the IntelliJ platform. While I am not particularly good at developing IDE plugins, I do see the difference in potential.

For example, if I had to write IDE support for a new programming language, I would prefer doing that for the Eclipse IDE.

Aside from that, just like there are different JetBrains IDEs, there are different Eclipse packages. But for Eclipse, I can just start from one package (or just using a new Eclipse Platform installation which is "the absolute minimal IDE") and change what I need/completely customize my Eclipse installation as I like.

Lightweight

Eclipse doesn't require as many resources as IntelliJ (although installing too many plugins might change that but that isn't a problem of Eclipse).

Databases/DBeaver

I personally like DBeaver more than I like DataGrip/the Databases view of IntelliJ.

Workspace-based

I personally prefer workspace-based IDEs over project-based IDEs as I like to switch between multiple (not necessarily related) projects in the same window.

With Eclipse, I can also organize my projects into "Working Sets" which lets me group together some projects in my workspace. With this, I can only focus on the projects that I am working on while still having more projects in my workspace and quickly switch between working sets if necessary.

Layout

With Eclipse, I can freely move views in my layout as I want. I can split some parts into multiple views as I want and even combine them to a single window on another screen. This isn't as easily possible with IntelliJ.

Indexing

In the past, I was often annoyed by IntelliJ basically being unusable while indexing dependencies. When using Eclipse, I don't need to worry about indexing at all and it is ready as soon as it's started.

Configurability

In my experience, Eclipse is much more configurable than IntelliJ.

Hidden Features

Many people think certain features are only available in IntellIJ and not in Eclipse. However, this is often not the case. In many cases, those are just not enabled by default. See this video for hints regarding working efficiently using Eclipse.

Maven

While I mostly edit pom.xml files as text, Eclipse's Maven POM Editor is really powerful and useful, especially when it comes to looking for certain things.
For example, it has a Dependencies and Dependency Hierarchy tab which can be imagined as interactive versions of the mvn dependency:list and mvn dependency:tree commands respectively while the Dependencies tab also allows for editing dependencies. Similarly, the Effective POM tab tells me about the effective POM (similar to mvn help:effective-pom) in text format which is useful when I want to inspect something about a pom.xml file.

Aside from viewing POM files, I also like how Eclipse handles Maven projects in general. If I have a multi-module Maven project or multiple Maven projects in the same workspace referencing each other (assuming the versions are correctly set up), Eclipse detects projects referencing each other. When I then change something in one project, these changes are applied to the other project immediately without me having to configure it. This can make developing significantly easier.

FOSS

Eclipse is fully Free and Open Source Software. While IntelliJ has a free Community Edition (which also includes proprietary components), I prefer everything to be Open Source.

In general, I think it is preferable to use Open Source tooling where applicable. The whole development of the Eclipse IDE happens in an Open Source and transparent way at the Eclipse Foundation.

Aside from that, Open Source projects allow people to build their own functionality and contribute it to the original project like I have done with Spring Tools. If I was using IntelliJ, I wouldn't be able to contribute code to the Spring (or similar) tooling I use.

Also, I really think that there should be a viable option for choosing an IDE which is not just controlled by a single company (like JetBrains or Microsoft).

Enterprise Features

This also leads to many features (e.g. autocompletion of Hibernate queries using JBoss Tools) which would otherways only be available in the Ultimate Edition of IntelliJ being Free and Open Source with Eclipse.

Availability for other projects

Due to the nature of Eclipse being Free and Open Source Software, it is possible to use parts of the Eclipse Tooling for other projects. For example, there are multiple IDEs building on top of Eclipse for solving specific tasks. Also, the Java Tooling of Visual Studio Code uses tooling of the JDT (from the Eclipse IDE).

Independence

The Eclipse IDE is the only major IDE I know about which is independent and not controlled by a single company. IntelliJ is developed by JetBrains but the Eclipse IDE is created under the umbrella of the Eclipse Foundation. While it is possible for various organizations to influence and contribute to Eclipse tooling and the IDE, there is not a single, profit-oriented company having control over what happens with it.
To be honest, I don't want to be fully dependent on some company when it comes to the IDE I use.

In my opinion, it is important to have major independent Open Source tooling and not let a single company dominate everything in that regard. Also, the Java support of Visual Studio Code is built on Eclipse tooling (JDT-LS) making it depend on the Eclipse IDE project.

@DeenzX
Copy link

DeenzX commented May 23, 2023

Nice.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment