So the external service approach works well (Haskell, Python and Scala) as does a native Emacs approach (lisp, CEDET, JavaScript). Either way though, Emacs can make a killer IDE without giving up its text editing prowess or other assorted magic (TRAMP, shell-mode...etc).
I could probably get all of those features in emacs if I got everything set up correctly, but it's a lot of work. The main difficulty I ran into with Scala was generating an Ensime config. The first time I tried it, it blew up for unknown reasons. A few months later, it didn't work because my SBT project used subprojects. Now there's an SBT plugin that generates the Ensime config, so I'll give it another try someday. I'm very encouraged by Ensime's approach of integrating with and relying on the same tools as the rest of the Scala community (SBT and the presentation compiler.) It gives me hope that it won't be constantly two steps behind like it would be if it tried to reimplement everything from scratch.
However, it's definitely a problem for me if Emacs still can't handle Java well. Most of the third-party libraries I use are written in Java, so I do spend time reading and navigating through Java code. I tried setting up JDEE once and almost suffocated in yak hair trying to get basic features to work. (Granted, that was over five years ago, but still, it was much worse than advertised.)
And you know, when it comes right down to it, I really want an IDE. The whole thing. IntelliJ and Eclipse seem like bloated monstrosities sometimes, but dammit, so much of that stuff is handy when you're working on a complicated codebase. Plus they really know how to make use of my huge monitor. Using that much space usefully with Emacs and terminals is tough. I had speedbar installed for a while, but speedbar felt like IntelliJ's text editor: a half-hearted imitation of a real feature. Actually, I coded C++ in emacs for seven years and never liked using speedbar, CEDET, or even etags. They all seemed like a lot of hassle, and in every case I found that I preferred to just use Emacs as a text editor. All the Emacs-fu I learned in seven years of C++ development applies just as well to ordinary text as it does to C++ code.
I also recognize that it is horrible for serious Java development. I found it fine for browsing through random (usually undocumented :p) libraries, but when I had to use Java myself it was horrible. I ended up doing a bunch of things in Eclipse. Ultimately I solved the problem by not using Java :) Not a viable solution for everybody, but I think it beats the alternatives. (Unfortunately, Emacs's support for Java has gotten worse over the years, unless I missed something when trying to set it up in the past.)
My experience with IDEs and screen space has actually been the opposite: Emacs expands to fill all available space while IDEs tend to be much less efficient. I have all the UI frills on Emacs turned off (file bar, menu bar, scroll bars, flanges...), run it full screen on a 1920x1080 monitor and still don't always have enough space for everything I want. Of course, I tend to have one or two files, one or two shells, a dired buffer and maybe even Jabber or IRC open at one time, so it's doing more than an IDE would.
Additionally, in my experience, it's the IDEs that lack the features I want. I am basically addicted to TRAMP: I have maybe 10 remote buffers to three different servers open right now. However, the thing I miss most is elisp: I am able to add features I want really quickly. When I'm missing a nontrivial command (say, open a shell in the current directory, set its prompt and name the buffer) it literally takes minutes for me to add it. Little things like C-u Space (which lets me go to the last place I've marked) and undo-in-region are also extremely awesome.
As far as things like the Speedbar go, I just don't use it: I see no advantage to having something like that, and I basically never use the mouse anyhow. I do use tags, and they are useful--didn't you say you liked jump to definition?
I think the main difference is in languages: I primarily use Haskell, JavaScript and Python with a smattering of lisp, Perl, LaTeX and bash. In the near past I also used Gosu (before the IDE plugins worked, if they do now) and C. Emacs is great for all these languages on top of being both a brilliant editor and great window manager/os (I seem to do everything but browse the internet from Emacs these days).
It really is horrible for Java though. And Java is particularly horrible without an IDE. Still, for quite a lot of other languages, it really is like an IDE. I guess not very many Java hackers use Emacs and not very many Emacs hackers use Java.
The same thing was true of all the C++ IDEs I tried, though. No tool in the world except gcc could handle our C++ code. We even had a file that defeated Emacs. It was a huge file that used a logging macro that included a leading parenthesis but no closing parenthesis, so there were hundreds of lines like this:
LOG "A log message", logFile);
Result: Emacs locked up when you opened the file, presumably while trying to colorize the syntax.Whenever language support is that poor, text editors and other Unix text-munging tools win hands-down. All I had to do in Emacs was disable the cc mode hooks and fix up the file using query-replace-regexp. IntelliJ has the equivalent of query-replace-regexp, but it's clunky and bothersome enough that I went from using it as a daily tool in Emacs to almost never using it in IntelliJ. That's pretty much what happened to me with Emacs' IDE features, so it's kind of a symmetrical situation.