As someone who has dropped Scala on the backend (not doing FUD, just not happy with the JVM memory reqs)- what keeps me still using scala is Scala.js.<p>While some argue that there is more readable code with Bloomberg's OCaml.js, I like Scala.js because of Scala itself, which is<p>1) Very well designed
2) Lots of "functional" constructs in accompanying libraries
3) Good typechecking
4) Fun language to use.<p>and because Scala.js interop with JS is very seamless.<p>Do check out ScalablyTyped repo on Github, a Scala.js analogue of DefinitelyTyped.<p>Being typed- one of the best things I like about Scala is that I can do something like this (provided by a couple of frameworks- Laminar, Scalatags et al)<p><pre>
div(
Seq( div( "div 1" ) ),
div( "div 2" ),
b(
"bold stuff",
i( "italic inside bold" )
)
)
</pre><p>No more mismatching tags, wrongly spelled tags, unclosed tags. Typechecked HTML in some sense.<p>This would also be a good place to mention some alternatives where a mainstream language can also compile to JS so hopefully people can comment with their experience:<p>1) F#- Fable
2) OCaml- Bloomberg's BuckleScript
3) Go- Gopher
4) Haskell- GHCJS<p>Other non-mainstream but compile-to-JS languages<p>1) PureScript
2) ELM
3) Clojure script (child comment)<p>... and of course... TypeScript! :)<p>It should be noted that while Scala.js isn't as popular as some of it's alternatives in "popular" programmer culture, the author is very focussed on correctness and I don't know of anybody who has ever used Scala.js for a project but dropped it. (Happy to be corrected)