I use 'other' - I occasionally download an IDE (NetBeans, Eclipse) to see what they're like but rarely use them for more than a few minutes before I get annoyed by how slow they are. I develop Java projects of around 200-800KB in source with ROX-Filer and a bunch of faithful shell-scripts on ROX-Filer's 'Send to...' menu. I use vim as an editor. I use one shell script to 'watch' a file or files with inotifywait, sending them to javac when a file is modified, one shell script to re-build the entire project, another shell script so that I can right-click a source file and execute it directly (if it has a main method or static initialiser) and another shell script for regular backup to a couple of remote hosts. When I'm re-factoring an existing codebase, I have another background script that creates snapshots of the source tree so that I can go back to any point in my edits (handy for those one-off automated edit scripts that don't do quite what I expect). For code completion, I read the API docs.
This method works great for me ... until I have to write a CV.