The Ace editor (the editor created by Cloud 9) is all Javascript, so
that runs on the client side. At present that means that in order to
have compilation/auto-complete/etc you need to write a compiler for the
target language in JavaScript.
Aside from the difficulty of writing the compiler, that also obviously puts a heavy load on the browser.
I
extended Ace so that it can communicate with a server to get the
compilation and auto-complete information (I also made an auto-complete
widget). So it sends the changes that the user is making to the server
in real time. On the server side it uses the scala.tools.nsc.interactive
package of the Scala compiler to do compilation and auto-complete.
I also integrated the Eclipse compiler so that it will compile and
report errors for Java projects. I would like to integrate auto-complete
for Java as well, but the Eclipse auto-complete engine is tightly
coupled with the Eclipse package and workspace structures, so I think it
would need to be heavily rewritten.