Because of my various problems with Eclipse a while ago, I was in need of an IDE I would really love for the basic task of typing kilometers of source code. NetBeans is wonderful for its tools but I wasn't satisfied with its editor.(I use it to design GUIs, profile applications and any Java/Web development – like SwingLabs web site.) Hopefully, I found a solution to this last problem: IntelliJ IDEA.
I heard a lot about IntelliJ during the past few years and I always wondered what made its users to happy and rich and famous. As it turns out, it's very simple: IntelliJ is a fantastic tool. I cannot thank enough Maxim Shafirov and JetBrains who offered me a license for their product. That was a smart decision since I'm now a happy user that will definitely buy a license as soon as the next version comes out.
IntelliJ surprises me every day… in a good way. I have never seen a tool so intelligent or so capable of doing the right thing (well Mac OS X does surprises me in the same way sometimes.) I could spend hours writing about all the features I love but I couldn't really convince you how impressive this IDE is. Some of the features are obvious, like the code completion (in spite of some time required to learn how to use it properly), refactoring or usages search. But IntelliJ also offers a variety of very interesting features, some of which I have grown to love. The structural search and replace is for instance what I've been wanting for years in my source code editor. Albeit not as powerful as Jackpot, it gets the job done and matched all my needs so far. I am also fond of the dependency analysis and the code inspections. Some of them are excellent and I have been most surprised a few times when running some of them and getting the results (for instance when IntelliJ is able to tell me all the files my program will touch at runtime.)
All these features wouldn't be that useful if the IDE did not offer sensible defaults and, best of all, a rich set of keyboard shortcuts. It is not very surprising for a modern Java IDE but for most of them I really feel like JetBrains' team took time to choose something easy to type. This might be small details but it makes a huge difference at the end of the day. And everything in the tool gives me this impression: that the development team asked itself the question “as the user, what would I want the IDE to do?” I don't know for sure, but I wouldn't be surprised if everybody at JetBrains is using IntelliJ for every day's work.
Despite its numerous qualities, IntelliJ is not perfect (yet.) but it's mostly a matter of taste in my case. For instance, I don't really like any of the look and feels IntelliJ can use and even Mustang does not apply sub pixel antialiasing everywhere. Aqua and Windows XP are okay but the overall result is a bit clunky. I am also disappointed by some dialog windows, like the one to create a new class. I would expect to see more options in there (Eclipse's new class dialog is great for instance) but I might have missed something.
Anyways, IntelliJ just made my life much easier and best of all, it's a wonderful example of how fast and snappy Swing applications can be. As I said, I cannot talk about all the features I like in this IDE but I can tell you that I've been helped by the book IntelliJ IDEA in Action. While most of the book doesn't really matter when you already know how to use an IDE (be it NetBeans, JDeveloper or Eclipse) I found many interesting pieces of information. By reading it, I managed to learn about some features that I would have otherwise postponed the learning of ad vitam eternam. The debugger is a good example. I rarely use a debugger, but reading through the chapter made me realize how powerful IntelliJ's was (even though I bet it's not very different from NetBeans' or Eclipse's.) This book is also a nice way to get a glimpse of your new play field. It's a bit expensive but I think it's definitely worth a buy if you are switching from another tool. Switching is always a pain and anything that can ease it is welcome. Well, IntelliJ IDEA in Action eased my pain :)