
Why IntelliJ IDEA is hailed as the most friendly Java IDE (many screenshots) - andrey_cheptsov
http://blog.jetbrains.com/idea/2016/03/enjoying-java-and-being-more-productive-with-intellij-idea/
======
incepted
"Friendly" is not the word I would use. Powerful, sure. But IDEA breaks quite
a few universal GUI concepts and that takes a bit to get used to.

For example, Ctrl-w is a very important keybinding on IDEA, one that I use all
the time (it expands the selection to the enclosing expression). It's
literally wired in my brain now. To the point that I now use it in Eclipse as
well and I even started using it in other places (Sublime, etc...) and...
closing the window as a result. Very annoying.

Another one is that Ctrl-n sometimes creates a new file (expected) and
sometimes... something completely different depending on your current window.
Again, not friendly. Optimized for development and a life saver on the long
run, for sure, but it's fairly user hostile.

~~~
matt_kantor
The non-standard default keyboard shortcuts bug me as well, but on the plus
side they can be rebound.

The thing that frustrates me most in IntelliJ is that all of the dialog
windows are modal for no apparent reason. Why can't I focus the main window or
at least interact with it to change tabs, select text, etc when I have dialogs
open?

"Find in Path" is a particularly obnoxious example: it's fairly common that I
want to search for a string fragment, so I open the search dialog and set up
my search context, then try to select text to copy as the search term, but I
can't, so I have to start over.

I want to be able to interact with the editor at all times, though I could see
locking it during complicated refactors to keep me from changing code while
the IDE is trying to change it too (only while a progress bar dialog is
visible).

Modal windows should be the exception, not the rule.

\---

To be clear I love IntelliJ. While I prefer simpler editors in many
situations, I can't see myself going back to anything else for medium-to-large
JVM projects (Scala especially). The modal niggle and a few other minor
usability issues are small blemishes on an otherwise great IDE.

~~~
incepted
> The thing that frustrates me most in IntelliJ is that all of the dialog
> windows are modal for no apparent reason. Why can't I focus the main window
> or at least interact with it to change tabs, select text, etc when I have
> dialogs open?

Funny, as soon as you said that, I nodded and I immediately thought "For
example, the universal search dialog should definitely not be modal". And then
you follow with...

> "Find in Path" is a particularly obnoxious example

Totally agree and I'm surprised I missed it. Modal dialogs are not user
friendly (and very old school UI).

------
jordanpg
About a year with eclipse and nearly two with IDEA now.

In terms of overall usability, speed, and stability IDEA is incomparably
better. Yes, there are a few minor things that eclipse does better/IDEA can't
do (so I keep reading). But this is hugely overshadowed by the fact that IDEA
is a high-quality, well-supported professional-feeling _product_. In
comparison, eclipse looks, smells, and acts like a kludgy, bloated, long-lived
open source _project_.

The main important difference is that eclipse is _free_ , and thus some folks
seem to really go to bat defending it. There is a certain powerful frugality
ethic among developers.

But really, if you're not going to get bent out of shape about spending a few
bucks for a piece of software you spend many of your waking hours using, there
is no serious comparison.

~~~
ghrifter
> IDEA is a high-quality, well-supported professional-feeling product. In
> comparison, eclipse looks, smells, and acts like a kludgy, bloated, long-
> lived open source project.

Proprietary, closed source development vs. Open Source software development in
a nutshell.

I'm really glad a friend recommended IntelliJ IDEA to me. It's a great
product. Having used both Netbeans and Eclipse on a rather powerful machine,
the UI would lag. I don't like to wait for computers to finish computing
things when I'm programming pretty much in just a text editor ("writing code
mode")...which brings up another point - Atom is not a great text editor
either because it is so UI laggy it slows down development.

~~~
meddlepal
The core of IDEA is open source: [https://github.com/JetBrains/intellij-
community](https://github.com/JetBrains/intellij-community).

The Ultimate Edition is worth the money, but the whole system is just a bunch
of very well built plugins atop the CE.

------
sgt
Agreed. Switched to IntelliJ about 4-5 months ago. Haven't looked back since.
Interestingly, what caused me to look at IntelliJ wasn't a lack of features in
NetBeans, but rather the fact that still today NetBeans doesn't work properly
on a retina MacBook Pro. __

 __To elaborate, on a MBP Retina, you 'll find that the UI lags slightly if
typing fast, especially if a lot of syntax highlighting is happening on the
screen. It does not happen if you are using NetBeans on an external monitor.
The NetBeans team claims it's a Java issue, so in the end I just didn't want
to wait anymore, and I downloaded IntelliJ.

~~~
dr_zoidberg
Ehem... As far as I remember, IntelliJ is also programmed in Java, so about
that Java issue with Retina...

~~~
sgt
Agreed. Never bought the argument from the NetBeans guys.

------
agentgt
The only thing I don't like about IntelliJ vs Eclipse is unit testing. Because
Eclipse eagerly compiles everything with its special compiler it seems to have
a much faster startup time for unit tests. In fact with Eclipse I use JUnit as
a Java repl because you can test a single method. Also I hate how I can't
configure IntelliJ's gutter size. It feels massive. Other than that IntelliJ
is far superior.

As for dark theme and theming Intellij/Eclipse both have their quarks (Eclipse
being far more quirky).

Here is a screenshot of a personal port of the Atom One Dark theme (I love
that theme) to both IntelliJ and Eclipse (left and right respectively):
[http://imgur.com/Myo4KxM](http://imgur.com/Myo4KxM)

IntelliJ One Dark Theme:
[https://gist.github.com/agentgt/bf2271786c250e86ab19](https://gist.github.com/agentgt/bf2271786c250e86ab19)

Eclipse One Dark Theme:
[https://gist.github.com/agentgt/fcaf75eb8acf92e08926](https://gist.github.com/agentgt/fcaf75eb8acf92e08926)

~~~
papercrane
> Because Eclipse eagerly compiles everything with its special compiler it
> seems to have a much faster startup time for unit tests.

You can configure IntelliJ to behave similar, the option is disabled by
default. Its the "Make project automatically" option in the "Build, Execution,
Deployment -> Compiler" settings window.

Also, IntelliJ can use ejc if you like, the "Build, Execution, Deployment ->
Compiler -> Java Compiler" window, the "Use compiler:" option.

~~~
agentgt
I tried that before but its still faster in Eclipse by 3/4 of a second (I was
wrong about being just the compiler). Its as though Eclipse doesn't fork a new
Java process.

------
cromulent
...according to the marketing manager for the product ;)

~~~
andrey_cheptsov
With all respect, I don't I understand your point. FTR, I'm also a developer
in past and in present. If you have an argument in regard to actual points
shared in my article, please share it with others.

~~~
lmm
Reasons I prefer eclipse:

The git "commit and push" workflow is less ergonomic than eclipse's - you have
to wait for it to perform the commit and then ok another dialogue to do the
push, rather than just hitting "commit and push" and letting it happen in the
background.

There's no obvious way to search within a directory. I don't want to search
everywhere which is the only option I see in ctrl-A. I want to be able to
right click or similar on a directory in my project and search just in that
directory.

I can't tell how to reorganize the UI. In Eclipse I have the Window > Views
menu. In IntelliJ panels seem to appear and disappear arbitrarily as I invoke
particular actions and I have no idea what rules it follows or how to control
it. Edit: aha, there's a weird square in the very bottom left corner: having
clicked that the tabs for the panels have appeared which makes it much easier.

No save button means I can't tell the IDE when _not_ to try to compile. This
is important when working on complex code (particularly Scala) and I know
compiling it is going to take a few seconds of sluggishness.

The Scala presentation compiler (admittedly not really the subject of this
article) has too many spurious errors (most prominently one I reported as
SCL-9700).

Most importantly of all, continuous building simply isn't reliable enough. In
eclipse, if I've hit save I can tell when the build has finished, and if the
build has finished and there are no problems in the problems view then I am
100% confident that my code actually compiles. This simply isn't the case in
IntelliJ (e.g. after renaming a class it won't necessarily complete the
rebuild and so errors don't always show up until after you deliberately make).

~~~
ssmoot
> There's no obvious way to search within a directory.

On OSX at least: CMD+SHIFT+F brings up the Find dialog. Scope defaults to
Whole Project (ALT+H) but you can change it to Directory (ALT+O) which seems
to default to the directory of the currently selected file. (Or maybe Scope
actually defaults to the last one you used.)

I'm wondering what version of IDEA you tried that wasn't this way?

I don't run into compiler issues too often, but I also don't use shapeless or
scalaz so I wouldn't be surprised if more complex type signatures give IDEA
trouble. I have noticed a drastic improvement with the Scala support since
IDEA 13 or so.

~~~
jnem
I use JetBrains Webstorm, and on that hitting CMD+SHFT+F creates a search
local to the selected folder in the directory tree. Seems pretty intuitive to
me, but finding files themselves, as opposed to string constants and the like,
is actually the more difficult thing Ive yet to figure out.

~~~
lmm
Ctrl-Shift-N gets you an "open file" dialogue that does slightly fancy
filtering/searching (e.g. you can put a substring of the name and it'll find
it).

------
RyanHamilton
If you are looking for something lighter weight to run java snippets checkout
[http://jpad.io](http://jpad.io) I made it to avoid writing the usual
class/main boilerplate when all I wanted was to write a few lines of code to
explore something.

~~~
akerro
JPad looks like a IDE dedicated to learning new things in a programming
language. Eg. you want to try java9 feature without creating new project,
writing new class. Gonna try it today. Thanks.

------
scalesolved
I'm a long time user of Eclipse but recently have tried IntelliJ again, it's
got some really nice features such as the inline values while debugging but by
far the biggest annoyance is not being able to have multiple projects within a
workspace.

At work I mainly work on two APIs that work closely together so in Eclipse I
can have both open and just jump between the projects easily and at home I
like to have all my scratch pad projects/ideas in one eclipse workspace so I
can jump between them all easily.

I know there are kinda workarounds with modules but it doesn't really work
well, if they allowed the ability for multiple projects in a workspace I'd
jump ship but sadly it seems it'll never be supported (according to co-worker
who is a die hard IDEA fan).

~~~
jakejake
Same here. Not having multiple projects open is a total deal breaker for us.
We have a couple of shared libs that go with our projects and not being able
to have them all open together is painful.

~~~
manyxcxi
I work around this by either checking the core libraries out into my new
project folder, so ice got multiple copies around- and also I've got a core-
Luba project that's literally all 12 core libraries we have that I can have
open in one window with my other project open in another.

------
BFay
This may seem silly, but one of my main reasons for using IntelliJ over
Eclipse is because it has a nice looking dark theme. I've tried using the dark
theme on Eclipse, and on both Windows and OS X it had very bright scroll bars
that clash with the dark editor.

I think my favorite keyboard shortcut in IntelliJ is double-tapping shift to
get a really smart search to pop up.

~~~
austinsharp
I can't guarantee that I can reproduce it, but I have been able to get a nice
Eclipse dark theme that includes the scroll bars (on Windows).

I'm starting to use IntelliJ for other reasons though - double-shift is one of
my favorites as well.

------
brightball
IntelliJ and it's derivatives are excellent. I'm completely addicted to
RubyMine as well. Just the ability to jump to method declarations in a big
project has ruined me for any IDE that doesn't have it.

~~~
paulmd
I've used IntelliJ, ReSharper, and RubyMine, and all have been best-in-class
products.

The only thing I can complain about is that IntelliJ's Maven support is
atrocious. Maybe I'm missing something but I've played around quite a bit and
I just can't make it search Maven Central's catalog properly. I literally have
to drop back into Eclipse to add dependencies. It's OK given that you usually
set up your dependencies once and are OK for a while, but it's definitely out
of step with how perfect everything else is.

~~~
navait
At a startup I worked at, we had to switch back to eclipse from any IDE -
netbeans, IDEA, emacs, vim because eclipse is the only one that can really get
maven right.

The better question is, what is eclipse doing right that all the others can't?

~~~
andrewaylett
Whereas I really don't like Eclipse's requirement that you have an Eclipse
plugin for each Maven plugin you use -- I have found it much easier to work
with Maven projects using IDEA than with Eclipse, especially on a team where
not everyone wants to understand what's going on.

------
jkot
Other IDEs just dropped the ball. There is 13 years old pull request to enable
language support for languages such as Groovy or Scala:
[https://bugs.eclipse.org/bugs/show_bug.cgi?id=36939](https://bugs.eclipse.org/bugs/show_bug.cgi?id=36939)

You can fork Idea on Github and send pull requests...

~~~
vorg
For the last 3 months, Groovy has been officially known as "Apache Groovy".

------
ninjakeyboard
While my peers using emacs might disagree, I'd argue it's also by far the
friendliest scala development env as well. I've used the community and
ultimate edition for many years. CE is fine coupled w/ sbt for most anything
you want to do and promises to remain free.

~~~
allengeorge
Yes, Scala-wise I prefer it to Eclipse (Scala IDE) by a wide margin. That
said, my coworkers and I routinely experience Idea 'hangs' while working on
our Scala projects. That's something I never experienced while working on
large Java projects in Idea, and I'm curious whether it's because Scala (as a
language) is harder on the IDE, or whether the Scala plugin needs more love,
or...

Oh, and auto-import of SBT changes? Turn it off. Definitely turn it off.

~~~
estefan
> my coworkers and I routinely experience Idea 'hangs' while working on our
> Scala projects.

Same here. It sounds like my MBP is going to take off when it has to build
it's indices or whatever. Would be nice if it didn't cane my machine so much
but I guess it's all the type stuff and implicits, etc.

------
clay_to_n
Other things I love about IntelliJ (in my case, Android Studio):

Code generation. Getting a bunch of getters and setters from a right click is
nice sometimes. But more importantly is being able to go to a class
definition, do an Alt + Enter, and create a test file for that class in the
correct tests directory.

Auto-completion is very powerful. If you're trying to call a method on your
AbstractBeanFactoryImpl, you don't need to start by "Abstrac", if there are
other results with that preface. You can just try "abfi" and it will probably
get the right result. Super useful when you have multiple variables that start
with the same sequence of letters.

All the space-saving it does. Have a one line getter or setter? It will
display those as one line (with highlights to let you understand they're
actually three lines, brackets included). Even some common things like
creating a Runnable in Android and overriding it's Run method. Replaces three
lines with a straightforward: "Runnable myRunnable = () => {". Feels like
you're programming in a less verbose language.

------
onetimePete
IDEs are either swaggering monoliths, where all complexity has been hidden
away in a labyrinth of options- or a small basic set, that waits for you to be
turned into such a custom tailored to your taste monstrosity.

Sad thing is, really new interesting features are rare. There is no deep
learning IDE that watches you debug, and associates source code by changing
variable X fixed bug in file Z via time of change correlation and instruction
flow graph.

There is no real approach to layered responsibility. Meaning, a beginner
should be allowed to change functions, but not add classes and interfaces to
existing well structured code, without the author signing those "big" changes
off. This crucial "zoom out into algorithms and architecture" and drop back in
to display details- still often happen via external tools, as the IDE is not
able to abstract Information from the actual sourcecode away.

Finally - debugging and Unittests, these are actually highly automate-able
task- yet here im stepping it, even though by now at least conditions can be
attached to the various execution paths.

Finally, no ide has a "User" Simulation, to detect crappy requirement
engineering before the whole thing is gone into software. A proportioned team
of simulated "persons" and "use-situations", that gets to traverse a draft of
the gui and the workflow should detect hotspots and annoyances, and avoid a
lot of unnecessary & expensive itteration.

------
tokenizerrr
Can it show multiple projects in the same winfow yet? And I don't mean by
abusing the maven module set up, some of my projects use grails for example.

It's nice having my relevant Java, grails and php projects in one window,
which eclipse is quite good at. A way to get multiple maven and grails in the
same window is pretty much a must for me.

~~~
raptium
workspace in eclipse -> project in intellij ; project in eclipse -> module in
intellij

------
ddlatham
Does IntelliJ IDEA have an equivalent to Eclipse's Call Hierarchy view? It
allows me to select a method, and get a tree view of code paths that call into
it (recursively). I use it all the time and couldn't find it when trying to
help a co-worker who was using IDEA.

~~~
agentgt
I hate to say this but it takes 3 seconds to google this and find it on
Stackoverflow.

If your on Mac its Ctrl-Alt-H and if your looking for Eclipse find references
for intellij its Alt-F7. If your looking for mini outline mode (aka command-o
in Eclipse) its command-F12.

[https://www.jetbrains.com/idea/help/navigation-in-source-
cod...](https://www.jetbrains.com/idea/help/navigation-in-source-code.html)

------
ianamartin
I keep trying PyHarm and giving up. I've never been able to get it configured
well for the way I work. So I keep going back to SublimeText with with Python
IDE plugins.

Then I get frustrated with that workflow because it doesn't well working on
remote servers and go back to VIM. Which I also can't seem to get comfortably
configured.

So then I boot one of my macs into Windows for a while and use VS with Pyrhon
Tools and get frustrated with Windows, and well . . . .

Sorry, I know this isn't about Python. I've just never found that jet brains
products work well for me. I feel like I'm fighting with them. Maybe it's time
to give it another shot.

~~~
pauleveritt
Disclaimer: I'm the PyCharm Developer Evangelist. That said, I'd be interested
to hear what stuff from ST you couldn't get going the way you'd like in
PyCharm. In fact, I just wrote draft docs talking about migrating from text
editors.

Also, if it helps, we just did a Getting Started nine-part series of
screencasts, available on YouTube. Of course, if the part that isn't working
for you doesn't get mentioned, then I need to add to the series.

~~~
ianamartin
I don't want to further derail this thread, but I'm happy to,take this
conversation to email if you would like. Address is in my profile.

------
alblue
Can we fix the title to be that of the actual post? The real title has nothing
to do with 'friendly' nor are many hailing it.

The title should be "Enjoying Java and Being More Productive with IntelliJ
IDEA" as per the original post.

------
jonesb6
Also has a great Golang plug-in

------
farawayea
We've evaluated it and it was the best we could have bought. We've decided not
to use it because they didn't provide perpetual licensing.

~~~
fluxquanta
[https://sales.jetbrains.com/hc/en-
gb/articles/207240845-What...](https://sales.jetbrains.com/hc/en-
gb/articles/207240845-What-is-perpetual-fallback-license-)

~~~
true_religion
I don't know why they didn't make it more obvious. The aparant Adobe like
subscription model almost scared me off too.

------
Jetbrains
Does anyone know where IDEA stores its build scripts? They don't seem to use
gradle/ant/maven by default.

Specifically Java2EE/Web?

------
brudgers
Title: Enjoying Java and Being More Productive with IntelliJ IDEA

------
rpgmaker
> Why IntelliJ IDEA is hailed as the most friendly Java IDE

To be fair, most Java IDEs suck. Eclipse's usability is the worst I've seen in
any IDE and, surprisingly, one of the most popular.

------
thoughtsimple
Nice ad

~~~
andrey_cheptsov
I've written this article with one simple idea in mind – give for reading to
everyone asking me to explain how IntelliJ IDEA is compared to other IDEs.
Just now I've also realized that I can use it to explain what we're doing at
JetBrains.

~~~
farawayea
What you're doing is charge people as much as possible by not giving the
option of perpetual licensing. That's what you're doing.

~~~
organsnyder
Not true: [https://sales.jetbrains.com/hc/en-
gb/articles/207240845-What...](https://sales.jetbrains.com/hc/en-
gb/articles/207240845-What-is-perpetual-fallback-license-)

------
jdimov10
IntelliJ is also the only Python IDE that I am not allergic to. I normally
just VIM, but when I am forced to use an IDE (e.g. pairing), I use IntelliJ.

(Curiously, I've found IntelliJ to be actually better for Python development
than the Python-specific offering from the same company - PyCharm)

~~~
vosper
What's better about developing Python in IntelliJ versus PyCharm?

~~~
piquadrat
The Python plugin for IntelliJ is virtually the same as PyCharm. The plugin
sometimes lags a bit behind the PyCharm version, while PyCharm sometimes lags
a bit behind the IntelliJ IDE version, but in general, it's the same.

Of course, you get support for lots of other languages in IntelliJ that aren't
available in PyCharm.

