Batman vs. Superman, Marvel vs. DC, Windows vs. Linux, Java vs. C#, are a few examples of some eternal wars. One such battle is IntelliJ IDEA vs. Eclipse – the selection of the best Integrated Development Environment – affectionately known as the IDE. There are many IDEs in the market today for Java development – the likes of Netbeans, DrJava, and of course Eclipse and IntelliJ IDEA are just to name a few.
These IDEs ease the workflow of a developer by providing them with a complete and integrated environment. The support of various plugins coupled with the ability to handle large projects seamlessly makes the IDEs an irreplaceable tool in any developer’s toolkit.
Today we’ll be looking at two such IDEs in depth, and taking them head to head. We’ll look at how Eclipse and IntelliJ IDEA compete against each other in terms of the features they offer.
Eclipse is by far the most commonly used IDE by budding as well as experienced developers. It is supported by a large community of developers, great documentation to get you up and running, and the best part – the support of thousands of plugins to make your experience even better.
Eclipse is mainly used for developing web, mobile, desktop, enterprise, or embedded system applications. It can be used open-source under Eclipse public license. Eclipse is written mostly in Java and runs seamlessly on the three major operating systems – Windows, Linux, and Mac OS. Although well known for Java programming, it also supports various other languages including Groovy, Scala, and Python.
Eclipse is capable of opening multiple projects in the same window thereby giving you control over dependencies and relations. However, regarding user experience and the ease of code completion and inspection, Eclipse falls short despite having many plugins, especially checkstyle.
If you’re a rookie programmer, you’d appreciate an auto-complete feature that can show the list of the most relevant symbols applicable in your context. Eclipse falls short on that. Just for argument’s sake, we can use this point in favour of Eclipse saying it offers a better learning curve, but at the end of the day, it’s really about how easy it is to get your application up and running.
Salient Features of Eclipse
Mylyn is a subsystem of eclipse for task management. The advantages of Mylyn are quite well known, but you won’t appreciate them till you use it and see them for yourself. Mylyn helps developers track their tasks in a task list view – without having to open a browser. Mylyn provides an easy way of keeping track of all the files related to your current work.
Eclipse provides frequent and regular software updates. The ability to simply update your IDE from the console itself without worrying about dependencies, or unzipping a zipped file makes a developer’s life easier. Everything is managed through this simple dialogue:
Enterprise Java Tooling:
Eclipse has the best tooling to offer for JEE projects. It offers an outstanding amount of functionalities – from wizards for Web Service creation, XML editing, to excellent JSF and JPA tooling. In essence, it’s a very simple feature but is very useful. The ability to control and deploy the server of your choice is commendable. Also, if your server isn’t on the list, you’ll likely find a plug-in to support your server.
Model Driven Development:
The Eclipse Modelling Project offers a set of modelling tools for those using EMF or related techniques for modelling. The Ecore Tools that are used to work with the EMF models allow you to create and modify your ecore using a standard tree, or through the visual Ecore diagram editor (see below).
IntelliJ IDEA IDE
IntelliJ IDEA is a fully featured IDE developed by JetBrains. JetBrains is an established company and famous for the Resharper plugin for Visual Studio that is beneficial for C# development.
The IntelliJ IDEA comes in two editions – Free community edition and an Ultimate edition. The free community edition of IntelliJ IDEA offers the basic features useful for developing Android and Java applications. Google’s official Android development platform – Android Studio, is also based on IntelliJ IDEA’s free community edition. This IDE supports many languages from Java, Kotlin, Scala, Android, Mercurial, Groovy, Gradle, Git, SVN, SBT, and CVS and also offers basics (yet essential) features like code completion, deep static analysis, intelligent refactorings, debugger, test runner, etc. The Ultimate Edition, on the other hand, has the most advanced set of features for developing web and desktop applications.
Some of the additional features of the Ultimate Edition
- Supports the integration of Spring framework.
- Supports web development framework like Node.js, Angular, and React
- Java EE support such as JSF, JAX-RS, JPA, CDI, etc
Eclipse falls short in providing good assistance for code completion despite supporting many plugins. The default code compilation in IntelliJ is much faster and better, especially if you’re a newbie programmer – IntelliJ can help you improve your code.
One of them is Smart Completion which provides you with the list of the most relevant symbols applicable in your current context. This as well as other completions constantly learn from your coding practices and moves your most frequently used packages and classes to the top of the list, so that you can select the right option faster. Another such feature is Chain completion which is even smarter than the Smart Completion. It lists all the applicable symbols by making use of getters or methods which makes it even faster. There are many other out-of-the-box features too which make IntelliJ IDEA a truly intelligent IDE
Features which make IntelliJ IDEA a truly intelligent
IntelliJ IDEA offers the developers with a unified interface for most of the version control systems. Git, SVN, Mercurial, CVS, and Perforce are just to name a few. This single interface lets you browse the history of changes, manage branches, and merge conflicts.
This IDE supports all the major build tools like Gradle, Maven, Gant, SBT, NPM, Grunt, Gulp, and more. These tools eventually help automate compiling, packaging, running tests, deploying, and other activities.
It supports major application servers like TomCat, JBoss, WebSphere, Glassfish, and many more. It allows you to deploy your code onto the application servers and debug the deployed code from the IDE itself.
IntelliJ indexes the entire project when you first start it up. That way, it doesn’t need to search for files every time you need a resource (unlike Eclipse). This significantly speeds up the search process.
All these features make IntelliJ IDEA a clear winner when it comes to usability and user experience. However, it falls short on the number of plugins offered. Compared to 1,276 plugins offered by Eclipse, IntelliJ only offers ~700 plugins.
But, this shouldn’t be a dealbreaker as IntelliJ offers a lot of new and improved features out of the box, without needing any plugin – unlike Eclipse.
If you’re a beginner in the field of Java development, your choice should be IntelliJ IDEA – thanks to the various beginner-friendly features it has to offer. However, if you’re looking to work on large and complex projects, and have a fair bit of expertise in Java programming, you can opt for Eclipse instead. Like with every other debate, at the end of the day it’s all a matter of preferences, but there’s no way you can ignore IntelliJ IDEA.
Let me know what’s your choice out of the two in the comments below!