Skip to main content

IDE lockdown - give my Java back

Posted by kirillcool on February 3, 2005 at 1:07 PM PST

As aptly put in this article,
there are two types of programmers, those that go with languages and those that go
with tools. Given that we all go with Java, what about the tools? Looking at the market,
we have at least five major players, Eclipse, JBuilder, NetBeans, JDeveloper and IntelliJ
(which, unfortunately, has no free version). How to choose which one is the best for you?
Here there are number of options:

  • at work - most probably dictated by the work-place policy (which on itself isn't bad,
    considering that you have to work in team environment at different computers, so you'd better
    have the same environment installed)
  • go with the majority (hoping that the shepherd isn't blind and has no hidden agenda)
  • try out various tools and see which one fits you the best

In this case, the freedom of choice is a bliss. I remember working with JBuilder back in 4-6
versions, and i look back at those days with a shudder. It's unthinkable why even now, after
5 more versions, the GUI still looks awful, but that is a totally different subject. Unfortunately,
the longer you work with a particular IDE, the more keyboard shortcuts you learn. Why
do i say unfortunately? Because now you are locked on one particular IDE. For better
or worse, you are basically stuck. Let's see a quick example.

At work, we use Eclipse. At home, I use IntelliJ. The more i program with both tools, the more
i get used to the quick shortcuts (instead of lifting my fat fingers and moving that heavy mouse
across the screen to the menus). Looking back, i see that most of the time i use eight different
functionalities (in no particular order):

  • rename (variable, member, class)
  • move (class to another package)
  • find declaration (of variable, member, class)
  • refactor string to constant static member
  • generate getters and setters for a class
  • implement methods from interface
  • organize imports
  • reformat code

The first two are a must-have, as pointed out
The third one is even more important, the rest are nice and very useful. Of course, i use much
more than these eight (guess i disagree with
this post).
Here is the problem:

Function Eclipse 3.1 IntelliJ 4.5 JBuilder 2005 NetBeans 4.0 JDeveloper 10g
Rename Alt+Shift+R Shift+F6 None Alt+Shift+R -
Move Alt+Shift+V F6 None Alt+Shift+V -
Find declaration F3 Ctrl+B Ctrl+Enter Alt+G None
Refactor to const None Ctrl+Alt+C - - -
Organize imports Ctrl+Shift+O Ctrl+Alt+O Ctrl+I Alt+Shift+F None
Format code Ctrl+Shift+F Ctrl+Alt+C - Ctrl+Shift+F -
Generate get/set None Alt+Insert - - None
Implement methods None Ctrl+I None Ctrl+I -
Total shortcuts 165 243 202 82 173

The more i use these features in Eclipse and IntelliJ, the more i get
confused and use wrong combination in wrong IDE. It gets worse at the beginning
of the programming session, but it doesn't get much better after that, when i try
to tell myself to use the right combinations. I was thinking right now about the
natural language analogy and why babies seem to easily pick two different
languages at the same time. The analogy is out of place here: although the shortcuts
refer to the same functionality, they are in the same Ctrl+Shift+Alt+Key language.
It gets even worse in debugging:

Function Eclipse 3.1 IntelliJ 4.5 JBuilder 2005 NetBeans 4.0 JDeveloper 10g
Step in F5 F7 F7 F7 F7
Step over F6 F8 F8 F8 F8
Step out F7 Shift+F8 - Alt+Shift+F7 Shift+F7
Resume F8 F9 - Ctrl+F5 F9

So what, you may say, just stick with one IDE and you are set. When something better comes up,
just move to it and forget about the old one. The problem here is that not only you present
yourself (say in CV) as Java programmer, but now you are tempted to mention that you are expert
in a particular IDE. The current trend of hiring J2EE programmers that only have experience in
a particular application server may well project into IDEs. Although tying language and working
environment may prove fruitful in the short run, you are restricting your options and the mindset
in the long run.

I vote with both hands for IDE. They are indespensable for debugging, refactoring, integration
with third part extensions. I won't go back to emacs or pico. But each vendor implementing
200+ shortcuts that agree only on Ctrl+S being Save? Maybe we need a JSR for the
key bindings. I won't even go into creating my own keymaps or choosing one of the predefined
keymaps that simulate the rival IDEs. If they are there, why won't you just stick with them?
The people will not choose the IDE because of the keymaps, they will only be more than happy
to know that they can revert to your IDE without the need to learn new keymap set.

Related Topics >>