Emacs/eclim has been my primary Java IDE for the last couple of years and would say it works fairy well, even with large code bases (my current emacs/eclim workspace has more than 4000 Java files). It's true that emacs-eclim requires the file to be saved before making its call to
eclimd, but it's not that big of a problem IMO. The editing experience is still good and the debugger (using
gud) is ok.
If you resent all solutions based on Eclipse, I would recommend Malabar mode. I've used that for a couple of years too (before I switched to emacs-eclim) and it has some nice features, top of which is that it works out of the box with any Maven project. If you use Maven,
malabar-mode will instantly give you auto completion and code navigation (among other things). With malabar, I used jdibug for debugging remote Java processes.
The oldest Java package for Emacs, JDEE, might also be worth checking out. Here, you'll find lots of IDE features implemented in pure elisp (or accompanying Java programs launched via
bsh), but last time I used it, it was pretty dated. I may be mistaken, but last time I checked, JDEE was best suited for Java <= 1.4 and the debugger that worked the best with it was
jdb (the others were too slow).
Lastly, regardless of which Java package you choose, I'd also throw in Projectile for lots of project related goodness.