IntelliJ is the kind of editor that makes me wish I found it sooner.
Picking an editor is usually a function of many factors. Style, functionality, support, ‘Look and Feel’ are usually some of the factors that come into play.
Thankfully, there is one editor out there that ticks all the boxes: JetBrains’ IntelliJ. In this blog post, we’re going to talk about some of my favourite features of IntelliJ.
Note that this article is not sponsored or endorsed by JetBrains in any way. This is my honest opinion on an editor I’ve been using for over 8 years of professional development.
You’ll also be happy to know that by the end of this article, you can give the free version aka Intellij Community Edition a try. Its a stripped down version of the Ultimate edition but it lets you get an idea if you feel IntelliJ is worth the investment.
Clean and Stylish UI
IntelliJ already looks great by default, but the wide variety of theme support helps folks find something that really works for them. Custom themes are easily downloaded via IntelliJ’s website and install in seconds.
If you’re not satisfied with color themes, its pretty easy to build your own from scratch. Ontop of that, you’re also able to set up language based syntax highlighting to customize your experience even further.
From the functionality perspective, everything in this UI just ‘works’. The project menu is intuitively on the left hand pane giving a natural folder like structure to explore your contents. The menu bar on the top is fully customizable allowing you to add, remove, or reorder widgets at will, neat-o!
The editor section is center stage, with a gutter icon on the left showing context-specific icons. For instance, the icon to the right of Line 29 in the screenshot above indicates this line contains a recursive call. This is just one example of some of the amazing out of the box functionality IntelliJ provides.
Built for Java, but compatible with all
I don’t think anyone should ignore the fact that IntelliJ is built for Java developers in mind.
Many of its components are also tailored with the Java developer including Java 8 Stream Debugger, Java Specific Code Generation, intelligent code completion, and reliable refactoring functions.
Despite being mostly meant for Java developers, IntelliJ comes equipped with plugins that allow it to be used with a diverse set of other languages. This includes Javascript, Typescript (with Angular, React, Vue support), Ruby, Python, GoLang, and many many more languages.
In fact, pretty much every other language that JetBrains has a product for can be supported in IntelliJ versus a plugin.
This alone is a fantastic thing that can almost make you want to delete all your other IDEs including Webstorm, RubyMine, CLion, and others.
However, keep in mind that I don’t think IntelliJ is meant to fully replace these other products – they still have a place in the sense that they have native language specific features. BUT, if you’re looking for language support in for these other languages IntelliJ will do just fine.
Extensive Plugin Support
There are hundreds of plugins providing even more IDE functionality. Some of these are developed and supported by JetBrains themselves while others are built by the community.
You’ll be happy to know that if JetBrains doesn’t support a product or service as part of the editor, many developers like yourself have created one to support it. For example, plugins like Lombok make it such the IDE can detect annotations on the fly and offer code completion (@Builder, @Getter, @Setter) as an example. It also incorporates a very useful ‘De-Lombok’ feature to show you what low level code is being generated when you use the annotations – very useful for debugging.
Lombok is just one example here, but you get the idea.
Some of my absolute favourites are IdeaVim (allows you to use VIM keybinds within the IDE), AWS Toolkit (allows you to integrate with AWS to create applications easier), and IDE Features Trainer (a JetBrains created tool that helps you learn IntelliJ keybinds).
In fact, I have an entire video on VIM at this link if you’re interested.
An Intuitive Developer Experience
There’s something about using IntelliJ that makes it an absolute pleasure to use. I think it mostly has to do with the intuitive nature of the editor.
Everything just feels like every feature in the editor was well thought out. This extends all the way down to small details, such as the ability to “Go to Source File In Project” to automatically bring you to your open file’s location in the project menu. This is ENORMOUSLY useful for developers working on large projects. It definitely feels like this editor was made by developers for developers.
On top of that, Refactoring just works, and works everywhere. It’s always a pleasure using IntelliJ’s refactoring. The feature reliably modifies anything from function signatures, to variable names, to class names, and others.
Next, I also LOVE the ‘Find Anywhere’ function. This is my go-to location when attempting to find absolutely anything in this editor. The feature works by opening up a context box upon double-tapping LShift (default) and typing what you’re looking for in search bar. Autocomplete will provide suggestions that IntelliJ thinks you might be looking for.
You can type any setting, plugin, classname, filename, or literally anything that makes sense to quickly find it. This is super helpful when looking for specific classes, or quickly jumping to an editor setting without having to fumble through the large number of options – awesome.
There are certain neat shortcuts to know about here too – for example, if you’re looking for a class called PersonController, you could type the letters ‘PC’ to quickly narrow down your selection. I’m sure there’s many more micro optimizations out there that I haven’t stumbled upon – yet!
Free to Try, Worth it to Own
The nice things about the folks over at JetBrains is that they let you test drive the IDE before purchasing by downloading the JetBrains Community Edition. The CE is a pared down version of Ultimate, offering the same core IntelliJ experience without the extras such as other-language support, Profiling, Framework Support, and other features. You can find a full list here of the differences between the Ultimate and Community Edition.
You could certainly get away with using just the Community Edition for your java work, but those of you looking for the full experience should consider purchasing a yearly subscription ($499) or a monthly one ($49.90) per month. Note that if you’re considering buying this, you can also buy the All Products pack for $649 per year or $65 per month – probably worth it if you enjoy the other JetBrains products (by the way, datagrip is AWESOME!).
So is IntelliJ Right For You?
So far in this article I’ve been praising IntelliJ and all the great aspects. And thats fine – because the editor does a LOT right.
But at the end of the day, the question to ask is whether or not IntelliJ is right for you. And I don’t think its possible to answer this question without just downloading the CE edition and giving it a shot.
Let me know what you think if you do !