The Future represents the result of an asynchronous computation that may or may not be available yet. When we create a new Future, Scala spawns a new thread and executes its code. Once the execution has finished, the result of the computation (value or exception) will be assigned to the Future. While there will always be use cases where high-concurrency reactive architectures or purely functional programming are the best tool for the job, I hope that in the future developers will be able to get into the Scala language easily and simply, and only have to learn those more advanced techniques when they need to.
I often describe it as the result of grabbing Scala and doing an intense cleanup of features that aren't really needed in most situations and that often complicate things more than they help (like implicit) and removing some syntax freedom in general, while keeping the beautiful features that Scala brings to the table. A recent tweet from a friend of mine pointed out how public interest in the Scala programming language seems to have stagnated or waned, which matches my sense of the latest trends and zeitgeist. It is worth noting that Scala has the potential to also attract developers who do not program in Java, but come from a different background, such as the aforementioned Python and Ruby. A large part of the Scala community only uses Scala because it needs to interoperate with Spark in some way.
Scala runs on the Java platform, so I have no problem with it, unlike the cultists who use RoR, and I actually plan to try Scala. Functional programming done a la Scala is certainly advantageous for the competent software engineer, but moving from Java to Scala requires a significant commitment and a greater degree of understanding about how to program, in my opinion. This blog post will try to explain why I think this has happened, where Scala is now, and what the future holds for the Scala community. But at the same time, going into the scala subreddit to ask if scala is worth learning is a bit like asking the Corvette Appreciation Association if a Corvette is a great car - it's not necessarily the most unbiased of opinions.
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. More recently, with Typed Actors and Reactive Streams, the Akka developer experience has moved much closer to the type checking experience you would expect in typical Scala programs. However, there is no doubt that pushing the limits of Scala syntax using domain-specific operators and languages was one of the big points of interest for early Scala. However, Scala opened my mind and showed me how many powerful features a language can have in the JVM, and also taught me a lot about functional programming.