Hacker News new | past | comments | ask | show | jobs | submit login
IntelliJ IDEA 12 Wins Jolt Award for Coding Tools 2013 (jetbrains.com)
135 points by rdemmer on Feb 11, 2013 | hide | past | favorite | 99 comments



Well deserved. I've been using IntelliJ IDEA (Java) for the past four years. Before that, I used Emacs coding C++. I was pretty amazed at how much more productive I became using an IDE (just for the mechanics of coding, like auto-completion, jump to suource etc - not counting any differences between C++ and Java). I still like Emacs a lot, but using a good IDE just took coding to the next level. More details: http://henrikwarne.com/2012/06/17/programmer-productivity-em...


Same here, but a vim guy. "Jump to source" alone makes an IDE worthwhile, and it still surprises me to this day that people eschew IDEs because of 'bloat', and instead prefer adding dozens of brittle extensions to vim/emacs/sublime/whatever to make up for what's missing.

I understand speed - I use vim for quick edits/changes - but simply being able to jump to the source of a function you're looking at is huge (yes I know about ctags for vim - doesn't even feel like it comes close).

EDIT: One of the other huge benefits of IDEs in general is working with and studying code that you didn't write yourself. All the sublime and textmate fans I know are almost always just writing their own code from scratch, or using a small subset of well-known plugins for popular framework X. Taking code written by someone you didn't know, who perhaps didn't even know language foo very well, is a pain that is lessened somewhat by using a capable IDE vs a plain text editor.


Depending on the language used Emacs and Vim provide these features as well and not just as dozens of brittle extensions.

Emacs + Slime for Common Lisp programming is often held up as an example of this. It provides all the features you mentioned + more. Slime (or rather Swank and alternatives that have been made) has been used for other languages as well: Clojure, JavaScript, Haskell, Ruby, R.

If you work in more than one language then Emacs and Vim quickly start to look enticing since most IDEs either don't support them or don't support them well.

That said, I have no opinion on IntelliJ. I have never used it, but it sure sounds like I should try it out sometime. The last IDE I used was XCode one year ago and Eclipse a couple of years ago and they didn't make me very happy.

edit: My point is, people often hold up both Emacs and Vim as "just text editors" but coupled with a Unix environment and the right programming languages (not Java) they provide a lot of features that IDEs do. Besides that one can use these editors for a lot of other editing tasks like writing manuscripts, e-mail, blogs, etc. giving you the same powerful editing functionality for those tasks.


>Depending on the language used Emacs and Vim provide these features as well and not just as dozens of brittle extensions.

People saying this have never really spend much time with a modern IDE.

It's like having Vim newbies saying it's too difficult and they prefer Pico, only in this case it's the IDE that's the more advanced.


Ok, tell me which modern IDE I should spent some time with. Is IntelliJ IDEA mentioned here good enough?

I'm working on a personal project in my spare time which I can use it on. (Except the project is using Common Lisp so it might not be a good match.)

I forgot to mention in my original post that I've also spent time with Unity3D recently although for some reason I didn't think of it when thinking of IDEs I had used in the past.


I use emacs and intellij a lot. Let's compare them based on ruby, which they both "support". Out of the box RubyMine (intellij's ruby IDE) works extremely well, especially if you're doing rails projects. Again, this is out of the box with no work on my part.

Emacs out of the box (install ruby-mode) is not even close to RubyMine. Now, if I spend many hours, and I value my time a great deal, I can get emacs kinda close to the features of intellij.

Frankly, I'd rather pay $60/year than spend many hours trying to get emacs close to as good as RubyMine.


IntelliJ IDEA is very good for Java, and good also for other JVM languages. But how good it is depends, both on the effort put in by the IDE developers and characteristics of the programming language in question (how well operations in the IDE are supported by the typing characteristics of the language etc)

When in Java, there is a mishmash of supporting file types, and it integrates them very well compared to its competitors - jump between .java, .jsp, various .xml for Spring, Hibernate, tag libs, etc etc. If you are "just" programming in a programming language (which is a lost utopia in for J*EE developers), much of this functionality is not of much benefit to you, but you might still find the IDE valuable.


>Ok, tell me which modern IDE I should spent some time with. Is IntelliJ IDEA mentioned here good enough?

Yes, it's quite good. Visual Studio is also very good in some aspects. And you can also get a lot of mileage out of Eclipse. Also try some Smalltalk environment, you'd be surprised.

The thing is, there are things missing from Vim/Emacs that are not easily added as ad-hoc plugins. Not merely this or that feature: what is mostly missing is a coherence in supporting a specific language.


Visual Studio is also very good in some aspects

And once you get ReSharper, also from JetBrains, Visual Studio becomes quite good, too :)


Anyone I know that has ever used ReSharper will struggle to work without it. ReSharper is one of the best tools I've ever used, and it makes writing C# a joy.


I was a big netbeans fan for a couple years precisely because it supported multiple languages decently. I've done some work in Eclipse (raw Eclipse, Aptana and Zend Studio), but tend to prefer Jetbrains products for most situations. Doing Grails work, Intellij was the best purchase I ever made - it saved me countless hours in tracing through and learning code I didn't write.


So, basically to take advantage of Emacs/Vi you need to just restrict yourself to Lisp?

I would hands down pick the right language for a project and then the editor.

(I am actually a Vi guy, but switch to an IDE for any project that involves more than just me)


No, Lisp was just an example.


The "bloat" argument has been pretty weak for the last 4 or 5 years now. I can run IDEA, Eclipse and a bunch of other tools in parallel with large sizable code bases and my laptop with 8GB of RAM barely slows down. It all runs even better on beefier desktops. If it were to start slowing down I would just add some more RAM which is cheap as anything these days,

I used to adore Emacs in college, but since I've actually had to work on large projects I would never switch back to using except for when I need to bang out a python or shell script.


I'm a bit confused about "Jump to source" being such a big deal for a vim user. What exactly is wrong with tags or cscope ? No I'm not being facetious, I really want to know what extra functionality you get with your IDE that you were not getting with proper use of tags/cscope ?

I've used various versions of emacs over the years for most of my programming (mostly C/C++ with some sprinkling of python and java). I've recently had to use Eclipse for Android dev. I agree that it'd be almost impossible to integrate the entire GUI dev framework of Eclipse Android environment in emacs (not to mention continuous compiles and other java-firic features) and that's the reason I use Eclipse for Android. But "Jump to Source" ? Emacs is a far better and faster experience for me when it comes to trolling around in big, unfamiliar code-bases. The small subtle lags with eclipse (it's not as bad now with my monster new dev machine with 16G of ram) still irritate me. And the Emacs keybindings are almost there but not quite.. which is another big reason I've resisted IDE's. They're just slower for actual editing of code. Always. Without fail.


I haven't used cscope. Perhaps it's amazing, but the home page suggests that it works for C++ only because it's a bit slack about its parsing of C. So I'm guessing not.

Regarding ctags, it's useful enough, but it doesn't do a great job of things like jumping to the definition of the "flags" part of "p->flags", if you've got lots of structs that have a "flags" in them. Same goes for member functions. It's absolutely no fun trying to find out what something is, and just getting a list of every single thing of that name in your program. Thanks ctags... but I actually know how to use grep. And if I used grep, I'd get a callers list too.

I found ctags workable, but overall disappointing.


the home page suggests that it works for C++...

Are you referring to this line:

"The fuzzy parser supports C, but is flexible enough to be useful for C++ and Java"

I think you might be misinterpreting the wording there. It's called "c"scope because it was initially written for C and C only. The line above is suggesting that it also has support for C++ and Java (because it has a "fuzzy" parser... whatever that means).


Clang should change this pretty soon. They make code analyses much easier (they let you use their parsed data) and enable things like code highlighting, code completion and jump to declaration. A good use of this for vim is YouCompleteMe (https://github.com/Valloric/YouCompleteMe).


Yes. Expect an entire cohort of people who previously scoffed at the value of such things to start embracing it with both hands! (And rightly so, because this stuff is just super useful, and it can be done so much better then ctags, or, god help us more, grep.)

May clang cause people to expect more from their tools.


I'm sure you've seen it, but just to be sure - there's an IntelliJ plugin that gives you vim key bindings: http://plugins.jetbrains.com/plugin/?id=164


It's a good effort, but suffers from the usual problems of replicating Vim, ie lots of subtle changes and lots of missing functionality. Both of which wreak havoc with one's muscle memory.

Also, I found it really slowed things down (in RubyMine), sometimes updating just 1-2 characters a second in a big project (on a modern MBP).

I've gone back and forth, but generally I prefer Vim with Janus distro, albeit I miss a lot of cool things from IDEA.


Define Modern.

I just upgraded from a "modern" macbook pro (2008, aftermarket SSD) to a "modern" retina macbook pro that is maxed out. IntelliJ and RubyMine fly like the wind on this new machine. The old one was painful to use IntelliJ but you could live with RubyMine performance.


Highest-spec 2011 with SSD. RubyMine was okay, but RubyMine+IntelliVim on a large file would often be painfully slow.


The major pain point with that plugin for me is the fact that you can't remap jj to escape in insert mode. Multi character codes will wait until a chord is found type of approach instead of a timeout one.


have seen it, but when I'm in intellij, I'm in intellij. when in vim, i'm in vim - my brain shifts enough where I don't really need the vim bindings.


> it still surprises me to this day that people eschew IDEs because of 'bloat'

They've found a good tool, emacs or vim, and want to use it everywhere. They've invested time and effort into being productive with it. Moving to an IDE requires time and effort as well. IntelliJ and the family are deceptively simple. You can start editing right away, but to enjoy the full power, you need to learn it. Just like vim or emacs.


one reason i really love Visual Studio is VsVim[1], which is the best Vim emulation I've seen in any IDE. i don't have to choose between convenience and superspeed like i used to in the past... that was really annoying

[1] http://visualstudiogallery.msdn.microsoft.com/59ca71b3-a4a3-...


Almost all popular IDEs are extremely slow. Intellij is unusable on my 8 core 8 GB ram laptop.


I can tell you that that's not normal. Have you ever got in touch with support?


I've just upgraded to Pycharm 2.7, it's a lot better. It also looks a lot less horrible.

However, there is still an unacceptable delay between typing and feedback, around 300ms.

Performance was clearly not a priority for them.


definitions of 'unusable' vary greatly. 16gb 2ghz quadcore 2011 mbp with 256g SSD and intellij is usable about 95% of the time - I get slow downs and hangs, but their OS-level stuff - I get the same stuff hangs in macvim, textwrangler, eclipse, pixelfari and other apps.


Unusable as it very often freezes for about 5-60secs. Only IDEs written in Java appear to suffer from this, and that's most of them.

I want a good IDE, but none of them are good.


Have you tried editing the the bin/idea.exe.vmoptions file to set -Xmx higher?


IDEA is an incredible development environment. I still use Emacs for some things (e.g. Perl). The Live Edit plugin is really slick (same as http://LiveReload.com for Sublime users)

http://blog.jetbrains.com/webide/2012/08/liveedit-plugin-fea...

I think Emacs will get a big resurgence if they ever get a better Lisp (aka Guile) integrated so they can get better performance. After all, Emacs is just a big Lisp interpreter. In theory, Emacs can do anything.


I used IntelliJ IDEA (Java) for the past 10 years or so (since IntelliJ IDEA version 4). I was pretty amazed at how much more productive I became using Emacs to do Clojure development (fast iteration cycles, instant REPL, paredit, hs-minor-mode, etc.).

Using an IDE took your coding to a next level just as design patterns took your coding to a next level because, by using Java (or C#), you need to automate and repeat tasks that should never have been mandatory to repeat in the first place.

To me nothing beats a programmable "text editor".

I don't doubt you consider yourself "productive". However Rich Hickey created Clojure using Emacs and then, using Clojure, he created Datomic. That's certainly something I'd call productive. So there's not one true way or true light to see to "take coding to next level".

It's good for you if you like your Java/C+ + ORM ([N]Hibernate) + XML + SQL hell. I don't like that particular hell which I know all too well and, thankfully, many programmers don't like either and are, productively, creating a better world for us programmers.

I still did buy IntelliJ IDEA version 12 during their doosmday promotion because at 55 Euros or so I figured out it was going to be handy the day I'll be forced to work on some pathetic Java / Hibernate / XML / SQL hell codebase but, thankfully, I still didn't need to install it (it's only two months but still...).

Meanwhile Emacs / elisp / Clojure are getting their daily dose of love.

Your Mileage May Vary but I honestly think you don't realize that most of the tasks IntelliJ allows you to automate are tasks which shouldn't exist in the first place.

P.S: it's possible to configure vi(m) and Emacs using eclim / emacs-eclim so that you can use, right from vim/emacs many of the features of Eclipse (like auto-completion). This is something with may see more in the future and that we may see working with IntelliJ too.


>I don't doubt you consider yourself "productive". However Rich Hickey created Clojure using Emacs and then, using Clojure, he created Datomic. That's certainly something I'd call productive..

So I guess the information below will rock your world and change your editor of preference:

"I developed Clojure in IntelliJ and still do (the Java part)."

http://markmail.org/message/pon2e77mdtkath26


My only regret is that I could only up vote you +1

IntelliJ is a productive tool, and it is interesting that Rich sometimes uses it. BTW, I do about75% of my Clojure development work in IntelliJ and about 25% with Emacs and nRepl. I find IntelliJ just a little more productive, but both are great working environments.


This is just about my mix for Scala. I have keybindings in Intellij fairly close to what I use in Emacs, and both will update when files are edited. I drop into Emacs when I have heavy editing, need to bounce around multiple buffers, or trying things out in the REPL.

I also work in a number of non-JVM languages in Emacs, and have used it for quite a long time. For JVM work, IntelliJ is, as you say, 'a little more productive'.


You seem to jump to a lot of conclusions. My set-up for Java is pretty light-weight: nothing is generated for me by IntelliJ (except for if I use any of the refactoring tools). We have our own tools for generating ORM code, but that would be the same regardless of editor/IDE.

There are pros and cons with Java, but if that's what the application is written in, then I'd much rather use IntelliJ than Emacs/Vim. The reason is that a lot of the coding is navigating the code base - finding out what the arguments of a method are, or finding out all the usages of a class/method/variable. This is much quicker in IntelliJ than in a generic editor.

Another argument I hear a lot against IDEs in general (although not from you) is that they force you to click the menues a lot. Not true. There are great built-in keyboard short-cuts, and of course you can create your own, so there is not a lot of reasons to touch the mouse.


I'm a Lisp programmer, so maybe the navigation experience is different for Java - but the navigation experience in Emacs is just great for me. Emacs is not the generic editor, but reprogrammed with special modes (for Common Lisp this is SLIME) to provide all this information: arguments, who calls / uses, etc. Emacs connects to a running Common Lisp and provides live queries into the software under development. That's pretty cool.


A question because I find this amusing. You are a "Commons Lisp" programmer? Working where? On hobby projects?

I understand that there ARE Common Lisp jobs, but those are few and far between compared to more established languages.

So, what exactly do you do with Common Lisp?


I've listed (at Stackoverflow) the IntelliJ keyboard short-cuts I use the most: http://stackoverflow.com/questions/294167/what-are-the-most-...


FWIW, I know that Rich Hickey has IntelliJ on his machine, probably for Java stuff.

Edit: A post by him http://markmail.org/message/pon2e77mdtkath26


I've bought PyCharm and WebStorm recently when they sold it for 75% off last year and i must say i am extremely well pleased. Up until today i would've thought SublimeText2 is enough, but PyCharm just kicks ass, with its vagrant/debugging/ssh/sftp/intellisense/unittests/sphinx integration.

Thanks Jetbrains, for a great IDE!


Damn, I guess I missed the discount, but it doesn't bother me much at all. I've used eclipse, netbeans, visual studio, and I'm sure a few others. In my opinion, a good IDE doesn't get in your way and makes life easier when you need it. I started using intellij at work and found it to be a breath of fresh air and in such compliance with my previously stated definition that I, for the first time ever, personally paid for IDE software (PyCharm). The only thing that comes close is VS and that's only when working on dot net stuff. They have 30 day trials and I suggest you give them a shot. It'll make whatever you're currently using feel like it's from 20 years ago.


Exactly, it doesn't have to get in your way and that is what PyCharm is doing. Interestingly, after buying i had the need for some easy python debugging and was surprised how well it works, even "remotely" on a vagrant machine. The vagrant and remote deployment/debugging integration is probably the feature i love most. Oh.. and the virtualenv/pip integration. ;)

p.s.: the discount (of all jetbrains products!) was around december 21st.


Hindsight is 20/20, but when you by IDEA Ultimate, you get all the other derivatives as plugins to IDEA (I have the Python, Ruby, and PHP plugins which is the same as having PyCharm, RubyMine, and PHPStorm).

I almost did the same thing you did during the sale but one of my friends let me know about the plugins, which they could do a better job of talking about.

Can't go wrong with this great software either way though.


In hindsight i was wondering exactly that. Would i really get a 100% PyCharm when i buy the IntelliJ IDE!? That would make me buy IntelliJ on the next discount opportunity ;)


The plugin can sometimes take a while to catch up to the latest in PyCharm, and with PyCharm you get an experience tailored to the language. (Download the trials for both and check out the differences).


Since i practically never write Java, i'll just stick with PyCharm then.


Very well deserved!

My primary Java IDE had been NetBeans for years, mostly because the rough edges in Eclipse outweighed the extra functionality.

Recently I've been doing some Android programming, and found the native lib support in nbandroid to be suboptimal at best.

Idea works swimmingly in the same situation, and Eclipse well enough, so my options were to muddle along with manual build system changes in NB, add necessary functionality to NBAndroid, or switch.

Since I spend a huge chunk of my time coding C (NB's C support is actually quite nice), I've been giving Eclipse a go. It's come along rather well, I must say.

That said, if Idea were to add official C & C++ support, I'd be on it like white on rice. I very much prefer to use one primary tool, minimizing switching back and forth, so using Idea for some languages & platforms and NB or Eclipse for others just isn't palatable. Idea is almost good enough to make me consider a two IDE world, though (this from a "vim unless I'm doing Java" guy, up until a few months ago).

Sadly, I've run into an aspect of CDT that might be enough to push me back to NetBeans, even if it means doing some additional work. It seems that CDT language aware search (such as "find references") takes pre-processor directives into account.

So, when searching for, say, a function name (or worse, doing a "rename" refactoring), I'll only find a subset of occurrences, depending upon what symbols I have defined for a given build configuration. For personal code, that may not be an issue, as I tend to eschew ifdefs in favor of using different implementation files resolved by platform specific make targets.

However, the main code bases I work with daily are littered with #ifdef WIN32 and #ifdef TRACE_ON and such.


I've used Emacs, Vim, Eclipse, Visual Slickedit, Sublime Text 2, and JetBrains' IDEs. For C++, Slickedit is king, followed closely by Eclipse, but soon I think AppCode will give them both a run for their money. For all other mainstream languages JetBrains' products win hands down. For the rest either Emacs, Vim, or ST2 will do.

The difference between using a real IDE and an editor with hacked IDE extensions is like the difference between hunting with a rifle and hunting with a bow and arrow. If you're skilled enough, both will work. If you're set in your ways you may prefer the bow, and the bow offers a more primal experience and requires more dedication. The bow is certainly more badass. But the rifle just boosts your productivity immensely.

The one downside of IDEs is that they can encourage a bit of sloppiness. The tool automates so much you want it to automate it all, but there is still no substitute for a good working memory and careful study and thought.


Jetbrains rocks, and I don't even own any stock. I've been out of the Java world for a few years, but when I was a young padawan I wanted to use IntelliJ at an investment bank but they wouldn't pay for it since Eclipse was available. Now I know it'd have been worth the productivity boost to pay for a license myself, because I currently use both RubyMine and TextMate at work, but I find that RubyMine helps me get more done and I can find my way around large projects more easily. RubyMine 5 was just released and it's fast, and it's also kind of cute when it points out that a line of code doesn't look like the Ruby style guide. :)

FWIW, I just discovered VIM Adventures a week or so ago, and I'm planning to try to give it a chance to win me over:

http://vim-adventures.com/


I'd like to hear someone's comparison of IntelliJ and Eclipse. I've used both, but because most books and online tutorials on Java revolve around Eclipse (even Google recommends it for Android development), it's my primary IDE and feel quite locked into it. NetBeans comes second because this is the only other IDE I often see in other resources.

My only experience with IntelliJ is with a job I quit within a month because they were using some boring proprietary Java framework that has almost no documentation. I have no qualms about IntelliJ, I think it's pretty, looks a lot like NetBeans, but I don't think I've fully maximized its features (heck, I can only say it's pretty). I also hear a lot of people say that IntelliJ is the best IDE for Java. What makes it so much better than Eclipse, and maybe even NetBeans?


I've used both professionally, for years.

Eclipse has historically suffered from a couple of major problems, in my opinion:

1. It's "Eclipse is a framework, and the Java IDE is just an implementation" mentality made the user experience terrible. Everything was a perspective, with it's own configuration. I remember distinctly trying to set the editor to use four spaces instead of tabs. I had to do this once for every file type (xml, javascript, html, java, css, etc.) Commands would suddenly be disabled because you were looking at a file in a different perspective. In all fairness, the usability of Eclipse is getting better, but this, to me, is still Eclipse's major weakness.

2. Their JavaScript (and other language support) was terrible. (Note: It's first-class now. But it took a very long time to get to this point.) For those of us who did a lot of front-end work, this was a major shortcoming.

Overall, Eclipse has gotten much better, and there are some plugins that just might make it your editor of choice. IntelliJ is still my choice, though.


When I switched from Eclipse to IntelliJ about 2 years ago the thing that most impressed me was that every part of IntelliJ feels fully integrated with the IDE.

For Eclipse, you had to rely on 3rd party developers for plugins for things like Hibernate or Spring integration; and the amount of integration with the IDE itself was usually hit-or-miss. Different plugins would have different UIs or different ways of doing things.

I've found that in IntelliJ, these types of things are first-class features instead - the Spring and Hibernate support (for instance) is built into the IDE by JetBrains. Things like "find usages of bean" can be invoked with the same keystrokes as "find usage of class". The editor can jump from the Java class editor to where the class is defined in your Spring context just as easily.


I've used Eclipse for about 6 years for Java development before switching jobs and switching to IntelliJ. If there is one important difference it is this: It's fast. Eclipse can take up to a second or so to generate auto completion recommendations. In IntelliJ, you hardly even notice it it is so fast. This allows the IDE to get out of your way and leave your thinking uninterrupted which is often one of the main benefits touted by vim or emacs users.

I would say try IntelliJ for a month. That will give you time to alter some of the strange default settings (like being able to put the cursor past the end of the line) and discover some of the many other powerful features (like clever renaming of getters/setters when renaming a field). But I still believe it is the speed that sets IntelliJ apart from any other IDE out there and will be the ultimate reason for your improved productivity.


IntelliJ is more reliable and better integrated; eclipse has more features but needs more attention. I don't think IntelliJ has anything that eclipse lacks per se, but it's much more likely to "just work" and get out of your way.

(personally I use eclipse and take the time to babysit it because I can't live without proper incremental compilation)


It seems like there are lots of little things that are preferable. A few random ones off the top of my head:

In my last job where we used Eclipse, we'd get a maven project and then run mvn eclipse:eclipse to generate the eclipse project. In IntelliJ, you can just open an existing maven project by selecting the pom.

Maven auto-update is also nice (if you do a mvn clean install, your project will automatically update accordingly).

In eclipse, if you debugged into an external library, you'd have the option of attaching the source; then you'd have to go find the right jar to add. In intellij, you can just click "download sources" and it usually does the right thing.

In general, I had a fair amount of difficulty setting up projects and getting them to run correctly under eclipse -- but that may be more of a reflection of how our projects were configured. Things seem smoother under IntelliJ.


Eclipse has a proper incremental compiler, which will tell you what's wrong with your code as you type and refactor. IntelliJ has historically not had one, and the introduction of the 'compile as you go' feature in IntelliJ 12 just doesn't hold a candle to the Eclipse one in complex workspaces.

Source: 5 years with Eclipse, and 6 months using IntelliJ 11/12 now.


I'm not Eclipse user neither IntelliJ. I tried IntelliJ after looking at this post. First impression, InteliJ interface is lot better and cleaner than Eclipse. Eclipse interface (or skin) looks ugly and takes lot of space with its big toolbar buttons and rounded tabs. Also I noticed that IntelliJ shows shortcuts while hovering over things (like completion, docks etc...) nicely, which is pretty cool.

Rest I can't comment on how good they are with enhancing your productivity, as I never used them.


I think IntelliJ is definitely better than Eclipse - feature wise.

However, it is really hard to beat free. I think the numbers show that 7 of 8 Java developers use Eclipse. This also means that third party providers are more likely to build on top of Eclipse.

The fact that IntelliJ has built a large user base only goes to show how good a product they are.

Yeah, IntelliJ has recently launched an open source version... But I am a little reluctant to use it given the strong Ecosystem around Eclipse.

(Disclaimer: I build plugins for Eclipse)


To answer your Android development concern specifically, as I didn't see anyone else commenting on it yet:

Having done Android work in both Eclipse and IntelliJ, I much prefer the latter. It has nice tools out-of-the-box for every aspect of Android development; package signing (and keystore management), integrated logcat monitor (a bit simpler than Eclipse's), the on-device or emulator debugging works perfectly etc. I've never had a problem translating Eclipse tutorials to IntelliJ.

It's also a lot less buggy than Eclipse+ADT in my experience. Eclipse/ADT is terrible when it comes to larger Android projects that may reference other projects in your workspace, I frequently had to do a clean build to get it to detect changes across the projects (a known problem in the ADT bugtracker IIRC).

IntelliJ is also faster, has better code completion, and a really nice dark UI theme called Darcula out of the box (trying to make Eclipse dark is near impossible). It's paid for its price many times over in productivity gains for me.


I'd like to caution you against deciding on Eclipse solely because of online tutorials and Google recommendation. For one, Eclipse is free, so it has a very low barrier to entry. If you were going to start Java tomorrow, I'd tell you to use Eclipse or Netbeans as well, even though I own IntelliJ.

Can't give you a comparison because I use it infrequently, and I use IntelliJ for Ruby. It's a lot more polished than Aptana Studios' Ruby integration, which is basically Eclipse.


IntelliJ's @Nullable annotations are a decent workaround to my biggest complaint about Java. (Java has a static type system that intentionally doesn't catch the most common type error.)

On the NetBeans subject: does NetBeans have much traction outside of Sun/Oracle? It's been a while since I've done any Java development, but back in 2005, it seemed that pretty much only the official Java tutorials used NetBeans.


Netbeans started getting some major traction around the 2005 - 2007 timeframe, but seems to have lost ground since the Oracle takeover. Limited support for Ruby/JRuby and virtually non-existent Scala support caused me to ditch it after many years of use.


1.Intellij Idea is faster , you could try searching for the same project. 2.Intellij Idea is way more Intelligent than Eclipse. try jsp/javascript/java editing by urself, and you will be surprised 3.Built in support for a lot of popular Frameworks and Version Control Systems.


Eclipse's interface is clunky (switch between debug and code), debugger is buggy and is generally slow.


I've been using Sublime Text 2 for the past year or so, but I recently picked up a copy of PhpStorm (by the same company) during their last 75% sale.

I've been using that ever since and almost never use ST2 anymore (I really miss multiple-cursors, so I still use it for that).

PhpStorm gives me so much more information about the code, such as validating types (based on type hinting), showing warnings when the wrong type is used, automatically updates DocBlocks with correct information, allows very fast jumping to the source code of a function call, quickly find all references to a specific function or class, intelligent popup of callable functions on an object (again, using Type Hinting to know the object's type).

It's really been a huge difference. Yes, there are some weird things to get used to (default OS X keymap uses a lot of non-standard keys), but overall it's pretty damn useful.


I converted from many years' of using xemacs to pycharm (which is really a subset of the full if Intellij IDEA) and I'm mostly happy. When I started with xemacs in 2000 or so I made a few minor modes and tweaks but with years things started breaking mysteriously; xemacs was also mostly abandoned compared to GNU emacs but many of my settings were not compatible.

Pycharm gave me overall a better out of the box experience, though at a heavy resource cost (I have 3 branches of my project open and use 1 GB of memory). I've paid maybe 150 EUR to JetBrains for that, but there simply isn't anyone that I could pay 150 EUR to to get a similar experience with emacs.

I'm happy to pay JetBrains even more in yearly renewal costs to make the editor even better.


I don't use IDEA but Jetbrains does make amazing tools. I couldn't survive without Resharper.


I have never used IDEA, but if it is even a fraction as good as ReSharper then it is still amazing. After being introduced to it I feel so handicapped without it when using plain Visual Studio.


IntelliJ is pretty awesome, and works great for Android development too in case anyone hasn't tried it yet. It's a pity its vim emulator (IdeaVim) is pretty bad compared to the other Java IDEs.


Hmm... I like IdeaVIM (though I don't use any particularly complicated VIM commands). How does IdeaVIM lack?


For me the advantage of Emacs over a set of IDEs is its ability to support multiple languages very well within a single unified environment. In a typical day I'm writing Common Lisp, C++, XML, XSLT, shell scripts, documentation. The only time I'm not working in Emacs is when I switch to Eclipse for the odd Java project, because that's what everyone else uses in my department.

Have a I spent a lot of time customizing my environment? Absolutely. But it fits me like a well oiled leather glove and makes me incredibly productive. I don't need to learn separate environments for Lisp, C++, XML...

A lot of this is personal preference and familiarity. When I sit down with Visual Studio or XCode I'm completely lost and feel like I'm wearing shackles.


I love a good IDE (RubyMines, for example), and in general a well-engineered IDE designed from the ground up for your language and development stack is going to be superior to emacs or vim.

However, I'd feel crippled overall as a developer if I didn't know one of those two (vim in my case). For one thing, a lot of the best IDEs are not free and some are very pricey. I'm not going to go out on a huge spending spree buying a bunch of IDEs just for little experiments I want to do in my spare time. More importantly, though, it is quite often at work that I need to edit code in a variety of languages, and it is simply more productive to be able to edit the code in one editor rather than having to fire up multiple IDEs. Not to mention the need to occasionally make quick edits from within a terminal.

Using vim frequently also keeps me up to speed on terminal commands for lots of modern tools. When I was in college I used IDEs almost exclusively, and whenever I found myself needing to do something from the terminal, my God it sucked. I was crippled. Now I feel more like a jack of all trades who can be productive in mostly any environment.


IntelliJ supports multiple languages, primary reason I use it


Jolt was such a big phenomenon in the '90s. Do developers consume less caffeine now or maybe Red Bull cut their lunch? (It's a bit hard to gauge the trend from outside the US, as Jolt is particularly US-focused afaict.)

Anyway, IDEA is always putting developer experience first, so it's well-deserved.


I use it everyday! Well deserved!


Intellij makes java much easier to bear for me. The one thing I miss is a single key combination to select a line and then select subsequent lines when pressed again (like cmd-L in Sublime). The intellij alternatives seem awkward to me.


Syntax aware selection (Ctrl-W) doesn't work for you? I know it's not exactly what you ask for, but I think it's great. It successively selects a bigger and bigger block of code. According to Productivity Guide, it's the feature I use the most in IntelliJ (by a wide margin).


Yeah, I use that and I agree that it's useful. I just want a simpler way to select successive lines.


what's wrong with [Home] [Shift] [Down] [Down] [Down]? (2+n) keystrokes for (n) lines selected is hard to beat

And the skill is transferable to MS Word/Sublime/Google Docs/Notepad/Eclipse/VS/any-other-text-input-everywhere-ever!


a) Not all keyboards have Home/End keys (macbooks for example).

b) Even then, I find it more error prone to reach over for the Home key, hit shift, etc...

c) 2+n is still 1 more than 1+n ([Ctrl] [l] [l] [l]). ;)

It's admittedly a minor thing; I just got really comfortable with Ctrl-l in Sublime. I should probably just get over it.


> a) Not all keyboards have Home/End keys (macbooks for example).

Macbooks all support fn + arrows to do page up/down, home and end.

  fn + left = home
  fn + end = end
  fn + up = page up
  fn + down = page down
It seems annoying at first to not have a dedicated key, but after a week my muscle memory started working and I've never noticed it again.


There is an editor action to select a line (Select line at caret) in the keymap that doesn't have a default shortcut, but you can define it and use it instead of the first Home+Shift+down. Then you can extend the selection with Shift+down.


Hmm... I've actually tried this but Shift+down unselects the initial selection. However, selecting a single line is still often pretty useful. I'll mess around some more with the keymappings to see if I can work something out.


You just seriously rocked my world. I had NO idea that feature existed.


Keep in mind adding Shift to the keyboard combination reverses the selection.

Edit: Reverses, in it selects smaller portions of text, again, based on syntax.


Anyone else find themselves trying to use Ctrl-w in other contexts? Always disappointing when it doesn't work!


It was hard to adapt after using eclipse for years, but i did not regret it.


I got this during the "end of the world" sale last year and I love it. Well deserved. I'm hoping this will be the closest thing we'll get to Visual Studio for Java.


I just scrolled through the comments and they are almost universally positive.

Are any of you running it on 64 bit linux and if so - have you found a way to fix the way fonts look?


Hi,

I do when I browse Java and Scala code.

I'm not sure what problem you mean, but I have to run `wmname LG3D` before running idea, otherwise the fonts are not displayed at all.

With that, it runs fine; the only (minor) problem is that switching to another window and back to idea makes the cursor disappear and some point-related shortcuts stop working until I open any menu/window within idea.

I use a tiling window manager; I wonder if it claches with the Java UI library somehow.


Running Idea on 64bit Ubuntu here. Yes, there is a solution and it is a huge hack. The idea is to make your own fonts with hinting info stripped out - check out http://gleamynode.net/articles/2280/

For instance this is how Go code looks in my IDE: http://i.imgur.com/jcWVFuS.png

Some people don't like the blurry look but I have grown quite fond of it.


Whats wrong with the way the fonts look? I find that people are split on the matter of good font rendering on Linux: some perfer hinting with bytecode-enabled fonts while others prefer antialiasing with hinting turned off...

Personally I like to add this line to bin/idea.vmoptions

  -Dawt.useSystemAAFontSettings=false
which turns off anti aliasing, then use windows fonts (Verdana for menus, Courier New for code) inside the IDE.


I run PyCharm in 64-bit linux and have no font problems. Perhaps you should ask in the Jetbrains community forums, and include some more details / screenshots?


i love intellij but i've been disappointed with the bugginess of 12. i am (unwisely) doing a fair bit of JPA/Hibernate work at the moment and in the latest point release they've managed to break this functionality completely.


best java ide ever




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: