Recs.
Updated
SpecsUpdate
Pros
Pro Compiles to Javascript
Scala.js (http://www.scala-js.org/) is a very mature compiler extension that allows to cross-compile Scala code to efficient Javascript. This allows you to use Scala on both client and server, reuse code between the two and have type-safe communication.
Pro Compiles to native code
Scala Native (http://www.scala-native.org/) is a young but very promising project that compiles Scala code to native code. In contrast to Scala on JVM this allows for very rapid startup times and puts local variables on the stack to reduce pressure on the garbage collector. Interfacing with C is relatively straight-forward.
Pro Type inference
Scala offers type inference, which, while giving the same safety as Java's type system, allows programmers to focus on the code itself, rather than on updating type annotations.
Pro Principled and clean language design
Scala is not a kitchen sink language. It's designed around a small number of powerful features, which nicely compose with each other. Therefore, contrary to common beliefs, it is in fact a simpler and cleaner language than Java or Kotlin, and it has much fewer surprises and inconsistencies than many other industry languages. Scala 3 will unify and simplify language even further.
Pro Powerful metaprogramming
Scala has powerful macros, and has Scala Meta. With these powerful tools you can run code at compile time to modify the compilation results.
Pro Expressive functional programming abstraction for reusable and safe code
Cons
Con Scala is not binary backward compatible
If you built a program against Version .X, you couldn't just run it against Version .Y, you'd have to recompile.
If you wanted to use a library compiled against Version .X in your app running on Version .Y, you canforget about it, you'd have to wait for a new version to be released.
Con Slow compilation
Scala compiler is slower than Java compiler if you count lines of code compiled per second. Some Scala constructs like macros or implicits may lead to terrible compile times if you're not careful. Use them sparingly. On the other hand, Scala is more expressive than Java, therefore you typically need less code to accomplish the same task, and shorter code leads to less time spent compiling. Additionally, there has been over 2x performance improvement of compiler performance since Scala 2.11, so if you tried Scala long time ago and compile speed was an issue for you, please try a modern version.
BTW Scala integration with Gradle is outdated by 3 years and still terrible in 2019. It is slow. But it is not Scala fault. If you want slow Scala compiler, use Gradle. If you don't, use another build system like Sbt or Mill, or help Gradle team modernize their integration with Scala.
Recommendations
Comments
Flagged Pros + Cons
Pro Compiles to JVM bytecode
Aside from Java itself, Scala is by far the most popular of the many JVM languages. If you're developing for Android, or a similar JVM-only platform, or otherwise need out-of-the-box cross-platform compatibility, but the performance of a compiled language, Scala is the way to go.