why is scala the best?

Scala has the best of both worlds. It feels dynamic, but is strongly statically typed. Scala's compiler is really smart and uses type inference to its full extent. One thing you may not know about Scala is that it was originally developed at the Swiss university EPFL in an attempt to apply recent innovations in programming language research to a language that could gain traction in the mainstream, such as Java.

Evangelism has died down, to some extent, but usage is still strong and everyone recognises functional programming as a possible style in which to write their Scala applications. For a Java developer, learning a classic functional programming language like Haskell or OCaml is a lot harder than Scala. Scala enough to give you a preliminary idea of Scala's power and capabilities and whet your appetite for learning the language. With the superior functional programming idioms available to take advantage of multi-core CPU architectures, Scala has the right mix of the popular object-oriented paradigm.

In my opinion, for Scala to grow as a real Java alternative, given that Java 8 also has functional programming support, it needs to attract more and more Java developers. Some of the more complex features of the language (tuples, functions, macros, to name a few) ultimately make it easier for the developer to write better code and increase performance by programming in Scala. A recent tweet from a friend of mine noted that public interest in the Scala programming language seems to have stagnated or declined, which is consistent with my sense of the latest trends and zeitgeist. As a result, there are certainly code distinctions and paradigm shifts that can make early learning of Scala programming a bit more difficult, but the result is a much cleaner and well-organised language that is ultimately easier to use and increases productivity.

The popularity and use of Scala is growing rapidly, as evidenced by the increasing number of open positions for Scala developers. Yes, it may seem more complex to the Scala novice, but once you understand the concepts behind it, Scala code will seem much simpler than Java code. More recently, with Typed Actors and Reactive Streams, the Akka developer experience has changed to be much closer to the type checking experience expected in typical Scala programs. Java has an overhead problem because of all the extra stuff involved in creating a class with a main, but when writing Scala scripts, the Hello World program is one line with println( Hello World ).

This combination of features makes it possible to write Scala programs that are quite concise and elegant.