Java is one of the langauges emacs has the weakest support for. It really depends on the language.
Emacs is has great C# support with navigation, refactoring, auto-completion (the real thing, not a text match), etc. Combine that with the various helm methods of grepping, helm-cmd-t, and helm-git-grep. Emacs is better than Visual Studio at C#, but you do need to dive down the rabbit hole to really use it well. Emacs blows IntelliJ out of the water when it comes to C#.
First class Java support is possible, but most hard core emacs users could care less about Java.
If you use lisp you get SLIME. Your unit tests are macros, with first class support as any other part of the language. And whatever shenanigans you can dream up will be supported as a first class part of the language, that would require vendor support in IntelliJ.
>> They write code for hours or days at a time without validating what they are writing.
In emacs we use flycheck to see errors and style warnings as we write in real time. For javascript there is js2-mode.
If you're a lisp programmer you take it a step further. Not only checking syntax in real time, but running the code in real time. Like a small talk developer! It's the tightest feedback loop you can get. Makes test driven development more enjoyable too. (skewer-mode allows this for javascript)
Don't judge text editor users based on your experience with a few people. Writing code for hours without style checks or execution is not a common workflow for an emacs user. I've met quite a few inept Eclipse and Visual Studio users but I know better than to correlate IDE's with traits.
inertia. Getting started is the hard part. I really have to force myself to do some things, then once the ball is rolling there is inertia to do more things. Then I can fall into the zone.
It's sort of like reading a novel. When you first start reading you see the letters on the page. It's a chore and not fun. A minute or 2 in you no longer see letters, but pictures. You are in a dream state like watching a movie. Welcome to the zone!
I would like to extrapolate and say that Lisp programming environments lend themselves to "Zoning" better. The ability to eval as you write makes it easier for me to gain inertia needed for the zone.
Little optimiztions such as key-bindings help. Gross motor arm movements to the mouse breaks my zone.
The tooling makes the language tangible. paredit. eval as you write with SLIME. completion with SLIME. macros. It feels like you are working with something alive and can hold it in your hands, rather than just plain text.
Other langs get 1 or 2 of the nice tools but never all of them. The parenthesis are a chore at first, but after paredit they are an asset, ironically making it easier to write than any other syntax I've found.
Clojure is ok, but just isn't there with tooling. Also it requires project structure. Feels like a loss of freedom against the JVM as a dependency. With Common Lisp you can just open a buffer and get hacking, and outperform the JVM to boot!
Emacs is has great C# support with navigation, refactoring, auto-completion (the real thing, not a text match), etc. Combine that with the various helm methods of grepping, helm-cmd-t, and helm-git-grep. Emacs is better than Visual Studio at C#, but you do need to dive down the rabbit hole to really use it well. Emacs blows IntelliJ out of the water when it comes to C#.
First class Java support is possible, but most hard core emacs users could care less about Java.
If you use lisp you get SLIME. Your unit tests are macros, with first class support as any other part of the language. And whatever shenanigans you can dream up will be supported as a first class part of the language, that would require vendor support in IntelliJ.