Questions for mixed IDE teams
Dear EAPers,
I know many of you work in "mixed" teams (where some people use IDEA and
some use something else, most often Eclipse). I know your life could be easier,
and I would like to find out what JetBrains can do to help you in this particular
area.
Here are some questions:
1. What features should JetBrains add to IDEA to make mixed-IDE development
easier?
2. If you happen to argue about IDEs with the other camp, which features
of IDEA you point to most often?
3. On the other hand, which features of Eclipse and NetBeans their users
use to counter your arguments?
I often get questions like "how do I convince my boss and/or teammates to
switch to IDEA?", and I must admit I do not have concise but convincing answer
(something in between "IDEA makes you more productive" and 20 pages of feature-by-feature
comparison). Ideally, I want to say something like: "Here are things that
only IDEA can do" and show a limited number features which every programmer
will recognize as useful AND easy to use (which leaves out SSR:). All in
under 15 minutes.
So far I came up with a short list, but since my Eclipse experience is limited,
I am not sure this is the best selection, so I am inviting your critique.
Navigation:
Goto implementations
Goto symbol (CtrlAltShift+N)
Context Info (Ctrl+Q)
Coding:
Copy-paste with string literal escaping
Intention Actions
Implement interface method
Replace == with equals
Refactoring
Extract method when code contains returns
Change method signature with parameter propagation
Convert to instance method
Analisys
Locate duplicates
Analyze dependencies
Debugger
Method/field/exception breakpoints
I am not sure what to say about Version Control and UI designer yet.
Based on that list (hopefully, perfected with your help) we will prepare
an short article and a series of demos which you will be able to refer to
if such need ever arises.
Oh, and one more thing. Selena EAP builds contain built-in Eclipse import
feature (in Demetra you had to use Eclipse plugin to export IDEA project).
Please give it a try. Today it converts Eclipse Java projects to IDEA Java
modules, keeping all dependencies and library references. Please tell me
what else you need (I am coding this myself, so short turnaround is guaranteed:).
Best regards,
Vladislav Kaznacheev
Project Manager, IntelliJ IDEA
http://www.jetbrains.com
"Develop with Pleasure!"
Please sign in to leave a comment.
Eclipse : it's free, is very responsive and looks good
NetBeans: it has Mantisse
Yes, it is hard to tell why IDEA is better than Eclipse (sorry, but NetBeans
is no competition). Maybe it becomes more clear when you forces you to use
Eclipse for one week on a heavy-duty-work-day.
== Eclipse
?
Make Static/Convert to instance
-0.1 IDEA just can find them in the same file
but not intuitive
I would add:
Safe Delete
finer grained Find Usages (in Eclipse these actions are scattered)
Ctrl-X/C when nothing is selected
in IDEA I can have a lot of Usage results open, in Eclipse just one
CtrlShiftF7 in IDEA works independent of Find Usage, in Eclipse the
usage pane will be cleared
Tom
Not so much a feature but IDEA's sluggish handling of remotely mounted filesystems is perceived quite negatively compared to Eclipse's and that's even with the belated performance improvements/bug fixes landing in 6.0.3+ that improved the situation. This makes IDEA look like a dog in some corporate setting compared to the competition no matter how much IDEA sports better features and better usability. You really should consider making this a priority somewhere between CRITICAL & BLOCKER.
I just noticed yesterday when I had iTunes connected and updating my
iPod in the background, IDEA 6.0.4 became EXTREMELY slow and sluggish...
I have never seen this before (it's the first time though that I've run
IDEA while iTunes was updating my iPod at the same time in the
background). All other apps running behaved normally and responsively.
All the files are completely unrelated- except for being located on
the same drive and it's not a network drive. I wonder if it is somehow
a related issue.
Jon Steelman wrote:
>> 3. which features of Eclipse and NetBeans their users use to counter your arguments?
In our environments we have people working in Eclipse though mostly in IDEA.
My personal perception is that people work with what they are used to.
I have had the 'comparison argument' more than once and unlike several
years ago, when IDEA was the up and coming contender with a very smart
Java engine compared to the competition but lacked all kinds of
integrations with 3rd party tools and libraries, nowadays there are
features on both sides and like you say it's hard to state 5 points that
make all other IDEs look obsolete.
The answers to your questions:
1. Eclipse compatibility plug-in. Features could be saving Eclipse
project files alongside IJ project files automatically and seamlessly
open Eclipse project files.
2. I would point the lack of need to compile in order to know about most
errors (of course, the come back is that compilation happens in the
background).
3. Integrations are one issue I hear about, like Hibernate. Also the
infamous "Eclipse is for everything, not limited to developing Java".
I think that a 4th question should be:
What features in IntelliJ could ease migration from Eclipse?
My answer is: For one, you can include an Eclipse keymap, and also
specific help for Eclipse users to map features and terminology, so that
when a veteran Eclipse user open IntelliJ, their learning curve (and
hence frustration and establishing of the opinion that IntelliJ is very
inferior to Eclipse) will be much shorter, and they'll be able to hit
the ground running with IntelliJ. That way instead of getting frustrated
they will much earlier start finding the benefits of IntelliJ.
Lastly, has anyone tried the latest (5.5) NetBeans? Last time I had the
time to try it seriously was when version 4 was out...
Regards,
Amnon
Vladislav Kaznacheev wrote:
+> 1. What features should JetBrains add to IDEA to make mixed-IDE
I work in a very mixed IDEA environment (Eclipse, IDEA), but we dont' have
any problems between Eclipse and IDEA because our Ant build.xml files
define the project, not Eclipse or IDEA project files.
Everyone uses the tasks in the build.xml to compile, package, deploy, run
unit tests, etc. The only reason I need to configure my IDEA project is so
it can find my source code and resolve libraries and javadocs,etc.
Sometimes, some of the 3rd party jarfiles will get out of date with
respect to the build.xml, but I usually don't even notice because I only
notice if I edit a class whose imports cannot be resolved, etc.
Even for debugging, I usually do remote debugging so that I don't have to
have the application compiled within IDEA.
For a new user that is using Ant build.xml, it would be really nice to be
able to import the ant task javac's source and CLASSPATH into IDEA's
project configuration. The CLASSPATH just gives the paths to jarfiles or
classes; It would also be good if source zipfiles and javadoc files could
automatically be discovered, maybe assuming the user follows some naming
convention, e.g. if file.jar is found, then look for file-source.zip and
file-javadoc.zip in same directory?
Even after I have setup my IDEA project, I would like have IDEA ocassionally
compare the ant javac task CLASSPATH with the IDEA's project libraries,
and show me the difference with the option to update IDEA configuration.
+> 2. If you happen to argue about IDEs with the other camp, which features
The eclipse users seem most impressed with the error hilighting /inspections,
and the debugger. Also, I've had at least a couple people say they think IDEA
searches stuff faster than Eclipse. I don't really try to sell anyone on
IDEA; These were just comments from people while we were debugging or looking
at some code together.
+> 3. On the other hand, which features of Eclipse and NetBeans their users
They don't really say Eclipse is better, but that it's "good enough", and
since they are already used to it, they'd rather stick with it than learn
IDEA.
Having a feature to create new project from an existing Ant build (like in Netbeans) it would be nice.
1) We work half-and-half with Eclipse users and our biggest pain is trying to keep module/project classpaths in sync. We define a set of project libraries in IDEA, which then needs to be replicated in the Eclipse environment - it would be nice if every time we updated the libraries in the IDEA environment that it could sync with the Eclipse configuration (I have no idea how feasible this is though!).
On a similar note, multi-IDE support for TeamCity would be a huge bonus :)
2) For IDEA:
- Change lists
- Method call hierarchy (at least the user I quizzed about this didn't seem to think it existed in Eclipse).
- In-depth code inspections (big plus)
- Module grouping and project configuration
- In-built J2EE support
- IPR file sharing, for single point of project configuration
- Scope colour highlighting
- Debugger's ease-of-use
- Patches (Selena)
- TMate functionaltiy (Selena)
3) For Eclipse:
- EMMA integration plug-in delivers a more visible view on code coverage (gutter markers aren't the clearest).
- It's free
- Really can't think of any more, but I'll ask the Eclipse users once I'm back in the office!
I'm not sure. IDEA is faring well in this arena so far, and I don't think there's anything it needs to do. Some things would be nice to have, like updating Eclipse's .classpath to reflect changes in IDEA project configuration. Creating and consuming patches was the feature I missed most, but it's finally been implemented in Selena.
Inspections. Sometimes I'm doing a code review, and end up pointing many errors/bad coding to my fellow developers. They usually answer with something like "come on, you have that monster IDE to find errors for you. We can't possibly compete with that". I'm serious.
JavaScript code completion and navigation also makes them widen their eyes.
The number of plugins available, and specially, integration with our tools. We're tied to WebSphere, and it's just impossible to develop to WebSphere using IDEA alone. There are just too many tie-ins to IBM Rational Application Developer. Even I need to keep RAD open most of the time. I've posted about this before a couple times:
http://www.intellij.net/forums/thread.jspa?messageID=5162536&
If I was an Eclipse user, I'd point responsiveness as a plus for it. Today eclipse "feels" faster than IDEA. Luckily, we use IBM RAD, which adds so many useless features to eclipse that makes it look like a turtle next to IDEA.
I guess it needs to support other popular project types. For starters, WebTools EJB, Web and EAR projects are good targets.
Vladislav Kaznacheev wrote:
I am biased of course, but I point to the enormous amount of intentions
and inspections. This seems to be the complete list of Eclipse 3.2
intentions:
http://help.eclipse.org/help32/index.jsp?topic=/org.eclipse.jdt.doc.user/concepts/cquickassists.htm
A list of inspections I can not find, but without (commercial) plugins
it is not much.
And IDEA's refactorings are still better, as far as I know. Available in
more situations and less impacted by broken code. The one Eclipse user I
know often points to Eclipse's ability to compile broken code, but when
a refactoring is then no longer available, that does not seem very
usable to me.
Not that IDEA can also compile broken code if you pass the right
parameters to the Eclipse compiler. However, it would be nice if the
compiler was an actual production ready version:
http://www.jetbrains.net/jira/browse/IDEADEV-11223
Bas
We are using Mavens idea and eclipse plugins extensivly. It works like a charm having the pom.xml file as a master for both eclipse and intellij developers. It would be nice if official intellij developers could participate in the development of that plugin, i.e. if you are not already.
I seldom argue over IDEs - if a developer has worked with Eclipse then he/she should continue doing so. However I do show them thing like pasting in xml text, file paths etc and urge them to try intellij out when they find time. Also the "uml" diagram for ejb enitites (and hibernate entities) is a nice show of feature. The nice thing about intellij is that you have all the "plugins" that Eclipse has already built in and working - no need to download and test plugins and having conflicts etc. Chasing down plugins takes time (and cost money).
/Georges
This is the general perception and reality in where I am. IDEA may feel fast enough to many of its users (except for remotely mounted filesystems) but it isn't as responsive as Eclipse and people trying to make the transition comment about this. Maybe it is okay to be the ide with more features but be slower and feel sluggish compared to the competitor?
Usually, our "enlightened" IDEA developers joke about Eclipse when they
are/were forced to use it for some time (peer code review and such) and
even most of our Eclipse users think IDEA is better, but they don't want
to hit the learning curve, so I'm all in favor of e.g. providing an
Eclipse keymap to make (quick) transition feasible.
Regarding interoperability (multi-IDE teams) the one problem I
encountered was that it is possible (common?) to use different
compile/runtime classpaths in Eclipse which didn't import well into IDEA
(had to define a "runtime" module) and although I don't really like that
approach it seems somewhat common, so it would be nice if I could
correctly import that into IDEA (although I'm not sure which IDEA 6 EAP
build I used).
On where IDEA is better, I'm not sure, it just "feels" better and
everything is much "smoother", I however know that Eclipsers envied
IDEA's run/debug "approach" and they hated the slow hotswapping.
regards,
Messi
I work on a team with about 6 other developers. They all use Eclipse. I am the only one using IDEA. Luckily our build is all ANT based, so it doesn't really matter which IDE is used, although our manager wants us to all use the same IDE for consistency and so that there will be a uniform setup. IDEA has been relatively sluggish (not to say that eclipse isn't) for a long time and has had all kinds of little irritating bugs that just make it seem unpolished. And this has been the biggest thing holding me back from really trying to sell IDEA to the other team members. I remain on IDEA because I've been using it for years and I find it easier to get things done than in Eclipse, but more than once I've thought about making the switch (to Eclipse)... but I don't think it's really any better. I did get one guy on our team to try out IDEA for awhile but he's back on Eclipse now. One really irritating thing is that IDEA wouldn't work at all with Starteam, our version control system (although I don't think there is Eclipse support either.) The last time I tried to use Starteam with IDEA a few months ago, it caused everything in IDEA to go haywire. I've seen a lot of fixes for Starteam lately go into IDEA so maybe I will try it out again soon. The other barrier is of course that Eclipse is free and open source-- I think this is why Eclipse is so prevalent-- it's free... you can't beat that...
Eclipse has instant error reporting. I change something and I can see what I broke pretty easily. I have to compile in IDEA to see the errors.
Project file synchronization is a PITA at times. The IDEA camp here tends to have to keep Eclipse so that we can run and update files before we commit.
IDEA is just perceived as slower because of the compile issue. That's the big blocker here. People complain about Eclipse throwing OutOfMemoryErrors and crashing all the time. Can't get past compiles though.
A separate run configuration would be welcome too. They'd miss that.
The "hiding" of directories on the classpath under the Libraries node is SUPER annoying. Really guys, really.
You guys should look at X-Develop too for really fast error detection and back-in-time debugging.
JR Boyens schrieb:
You need to save in Eclipse to see your errors. Just map Ctrl+S in IDEA to
Compile and you will get the same effect.
1. What features should JetBrains add to IDEA to make mixed-IDE development
easier?
-
A tiny enhancement to make sure code stays the same way that Eclipse
users produced it: Automatic remove of unused import (rather than "optimize"
which reorders all imports).
A big enhancement: Rather than "importing" an eclipse project once, Idea
could constantly (on startup, and each time the eclipse project files change)
adjust its own classpath etc. from the eclipse files.
I usually only notice that the Eclipse project has changed when I am getting
compile errors or - worse - ClassNotFoundExceptions.
2. If you happen to argue about IDEs with the other camp, which features
of IDEA you point to most often?
-
a) Usability.
Unfortunately it is very hard, esp. for managers, to honor the value of usability.
I feel like emphasizing the usability strength often evokes the thought "Hey, what
a lame ass you are, real programmers could use Eclipse just as well. Usability?
Ha, that's important for my grandma trying to use a CD buring software."
In the end usable software means saving time, i.e. saving money.
You probably have to select 20 random features, emphasize that these are examples
only for a more general problem and then show how Idea saves precious time
when using any of these features.
b) Support.
Open source is nice and well, I could even fix bugs my self. Does my boss want me to
do that on company time? Nope.
Can I argue till I am blue in the face that a feature is valuable, but never see it included
in the software? Very likely. E.g. there is a years old request in Eclipse's issue tracker
that it would be nice to see the path of the current editor file in the main window title.
Quite a standard feature, but is has been discussed ad infinitum and the powers that be
decided not to do it.
OTOH many, many of the issues I filed at JetBrains's Jira have been resolved,
most often very quickly. Esp. all the important bugs and the usability problems
have been resolved very soon after filing them.
c) Plugins. vs Out-of-the-box features
You really want to see all your needed features included in the main package, in
consistent quality and supported equally well.
Eclipse has a lot more plugins, but most of those are of dramatically differing
in quality. I do not want to press for bug-fixes on six different groups and ten
individuals and get sent from one to the other because the problem is always elsewhere
(not to speak of installing and updating all those separate plugins).
Eclipse admitted this problem by inventing Callisto and MyEclipse makes a business model
out of this.
OTOH try using MyEclipse (for general Java EE feature), Exadel (for superior JSF)
and JBossIDE simultaneously... not a pleasant experience.
3. On the other hand, which features of Eclipse and NetBeans their users
use to counter your arguments?
-
It's the company standard.
Do - that's the argument to end all arguments.
-
Actually after being forced to use Eclipse on my current project I started to
jot down all the little (and not so little) usability problems that Eclipse
has with the intention of writing a blog.
Work load has prevented me from doing so, but mabye you can use some of this.
Unedited version follows. Note that some Eclipse problems maybe aren't real, but
only encountered by me because I do not know how to do something in Eclipse.
Eclipse
======================================================================================================
Features:
-
+ incremental compile in background, error highlighting
- compile and error highlighting still must be triggered by saving, refreshing, updating
VCS status ... and doing it in the opposite order again to get reliable results.
+ "Attach Source" button in class decompiled stub,
directly reloads the class after source was attached
- when source is missing only view is shown, that view cannot be used to navigate or search reference
(e.g. to navigate to super class or search for implementors of one of the methods)
+ java search (kind of simplified structural search)
- Cannot easily navigate from interface method to implementors
(Idea's ctrl-shift-b or click on gutter down arrow).
- cannot configure line spacing in editor
- no code completion while editing debugger watches
- shortcuts not shown in tooltips (e.g. on toolbar buttons)
- "decompiled" class view sucks: can't copy (e.g. package or class name),
can't navigate (e.g. ctrl-click base class) or search(e.g. find usage of method)
- no copy from "decompiled" class view (e.g. package or class name)
- no column mode editing
- no "Find Symbol" (?) (Idea's ctrl-shift-alt-N)
+ show inherited member in structure view (on second ctrl-o)
Usability Problems:
-
- "Search in Files" only lists the files without any actual text showing in the find results.
How stupid is that? Imagine trying to review the 2 thousand occurences of Bahunta (your
app's) and trying to decide which of those should be replaced by Kalula your app's new name).
You probably do not want to replace occurences in SQL, preferences key, ... but all others
in text files, properties, ...
This really happened to me - I just fired up Idea and was done in fifteen minutes.
In Eclipse I would have had to individually open each of the 2000 files.
- can't select lines by dragging mouse in left gutter
- Dialog "The file has changed on disk, do you want to reload?". Which f***** file?
Esp. stupid when I tried to switch back to Java perspective. Eclipse asked this before
actually showing the perspective, so that I had no idea what file it may be talking about.
- File has changed on disk. Do you want to overwrite?
Hm. How should I know? I cannot see a diff of both versions.
- File name should be shown in window title
- Console tab is brought to front whenever there is new output.
This is annoying if you are working in another tab during an ant build.
(latest milestone has a toolbar button to toggle the automatic show)
- no name proposoals in refactor-rename dialog
- no inline-editing in "Change Method Signature". Have to open YAD (yet another dialog).
- progress bar goes from 0% to 100% in 5 seconds, then for 60 seconds the processing goes on (team -> update)
or goes from 0% to 15% in 20 seconds and then suddenly jumps to 100% (building workspace).
The worst thing is I am getting used to that.
- 'inspection' text says "Field Foo.bar is never read local" even when the field is neither read NOR written
- "Quick Assist - Assign to local variable" (Ctrl-2,L) (Idea's Introduce local variable) does not add trailing semicolon
- no easy way to jump from interface method (or invocation of an interface method) to implementation
(Idea: Ctrl-Alt-B, resp. ctrl-shift-click)
- "go to last edit" Only single go (Idea: ctrl-shift-backspace goes to all last edits)
- Folder selection has no shortcuts to jump to project folder
- ant: On errors the console output only hyperlinks to the build file's javac task
No hyperlinks to the actual compile errors.
- no way to insert needed casts (Idea's smart complete after '('). Can do that only after the fact
using ctrl-1.
- error message when call arguments does not match signature is much less usefull:
Idea shows call and signature with aligned parameters, mismatched param in red.
In eclipse you get hundreds of characters without any alignment, highlighting or any other help.
- no completion without having typed a first character
e.g. for declaration "foo(Date date)" now trying to call it: "foo(<ctrl-shift-space>)"
- Display of "right border" in editor (configure line wrapping)
- only "raw" view of collections/maps in debugger
- camel case completion is not supported everywhere, e.g. in Overview (ctrl-o) which is similar to Idea's structure popup
- too smart "Pos 1" on lines starting with " // TODO"
(jumps after the "// " which is stupid because most of the time I want to remove the comments)
- ecxeption on unit tests are visible only in the left pane (truncated) (Idea prints them - hyperlinked of course - to the console)
- Open Type (ctrl-shift-T) does not allow multi-selection
- can't use mouse keys as shortcuts (e.g. for F3 (Idea's middle click))
Resolved:
-
- I'm really mising Idea's popup structure view, esp. when working in "full screen"-mode
=> ctrl-o (overview) (but doesn't remember its size):-(
- cannot overwrite existing text when using completion (Idea: accept with tab instead of enter)
=> ctrl-enter
Idea
======================================================================================================
+ no need for "Save"
+ much easier and faster to get a bug fix
+ Inspections!
+ Support for XML, JSP, JSF, Javascript
solid integration, well tested
+ Supported out of the box: JBoss, Geronimo, Glassfish, WebLogic, WebSphere
+ no need to refresh (e.g. TODOs are updated live), much better file watching
+ smart completion
+ smart complete statement
+ clipboard history!
+ Copy Reference
+ Idea is learning name suggestions, i.e. after the third time or so I named a variable of type "ShipmentEntity"
simply "shipment", Idea propose "shipment" first (and "shipmentEntity" only further down the list).
In Eclipse I keep removing the "...Entity" suffix about three dozen times each day (for all my entity classes).
+ fully automatic import organization
(insert unambigous imports automatically, remove unused imports)
- SourceSafe integration is weak:
- slow
- no distinction between local and added files (or is this a VSS problem)
- "Show History" not implemented?!
=> Now much improved because of me complaining :)
+ validates properties files (e.g. duplicate keys)
+ Locate Duplicates!
Amongst the usability problems I have with Eclipse (with RAD in fact which is our corporate IDE, I don't use raw Eclipse)
- depending on the perspective you're using, when browsing a project you don't see the same files. I often find myself wondering why this resource file disapeared from where I thought it was, but in fact I'm just not seeing it because not using the adequate view.
IDEA doesn't try to be too smart and decide which files should be visible in the project explorer
- Refactorings in RAD are only available when the code is already "correct enough"
Stephen Friedrich wrote:
You could use the "Import from same package", "java.lang import",
"Redundant import" and "Unused import" inspections for that. Those have
a quick fix that removes the offending import and leaves others alone.
Bas
Sorry, I was not clear enough. I was talking about the setting "Optimize imports on the fly" which I have always enabled in other projects, but cannot in a mixed environment because it moves import statements around.
There should be another option "Remove unused imports on the fly", so that no interaction at all is necessary.
This is a comparison between IntelliJ and Eclipse :
Big + :
- Huge list of refactorings that can work even if the file doesn't compile !!!!
- Analyse dependencies (EXTREMELY useful when developing on large projects) :
- Scopes (and most useful : deny usage of 'dao' package in 'model' package for example => ensures architecture integrity)
- Find usage detects declarations in non-java files (*.xml, *.properties etc...). Eclipse users often come to me and ask me to run some find usage just for that feature :)
- Structural Search and replace : once you understand how it works, it's really powerful,
- Out-of-the box support and highlighting of xml, jsp, css, ant files etc..
- Differenciation of production code sources and test sources
- Extreme responsiveness of IDE (most of the time)
- Extremely user-friendly and intuitive
- Enormous amount of intentions and inspections (Like Bas pointed out). In eclipse you have to install a third party plugin like FindBugs.
Small + :
- IDE configuration is easy : large color icons, grouped by "scope" : project scope or application scope, no nested conf as in eclipse : tree of configuration entries, leafs and nodes have configuration parameters, i hate that.
- Teamcity comes in bundle with IntelliJ 6.0
Small - :
- Manually changing an .iml (for example a mate added a new jar and commited the file) makes IntelliJ want you to reload the WHOLE project, not only the module. If you have a large number of modules with a large number of files, it may makes you wait a few minutes until the rescan is over.
Big - :
- Lack of out of the box ClearCase support (yes i know it's coming in Selena :) )
- It's not free (i'm joking)
Enhancement suggestions :
- Eclipse Keymap would be a great idea.
- An "import code style" from eclipse would be great too !!!. You all understand that you have to stick to one code convention because it facilitates readability and most importantly code merges (from one branch to another)!! I had to manually reproduce Eclipse code style (line blanks, breaks spaces and so one), and it's a daunting task. Please add this feature. You could also add an "import colors" feature too...
- "Keep in sync" with Eclipse project. There's already a quite well thought out plugin that does that : eclipse importer. The missing feature that i'd like is the option to tell the plugin that you want the .iml files in the same folder as .project and .classpath. And i've already told the author about it :).
- Structural search : it would benefit of more explanations in the user interface (and not deep in the help file), with tooltips, or an auto generated code sample that will be matched for... don't know...
If i think of something else, i'll update my post...
Gilles
You nailed it. "Import code style" from eclipse (as well as an export option) would be great. Unfortunately, there are a few options in the eclipse code formatter that are not supported in IDEA. One that comes to my mind right now is grouping imports every n package levels.
For those of you who don't know how this works: After sorting imports, eclipse breaks them (adds a blank link) if two imports are at least 'n' package levels apart, where 'n' is a user configured number. For example, if we have a list of imports like this:
If 'n' is 1, the organized import list will look like this:
If 'n' is 2, the organized import list will look like this:
Well, I think you get the idea. This is the single option in eclipse's code formatter that I miss in IDEA.
Here are some questions:
I am a lone IDEA user in a large department where everyone else uses Eclipse. I did convert one guy, who like me went and bought his own personal IDEA license since the company won't purchase them since "eclipse is the company standard." But he left for another job :(
So the problem I face, at this time, is not so much arguing for IDEA, but arguing for a mixed IDE environment.
*1. What features should JetBrains add to IDEA to make mixed-IDE development
easier?*
--A big one I think is something for JetBrains Marketing Dept rather then the developers... get into schools, colleges, and universities. A big pro-eclipse argument I hear is "that's what all the students use in school, so new hires (or co-ops) are use to it". Most schools use eclipse because its free. If you can't get into the schools directly, find a way to market to the students themselves.
--Better Maven integration. I should be able to instantly create an IDEA project from a maven POM. This would drastically help me win arguments for a mixed-IDE environment so that a maven POM can define the project, and not an IDE config file. (Fortunately the department is slowly moving from away from developers sharing eclipse project config files and over to using Maven POMs) Then developers can choose their IDE and create the IDE project from the POM. The IDEA/Maven integration should allow for a bi-directional updating feature. If I add a dependency to the POM, I should be able to instantly update my IDEA configuration. Believe me when I say this adding good maven integration would be a HUGE improvement to helping IDEA get into more shops.
*2. If you happen to argue about IDEs with the other camp, which features
of IDEA you point to most often?*
--more intuitive to use
--you don't have to constantly fight your IDE like you do with eclipse
--better refactoring
--easier to set up a project (although, IMHO, this arguments loss major weight with IDEA 6 as compared to IDEA 3, 4 & 5)
--Intensions & inspections
--templates
--Smart code complete!!!!!!! (and things like if I have a variable named foo, code complete will automatically highlight a getFoo() or even a findTheValueOfFoo() method in the list - this one actually wows a lot of people when I show them it - I am not sure if eclipse has added this or not. I have not looked in a while)
--The fact that IDEA seems to know what you are thinking and highlights the most likely selection you want
--IDEA's multiple awards
--I often dare them to use IDEA for one week, and then make a decision on which is better. The one person who took me up on the dare converted after a three days.
--easier to navigate website (I hate eclipse's web site and forum layouts)
--passionate users - I explain that while eclipse users may like eclipse, IDEA users are very passionate about IDEA. That to me says a lot, and I try to explain that.
--I know you can't directly use this one, but I also argue that I simply hate eclipse. Every time I try to use it, I spend far to much time trying to configure something, or figure out how to use it.
*3. On the other hand, which features of Eclipse and NetBeans their users
use to counter your arguments?*
--eclipse has better Maven integration via a plug-in (I have to agree with them on this one)
--eclipse is free
--eclipse has more plug-ins
--eclipse has better plug-ins
--eclipse has more people writing plug-ins
--new hires are use to eclipse since they use it in school
--eclipse has a bigger market share
oops - forgot one. The pro-eclipse people argue for Eclipse's auto-compile on file save (or change) feature. Since I have never used eclipse extensively, I am not 100% sure what this feature is. At first I thought they were just talking about error highlighting, and that eclipse instantly compiles the file so it can highlight the errors. But they were saying that when you change a file, eclipse automatically (and silently) compiles the file into your output directory (i.e. classes). I personally would hate such a feature, in terms of the way I develop, but they apparently like it. (Of course I try to argue the point that they shouldn't be compiling using their IDE, but should be using Ant or Maven... but they don't agree).If you do add something like this to IDEA, please make sure you can turn in off in your IDEA settings.
Eclipse users probably tout this feature because they need files to be compiled before eclipse checks them for errors. Since this is not true for IDEA, we don't need auto-compile.
However… I do like eclipse's "Problems" view. It's nice to have a single place that shows all errors (or warnings*) in your project, and have it updated whenever you change something.
As long is it doesn't get out of control. If you're working on an existing project, and you have a few thousand warnings, it's useless to show them on the Problems view. That's exactly what happens on my project, and I need to configure the Problems view to show only errors to be any useful.