https://microsoft.github.io/debug-adapter-protocol/
https://github.com/Microsoft/debug-adapter-protocol/blob/gh-...
I hope this takes off. Between it and LSP, pretty much any text editor can be an IDE with little effort.
Speaking of, I had a Spark lab for school and it was too powerful for my machine, so I ssh'ed into the school's computer and ran a spark-shell from there, in an emacs split. Then with a macro, it was easy to "send region" or "send buffer" to the ssh'ed spark-shell. I made a quick script for that actually, it was so convenient: https://github.com/tbinetruy/config/blob/master/spacemacs/sp...
And that's why I love my emacs, I can just do stuff like that so easily :D
For Scala I use Ensime at work and have been playing with metals at home. The latter is still very much under active development and you'll likely have to put up with Ensime's quirks for a complicated Scala codebase.