I haven't had to java in a long time, but for C++ I find ymcd (based off vim's YouCompleteMe) well worth a little effort to set up. Get the daemon at https://github.com/Valloric/ycmd and emacs package at https://github.com/abingham/emacs-ycmd It gives "intelligent" completion and code navigation, just like you'd expect from IDE's. For the per-project setup, I typically just copy-paste the config file from another project and perhaps tweak some include paths in it.
Apparantly ycmd can do C#, Rust, Go, JS etc. as well now. I like this way of putting such "IDE features" (meaning the programming language-specific features) into editor-agnostic deamons; that way good completion/navigation is available to all editors. The same idea is behind eclim (as you mentioned) for Java and merlin for OCaml.