Some people say that Scala is like an overhauled version of Java – and they might be just right. That’s because Scala is also object-oriented, compiles to Java bytecode to run on the JVM, and it’s even interoperable with Java, which means that it can use its libraries. Where it differs from Java is in the fact that Scala incorporates features of functional programming, it’s more concise, and has a syntax that’s easier to read.
Scala is a strong statically typed general-purpose programming language which supports both object-oriented programming and functional programming. Designed to be concise, many of Scala's design decisions are aimed to address criticisms of Java.