I used to love IntelliJ IDEA - it was the one thing that made coding in Java fun. I even used it for a year after switching to Ruby - despite its complete lack of support for Ruby.
But I'm trying it now, and I can't say I'm impressed. There's a forest of plugins, the preference pane is bewildering, it doesn't look as slick as it used to, Mac keybinding don't work, and it's extremely slow.
I'd like to say, hey, what happened to doing one thing (editing Java) and doing it well? But, well, were talking about an IDE here. I guess that's just not in the cards.
Even so, I'd love an editor with realtime code analysis and those fantastic "suggested actions" for dubious code, without all the cruft associated with version control, html/css, javascript debuggers, database viewers, and so on...
Sadly, it is a fairly crippled version. It looks like they open sourced the basic framework and some core modules, but keep the important ones behind the $600 barrier. This may actually backfire as folk's willingness to pay $600 for JSP debugging is questionable.
The JEE application servers are not supported either. But his is not a big issue, since one can always start the app server outside IDEA and still be able to debug it with the Community edition.
It does everything I want now (for Scala). If their product is good enough (compared to Eclipse, Netbeans, and Emacs) then if I later decide I want the extra features, there's a chance I'll pay them.
From the comparison matrix it appears to be missing quite a bit. Since it is open source though, I don't see a reason why someone can't develop the missing feature(s) that they need. Then again you have to value your time at something. Buying a license may be cheaper in the long run.
Wow! I've always thought the Lisp machines' environments as being an inspiration for the modern third generations IDEs (Eclipse, IntelliJ). Now this seems to have come full circle.
IntelliJ makes it shockingly easy to add custom language support. The main problem is that the documentation is scant and scattered. I've never written a line of elisp (I've hardly even ever used emacs), so I can't compare. Anyone else?
Astonishing news. This is either very good - or a sign that JetBrains is in trouble, and therefore very bad for us fanatic Java developers and IDEA fans.
That might not be the case. One of their other products ReSharper, the .NET equivalent of IntelliJ IDEA, is popular in the .NET world. Perhaps that is doing better in sales and they are shifting their attention on what has greater growth potential.
Maybe it is another sign of C# supplanting Java as the more trendy development language for your average developer?
I've brought ReSharper everywhere I've been and it's resulted in pretty significant purchases every time. It's a truly fantastic product. I really hope that this doesn't turn out to be a bad sign.
No, trendy is something people do for no reason other than everyone else is doing it. It is practically the definition of a popular programming language. Exceptional people are ahead of trends, by the time a trend is established they have moved on.
The omission of the HTML, CSS and JS tools in the community edition is a bit of a shame. I can't imagine that much Groovy and Scala code is written that isn't related to a web application.
I use IDEA at work. I could definitely get by writing a small web app without their "enterprise" Java support -- it doesn't help that much in my application -- but leaving out HTML, JS and CSS syntax highlighting would just be annoying.
In response to Eclipse users who haven't tried IDEA, I'd recommend trying it out now that you can do so for free. I used Eclipse for a couple of years prior to getting an IDEA license, and find the IDEA editing and browsing experience to be overall slightly better than Eclipse.
Yeah, IDEA's javascript/html/css support is one of the reasons I switched from eclipse. The Javascript editor in particular is much improved over eclipse: Autocompletion, rename refactoring and find usages actually work somewhat!
If they're not using an IDE, then they've not yet worked on large projects. Either that or they're doing themselves a serious disservice. This from a hardcore Emacs-and-shell guy until fairly recently...
Maybe they're large projects because people are using IDE's ;) clicking once to insert getter/setter/hashcode/tostring/etc instead of writing what is necessary.
So you write your hashCode/equals/toString methods, and your getters and setters all manually instead of clicking three times?
Automatic generation of delegate methods is also a godsend.
What about refactoring? Eclipse's rename tool for one changes the way you write code as refactoring is so trivial you do it without thinking.
Eclipse's debugger is also top notch, far better than jdb.
* Never use a debugger, it's usually pointless.
* I hardly ever use getters and setters, and write by hand if needed.
* hashCode/equals/toString by hand when they're needed.
I also hate the thought of an IDE refactoring my code. I've seen it before, and I've seen it break stuff.
It's just typing :/
Authors of novels could use auto-complete. They could tab complete characters names. I expect they could use built in sentence constructs, or even re-factor parts of the novel. But they don't.
Well when you're working with other people's code debuggers are most definitely not pointless.
I'm not sure how you can write any non-trivial Java program without lots of getters, unless you expose your fields everywhere, and end up in maintenance hell.
hashCode/equals/toString are boilerplate code that is best machine generated, because humans make mistakes when writing the same boilerplate code for the 500th time.
The fact that Java is strictly statically typed means the IDE can safely refactor your code without breaking things, though obviously you can still get naming conflicts, which if occur the IDE will not let you continue.
Your comparison with natural language is disingenuous, they are not parsable by machines, and hence are not easily refactorable; a word processor can't determine the context from your cursor location, and hence can't auto-complete words.
I don't touch any of the Bean / Spring / 'enterprise' madness. Perhaps that's the difference.
Exposing fields everywhere isn't really a maintenance hell, it's simple enough to find everywhere that accesses the field, I'm not sure why adding getters/setters is so much better :/ Sometimes it makes sense when the get/set does more than just modify a field.
Things like SimpleRemoteStatelessSessionProxyFactoryBean are clearly madness, and give Java a bad name. Also reinforce the silly opinion that to write Java you must use an IDE.
I agree. I know some awesome Java developers that use Netbeans, Vim, Emacs, Eclipse, and one or two that use IDEA. And this is not on tiny projects or lone coder things. This is an enterprise Java app that is probably one of the largest Java apps in the world.
IDEA might be great, but so is Eclipse, NB, Vim, and Emacs in the hands of a developer worth their salt.
Site seems overloaded. Mirror, anyone? This is awesome news... I was hoping for something like this now for quite a while. IntelliJ is just so much better than Eclipse (this from a paying customer now for about 3 years.)
In my estimation, Eclipse has more momentum over anything else, primarily NetBeans (which is quite good, actually) and IntelliJ. And momentum counts more over the long run.
Intellij has a few features that I would have a hard time living without. Code inspection is probably the number one feature that is pretty amazing. You can configure it to check everything from warning about null pointers to unused variables to questionable practices (like an assignment in a conditional). When you have a green light, you can be reasonably sure that the code is clean from most basic problems. The autocomplete is the best I've seen in any IDE, and it allows matches on CamelCase by just typing the capital letters and brings up choices based on type inference. The version control integration is also pretty amazing; I think they could sell the change management and merging portion as a stand alone tool that would do really well on its own. Overall, IntelliJ lets me get into a flow with programming by making a lot of the warts of Java melt away. Sometimes it feels like it's almost writing the code for you and you are just giving it some direction. I know that some of these features have been implemented in Eclipse, but the way they all integrate so seamlessly makes IntelliJ a fun environment to code in. I miss these features in other languages that don't have an advanced IDE.
"I know that some of these features have been implemented in Eclipse, but the way they all integrate so seamlessly makes IntelliJ"
Sounds as if it's just what you are used to, not that one is better than the other. Back then when I worked with Eclipse, it did not seem full of seams, either.
Edit: In case it wasn't obvious, I meant an IDE that you're just used to using, and that you think it's perfectly alright because you're not aware of better options.
I've got some anecdotal evidence to support this, so if you disagree, let's hear yours.
Have you really tried IDEA, and did you really not think it was better than Eclipse?
"Have you really tried IDEA, and did you really not think it was better than Eclipse?"
Yes and yes I did think it was better than Eclipse but I did not think it was better than Netbeans since 6.5 and on. I think the problem with IDEA is they are beginning to have trouble keeping up with the latest trends in the industry given that fact that a lot of those trends are coming out of open source it is natural that the open source IDE's will implement tooling before there closed source competitors.
That being said IDEA always felt more "bolted together" and consistent than Eclipse but the trade-off was always that they did not have tooling for some of the things eclipse did, so personally I would have to jump between the two.
Since Netbeans 6.5 and now 6.7 I have moved away from both as, for me, it has both covered well. It is polished as if it where build less by community and more by a driving vision. It also has a large community following implementing new tooling for the latest and greatest. Take the JavaScript tool-kits for example, Netbeans is the only IDE short of Aptana that I have seen, that implements code completion jsdoc inspection, code navigation, debugging, trace from JavaScript client, through server to database, etc. etc. for all of the major JS frameworks.
Anyway, long story short, IDEA is competing in a space that is becoming increasingly difficult to remain closed source. Especially when some of it's open-source competitors have caught up with it in it's mainstay, efficiency and usability.
I haven't tried IDEA because I wasn't willing to pay for it. Also I wonder if the plugin scene for IDEA is as alive as it is for Eclipse? Proprietary software always seems like a dead end, so I prefer not to invest time in learning it.
I definitely hear you about momentum. That's why the open-source move excites me. IDEA always just seems to be much better at navigating and "connecting" parts of a complicated codebase.
For example, in GWT, I can command-click (this is on a Mac) on a GWT style-name in a Java class, and it will bring me to the relevant part of the style in the CSS file. Same thing for Spring integration- it can connect all your code to your Spring XML config seamlessly. When you ask it "find all uses of this class/interface/member", it just does the right thing, whereas with Eclipse it often seems to miss things. Refactoring especially, in Eclipse seems to miss a lot of things that IDEA gets right.
I had the "misfortune" of having learned IDEA as my first IDE. So I am forever spoiled now. You could say that I am biased towards IDEA because it's what I learned first, and you'd probably be right to a certain extent. I tried on several occasions to migrate to Eclipse, with the intent of lowering the communication barrier between me and my colleagues. But each time I ended up going back to IDEA because it just works so much better at navigation. If you work in big codebases this becomes really important. Before IDEA I used to use Emacs and the command line exclusively.
No, I don't think there is any Python support, but they do support some other languages.
Edit: After investigating further, it looks like there is an alpha-quality Python plugin, and eventually there will be full Python support, available in its own IDE or as a plugin for IDEA.
I can't answer for him, but I can answer for me. IntelliJ has key mappings that just make more sense. IntelliJ is somewhat better at completion and refactoring.
I use Eclipse, because I know that having really learned it, I can use it where ever I want, no matter where I work.
If you're trying to get work done, quality counts quite a bit. While Eclipse is a nice tool, IDEA is a professional tool that shows the attention to detail put into a professional-level product (better integration of aspects of the application, rough edges polished off, well-written docs, etc). If you're writing Java code professionally then IDEA is worth the money in time it'll save you 'over the long run.'
I find it more ergonomic, for lack of a better word. As far as feature-by-feature, it's much the same, although IntelliJ really stands out in some areas; off the top of my head:
- Javascript / HTML / CSS support
- Structural search-and-replace (imagine search and replace that actually understands code)
- Code completion and navigation for XML and properties files
IntelliJ IDEA Open Sourced
October 15th, 2009 by Egor Malyshev
I believe you’ll like this announcement — IntelliJ IDEA has just gone open-source! Check out the press release as well as the new jetbrains.org community site for the details. We all will soon get a lot of new friends and colleagues in our IntelliJ IDEA community!
Starting with the upcoming version 9.0, IntelliJ IDEA will be offered in two editions: Community Edition and Ultimate Edition. The Community Edition focuses on Java SE technologies, Groovy and Scala development. It’s free of charge and open-sourced under the Apache 2.0 license. The Ultimate edition with full Java EE technology stack remains our standard commercial offering. See the feature comparison matrix for the differences.
Briefly, in the free Community Edition you’ll get all the Java code support — various refactorings and code inspections, coding assistance; debugging, TestNG and JUnit testing; CVS, Subversion and Git support; Ant and Maven build integration; and Groovy and Scala support (through a separate plugin). To learn more and download the Public Preview of IntelliJ IDEA 9 Community Edition, please visit the IntelliJ IDEA Community Edition site.
The IntelliJ platform, the common foundation for all our IDEs (IDEA, RubyMine, WebIDE or MPS), is being open-sourced under the APL 2.0, too.
You’ll find all the relevant information on how to participate and benefit at JetBrains.org. Check out the FAQ if you have additional questions.
Tags: community edition, maia, open source
I copy/pasted it in because the site was overwhelmed, and people were having a hard time getting to the content. Why was this bad? (Really, I don't understand what the problem is.)
However, I had my cow orker try it another day, and we've failed to find a way to visually synchronize project with repository, like you do in Eclipse. Therefore, threw it out.
Not sure why you where downvoted. Your story supports what I suspect: that it is just what people are used to, not the inheritent qualities, that make people say IntelliJ is so much better. Probably there is a visual merging thing in IntelliJ, just as the features people are missing in Eclipse are probably also there - if you know how to find them.
As far as I can tell, you get it automatically when using CVS or SVN.
And no, it's not just what people are used to. Earlier this year, me and another guy converted a few developers from Eclipse to IDEA and they were all really happy about discovering it.
Hm, maybe you didn't search thoroughly enough ? Or maybe I don't understand what you're asking for. Anyways, try Version control->Show changes view. With this you open Changes plugin and under Local tab you will have browsable local changes and under Incoming tab you will have browsable pending updates. You can then compare every file that was/will be changed.
Well, in my experience IDEA gives you a "visual merge" when there are conflicts.
You have a three-column view with the local version on the left, the merge in the middle, and the changes on the server on the right.
Then you can pick and choose which changes to include and which ones to revert, and their locations are all marked with red and green colors on the sides (of the columns).
I assume that's what you meant, and I don't remember ever having to "opt in" for that functionality.
Btw, it's possible that the people on #java were all using Eclipse :)
"You no understand" (c) The Italian Man Who Went To Malta
I'm not asking for a visual merge "when there are conflicts".
I'm asking for a visual merge NOW; because I said so.
Because if it fails to produce the said visual merge, it gets thrown off the window - exactly what's happened.
And it's more than visual merge; I also want a tree of files that have been changed, on both sides; and I want to look at diffs when clicking on them; and to choose what to update, what to commit. It's very much more than just a dumb commit all/update.
Nope, those people on ##java are really passionate about IDEA.
Well, apparently Eclipse has more functionality for this specific purpose. That may be enough for you to completely dismiss IDEA in a fit of self-righteous prejudice, but that doesn't mean IDEA isn't a better product overall.
You can choose specific files to commit or update in IDEA too, but I guess that's no good either if it doesn't happen exactly where you want it to.
Why do you want a visual merge even when there are no conflicts though? You could just edit out everything that shouldn't be committed, and then commit.
I'm not going to speak for ilyak, but some people (myself included, sometimes), want to see the results of a merge even when there are no conflicts, because we don't trust merges to always go right. There are occasions where subtle bugs can get introduced by botched merges.
Having said that, I'm way less disciplined than I used to be, so I've gotten so I just trust the merge. The mentors who taught me the ropes with version control systems would not be impressed.
It also probably has a lot to do with what kind of software you're developing. In my case, we were writing firmware for prototypes that cost over $2000 and were easily destroyed by bad code. That's bad, but not nearly as bad as code that could endanger human life or perhaps code that handles large financial transactions.
If you're just developing a web application or twitter client, it's probably not worth being so anal-retentive about it.
But I'm trying it now, and I can't say I'm impressed. There's a forest of plugins, the preference pane is bewildering, it doesn't look as slick as it used to, Mac keybinding don't work, and it's extremely slow.
I'd like to say, hey, what happened to doing one thing (editing Java) and doing it well? But, well, were talking about an IDE here. I guess that's just not in the cards.
Even so, I'd love an editor with realtime code analysis and those fantastic "suggested actions" for dubious code, without all the cruft associated with version control, html/css, javascript debuggers, database viewers, and so on...