Scala, un langage de plus haut niveau sur la machine virtuelle Java

Créé par le LAMP group à l' Ecole Polytechnique Fédérale de Lausane (EPFL), conduit par le professeur Martin Odersky, Scala est un langage de programmation universel conçu pour permettre un code concis et simple. Il est proche de Java avec des emprunts à divers autres langages mais apporte aussi des innovations et des simplification, ce qui fait penser à JavaScript. Cela se traduit par un compilation plus lente.
Il s'inspire de la programmation orienté-objet autant que des langages fonctionnels. Selon les auteurs, le code Scala est de deux à trois fois plus concis que le code équivalent en Java. Mais il est aussi possible d'écrire du code aussi illisible que celui de Perl. Comme Perl d'ailleurs, il permet de faire la même chose de façons très différentes.
Le code peut être compilé en bytecode Java ou .NET et il est compatible avec leurs runtimes respectifs. En février 2015, Scala.js le compilateur en JavaScript est déclaré utilisable en production.

Le mot scala est un raccourci pour SCAlable LAnguage et signifie aussi escalier en italien, ce qui symbolise la programmation par paliers.

Le compilateur scalac est sous licence BSD. Depuis 2014, les principaux développeurs du compilateurs travaillent sur un nouveau langage, Dotty, version simplifiée de Scala, qui doit permettre de supprimer des problèmes difficiles à résoudre pour perfectionner ce compilateur.

Le language de programmation Scala

Le 14 mars 2017, est annoncé Scala Native. (Article en anglais). Il s'agit de remplacer la machine virtuelle Java par LLVM et donc de créer des binaires exécutables. Ce n'est réellement utilisable en production toutefois que si cela s'accompagne d'une bibliothèque suffisante.

Caractéristiques de Scala

Il faut savoir que de nombreux éléments du langage comme par exemple return ou for ne fonctionnent pas comme on en à l'habitude dans les précédents langages.

Syntaxe et constructs:

Autres possibilités:

Exemple de code en Scala, afficher "Salut le Monde!":

object HelloWorld {
  def main(args: Array[String]) {
    println("Salut le Monde!")
  }
}

Définir une classe:

class voiture(vitesse:Integer, nom:String) {
   ... corps du constructeur et de la classe ...
}

Pourquoi utiliser Scala?

Scala facilite l'évolution progressive des programmes dans le temps.
Le code Scala peut facilement s'interfacer avec du code Java prééxistant. Il est en fait compilé en bytecode Java. On peut donc utiliser les deux langages dans un même programme, Scala offrant notamment l'avantage d'une plus grande concision.
Scala permet de traiter facilement des documents XML.

Le site social Twitter a abandonné le langage Ruby pour le backend et programmé ses services en Scala, cela pour profiter de la nature évolutive du langage. Le site augmente progressivement son audience et offre de nouveaux services avec le temps, d'où le besoin d'un langage qui facilite l'extension des programmes sans les réécrire.

Et pourquoi ne pas utiliser Scala?

Parmi les inconvénients, un temps de compilation très long même pour de petits programmes, la complexité de la syntaxe, une pauvre documentation, passer d'une bibliothèque à l'autre suppose réapprendre le role des opérateurs.
Il faut être spécialiste de Scala pour l'utiliser.

Outils et documents