A Guide to Java IDEs

An integrated development environment (IDE) is the place a developer will spend most of their time. Having your IDE well suited for you is very helpful, and can boost your productivity and quality of code.

Fortunately, there are multiple IDEs to choose from, as well as a myriad of plugins to tailor it to your specific needs. Plugins range from small cosmetic changes to plugins that completely change the way you write your applications.

Which IDE to choose?

If you're studying Java, your educational establishment will probably advise you to use either NetBeans or Eclipse as your first IDE. These environments may seem daunting at first sight, but they are simply tools that help you do your job/hobby, just as a canvas is to a painter.

Please note that most of what I write is from my personal experience - your experience might differ from mine in a lot of ways. Feel free to share your own stories and thoughts whether you agree or disagree.

Here are some prominent things about each IDE, after which I'll compare them and then show you my own setup.

 NetBeans

I started my programming career with NetBeans. This IDE offers support for many other languages besides Java - it includes tools for PHP and C/C++ as well. There's also support for JavaScript/AJAX, CSS, Gradle, Maven, Ant and it has a debugger tool. 

NetBeans is language aware, which means that it detects the written code's language and suggests improvements according to syntax/formatting, as well as detects errors. 

It supports all aspects of Java - Web Applications, Swing, JavaFX, plain Java projects, you name it.

A lot of people consider NetBeans to be great "out of the box" meaning that after installation, not a lot of plugins, setting up etc. is needed for it to work efficiently.

NetBeans offers support for Tomcat, Glassfish, JBoss, WebLogic, WebSphere etc...

Additionally, a lot of people consider NetBeans to be easier to learn over other IDEs.

NetBeans is free, open source and works cross-platform.

 Eclipse

Eclipse has a lot of different releases. Instead of using standardized numbers for release names, it uses code-names:

  • Galileo
  • Helios
  • Indigo
  • Juno
  • Kepler
  • Luna
  • Mars
  • Neon
  • Oxygen
  • Photon

Each of these releases the offer multiple packages. Each package has a default set of plugins and tools for various specific purposes, like for an example:

Eclipse IDE for Java Developers  
Eclipse IDE for Java EE Developers
Eclipse IDE for PHP Developers
Eclipse IDE for C/C++ Developers etc...

Eclipse offers mostly the same things that NetBeans offers.

It's language aware, offers code-completion, fixes, and formatting. However, it's not so great "out of the box". In my personal experience, I needed more time, plugins and customization to work properly. 

The learning curve is a bit steeper than that of NetBeans, but it's nothing to worry about, it doesn't cripple you. 

Eclipse is free, open source and works cross-platform.

 IntelliJ Idea

IntelliJ Idea is an IDE developed by JetBrains and my current IDE of choice. 
It features support for multiple languages (Java, Groovy, Kotlin, Scala, JavaScript, SQL, TypeScript, Ruby, Python, PHP etc), offers smart completion, data flow analysis, cross-language refactorings, detection of duplicate code etc.

The IDE was developed with ergonomics in mind - there are various and numerous shortcuts for key features of the IDE. Also, IntelliJ Idea offers an inline debugger, which shows you the variable values in the source code - on the selected line.

Additionally, it has built-in version control (Git, SVN, Mercurial, CVS, Perforce and TFS) and multiple build tools like Maven, Gradle, Ant etc.

IntelliJ Idea features a built-in test runner with multiple major test frameworks, as well as a decompiler for Java classes.

As far as application servers go - it supports Tomcat, JBoss, Glassfish, WebLogic, WebSphere etc...

Writing code in it came to me as more natural, smooth and easier than any other IDE I've been using, and I feel right at home with it.

IntelliJ offers a free Community version, with an open-source license and limited features.
The Ultimate version costs 499e (399e for the second year, 299e for the third year) for a yearly subscription and it works cross-platform.

 NetBeans vs Eclipse vs IntelliJ Idea

It's hard to choose a "winner". It comes down to multiple factors when deciding which IDE to use for your everyday tasks. From the size and nature of your project to your team and in all truth, your personal preference. I just love IntelliJ Idea, it works like a marvel for me and keeps me productive. 

All of these IDEs are good, though I would personally recommend either NetBeans or Eclipse to beginners, as Eclipse is currently the most widespread IDE in use, and most tutorials/courses online will assume you're using it while NetBeans has risen in popularity in the past few years and challenges Eclipse directly. I would suggest seasoned developers to try using IntelliJ Idea if they haven't before.

All in all, I encourage you to try them all and find the best fit for your needs. Reading a guide might help you choose your first IDE, but finding the right one for you requires you to use them for some time.

 My own IDE setup

A lot of beginners I know who are just starting out have asked me for guidance on this topic, and a lot of those questions were followed by "Well, what do you use?".

It might be interesting for someone to take a peek at the plugins I personally use to make my day more productive, pleasant or simply fun.

First off, I use IntelliJ Idea as my preferred IDE, but if a project requires me to work in any other IDE, I swiftly switch.

 Plugins

You'll notice that I don't have many "functional" plugins, most are either cosmetic or for fun. This is mainly because IntelliJ Idea by default offers everything I need to work, and I have no need to change anything.

Statistic - I really love statistics and numbers. Whatever I do, I like to keep track of the statistics and I find them interesting and let's say "eye-opening" to the information I don't really need to know but like to nevertheless.

This plugin offers you an overview of all code/text in your project from all file types. Here, you can see total (and individual) lines of code, count of specific files, their sizes etc.
On the other hand, you have a Java page that analyses each Java file in your project. It gives you the percentage of comments, blank lines, source code as well as total lines in each file.

CodeGlance - In addition to me liking statistics, I like to have overviews of my projects in other ways as well. CodeGlance allows me to see a "zoomed out" view of the code in a file, and highlights what I'm currently looking at. It helps me see the structure of my file, keeping it clean and organized.

GenerateSerialVersionUID - Just a coding plugin that helps me generate SeralVersionUIDs by inserting via a shortcut. This came in handy while developing Spring MVC applications.

Snake - Made as a joke about Python, this plugin allows you to play as a small snake in your very editor, eating semicolons and wiggly braces of your code. In my experience, the game wasn't very smooth, but I still like to keep it around for those times when my head aches and I simply want a bit of fun.

Power Mode II - Probably the most ridiculous plugin on this list, it adds special effects for writing code like exploding falling sparks, screen shaking, flames, heatup based on typing speed, music based on heatup, power level with messages and a huge "BAM!" sticker when deleting chunks of code. It is absolutely insane, and even though I rarely use it, as it is fairly distracting, it's fun to show your programming skills to your friends with music, explosions, fire, and style.

Codota - Just recently, I've started using Codota, which is a fairly new plugin that works with multiple IDEs. It's an AI plugin that uses millions of open-source projects to learn and predict what you're about to write. The goal is to skip writing standard code idioms and focus more on your specific task. Additionally, it allows you to search for code, anywhere on your machine using a keyboard shortcut. You can also use it to suggest code and whole blocks based on one line in your code. I still don't have a formed opinion on it since I've just begun using it, but the idea sounds interesting to me and I simply want to try it out. 

 Conclusion

Finding the right IDE for you is important, so take your time with each of them, and install plugins whether they are for fun, cosmetic or coding related. I hope that this blog helps you get a bit closer to these programs, and helps you choose one to start your programming career.

If you're interested in installing the plugins mentioned in this blog, you can do so by visiting the official JetBrains plugin page and searching for them - or via the Plugin section in the Settings window. Codota is installed separately and downloaded from its official website.