The Scala Programming Language
Scala combines object-oriented and functional programming in one concise, high-level language. Scala’s static types help avoid bugs in complex applications, and its JVM and JavaScript runtimes let you build high-performance systems with easy access to huge ecosystems of libraries.
Author
Seamless Java Interop
Scala runs on the JVM, so Java and Scala stacks can be freely mixed for totally seamless integration.
Type Inference
So the type system doesn’t feel so static. Don’t work for the type system. Let the type system work for you!
Concurrency & Distribution
Use data-parallel operations on collections, use actors for concurrency and distribution, or futures for asynchronous programming.
Traits
Combine the flexibility of Java-style interfaces with the power of classes. Think principled multiple-inheritance.
Pattern Matching
Think “switch” on steroids. Match against class hierarchies, sequences, and more.
Higher-order functions
Functions are first-class objects. Compose them with guaranteed type safety. Use them anywhere, pass them to anything.
Official scala-lang.org