IntelliJ IDEA: One IDE to rule them all
Tags: java, javascript, ide, devlive
Published: 2020-09-16 11:59:53

I used a lot of IDEs in my time programming. I spent a lot of time in Borland Delphi, Visual Studio, NetBeans, Eclipse, you name it. One day my employer at the time purchased IntelliJ IDEA licenses and I was immediately convinced. 

At the time we were working on huge monolith containing hundreds (maybe thousands) files. Mainly JSP/html pages, Java classes, Java Script files, etc... We were working in Eclipse and Eclipse was crushing under the amount of files. We needed to disable a lot of nice to have features (like HTML validation, etc…) otherwise Eclipse would not load the project. Yeah it was not nice project, but to be honest most of the legacy codebases are not very nice. My biggest issue was finding the place where we should do the change. There was no real structure to the project. Or there was more like five or six different structures over the years. So even finding a file to fix typo would be a challenge. 

Here goes IntelliJ IDEA. IDEA launched the whole project without any issues, first launch took some time (indexing all the files), but not much more than Eclipse launching every time. Everything felt fast. And best thing was the full text search. IDEA has all the files indexed and you can search over them. Incredibly fast search over them. It felt like magic. 

Our main goal on this codebase was to refactor the whole project to something more manageable. Here comes IDEA again. Refactoring tools here are really good. They are fully leveraging the index in the background so IDEA can for example check each reference during rename in seconds. It feels fast and powerful. 

At that time, it was all I needed to be huge fan of the product. IDEA now has the best Java debugger I found. It works flawlessly with lambdas, code evaluation when stopped in breakpoint is life changing feature and it’s how I do most of my debugging, or even code writing. Just get to the breakpoint, `Alt + F8` and poke around. Evaluate any code, add it to watch points, drop frame and again. It’s not essential loop for my work. Plus, there is awesome decompiler to help you debug third party library code where you do not have a source code of. 
 
IDEA supports tons of languages JavaScript, Type Script, HTML, CSS, SASS, Python,PHP, Groovy, Scala, Kotlin, etc… Either the support is built in or via an plugin (usually official JetBrains plugin). This makes it the true full stack IDE. Now days I do all my development in it. My stack if Java, Kotlin, HTML, Angular, Vue.JS. It’s all perfectly supported.

There are tons of plugins for everything you possibly need. Either official Jet Brains ones or third party ones. IDEA has built in marketplace for plugins and you can find plugin to whatever you need. 

VCS support is state of the art and built into the whole IDE experience. You can do all your git actions from within the IDE no need to learn git commands, it has awesome conflict resolving tool with some magical tools to help resolve most of the conflicts. Support for rebasing, rewording, etc… 

Another awesome feature is database management. IDEA has tooling to manage your databases, you can store the connections, view tables, structure, launch SQL queries. All you possibly need. You no longer need to have Oracle SQL developer or pgAdmin. Just use IDEA.
 
Most recent feature I found was REST API testing tool. I always used Postman and recently one of my colleagues was saying he migrated from Postmen to IntelliJ. You can have files describing the API calls, together with your API, version controlled, etc… It has support for environments; all the features you would expect. It’s different than UI based client but it’s useful and really good. 
There is lots more features. Terminal integration, test runners, Docker support, Application Server support, etc… You can download free trial version as see for yourself. You will not find better IDE. 


## TL;DR 
Best IntelliJ IDEA features
-	Fast full text search
-	Great refactoring tools 
-	Support for lots of languages
-	State of the art Git integration
-	Lots of plugins
-	Database management
-	REST API testing

---
If you like this article you can follow me on [Twitter](https://twitter.com/pavel_polivka) for more.