Eclipse, plus vim in a terminal window, take care of all of my editing needs.
Sometimes it seems like people buy quad-core machines and 8GB of RAM, and then are angry if an app uses more than 1% of CPU and a few MB of that RAM.
I'm not going to sit here and say that Eclipse's hour-long startup time doesn't annoy me, though...
The RAM I couldn't care about, that's fairly cheap these days. I haven't a clue what that software does when it starts up but there has to be some way to optimize it.
Intellij is not much better.
It's why I gave up on Eclipse a while back. (Well, that, and its tendency to crash with out-of-memory exceptions when using the syntax parser set to "full." That was the final straw.)
Also, I'd recommend eclipse users (that are vim fans) to try out viplugin (http://www.viplugin.com/viplugin/). It is far from supporting all of vim's commands, but it has enough for me to feel comfortable.
A much-underrated feature is the Mylyn task-focused programming system, which reduces information overload and saves you a lot of time repeatedly navigating around hierarchies and files. I've seen nothing comparable in any other editor.
There is also some great integration into bug tracking systems. My projects use Bugzilla, and I almost never need to visit the slow bugzilla web interface or wade through bugmail emails anymore - bug search and details, comment posting and bug change notifications are all right there in the Mylyn task list.
Before switching to Eclipse when the 3.5 release came out, I previously did all my Java work in jEdit, which I still use for other languages; I hate to think how much time I wasted by manually doing the tedious tasks that Eclipse could have automated for me.
I concede that you do need a fast machine, lots of memory and plenty of screen space, but it's well worth it for the time savings on the tasks for which it is suited.
What won me over is the excellent refactoring support. That is definitely something that I was not going to be able to hack together with some Emacs-lisp. It just makes sense that rename, extract variable, extract method, etc. are atomic operations.