Scala, a higher level language on the JVM

Created by the LAMP group at the Ecole Polytechnique Fédérale de Lausane (EPFL), led by Professor Martin Odersky, Scala is a universal programming language designed to allow a simple and concise code. It is close to Java with features from various other languages but also brings innovations and simplifications, which is reminiscent of JavaScript. This translates into a slower compilation.
It is inspired by object-oriented as well as functional programming languages. According to the authors, the Scala code is two to three times more concise than the equivalent code in Java. But it is also possible to write code as unreadable as Perl. As Perl moreover, it allows to do the same thing in very different ways.
The code may be compiled to Java or .Net bytecode and it is compatible with theirs respective runtime.

The scala word is short for SCAlable LAnguage and means stairs in Italian, which symbolizes programming by steps.
The compiler is licensed under BSD.

Scala programming language

Features of Scala

You should know that many elements of language such as for and return do not behave as we used to in previous languages​​.

Syntax and constructs:

More abilities:

Sample code, displaying "Hello World!":

object HelloWorld {
    def main(args: Array[String]) {
      println("Hello World!")
    }
}

Defining a class:

class car(speed:Integer, name:String) {
   ... body of the constructor and the class ...
}

Why use Scala?

Scala facilitates the gradual evolution of the programs over time.
Scala code can easily interface with existing Java code. It is compiled into Java bytecode. We can use both languages in a single program, Scala providing the advantages of being more concise.
Scala allows you to easily process XML documents.

The social site Twitter has left the Ruby language for backend and implemented its services in Scala, that to take advantage of the scalable nature of the language. The site is gradually increasing its audience and offer new services over time, hence the need for a language that facilitates the expansion of programs without rewriting.

And, why not use scala?

Among the drawbacks, a very long time even for compilation of small programs, the complexity of the syntax, a poor documentation, going from a library to another involves relearning the role of operators.
One must be specialist of Scala to use it.

Tools and documents