Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Présentation

Historique

1. Origine du langage

Scala est un langage de programmation à la fois fonctionnel et orienté objet. Créé en 2004 par Martin Odersky, il a été pensé pour développer des programmes concis, élégants et à typage sûr.

Le nom Scala correspond à “scalable language” (langage scalable) car il a été pensé pour s’adapter aux demandes des utilisateurs : on peut l’utiliser pour développer des projets de toute envergure, que ce soit un système informatique complexe ou un simple script.

2. Liens avec Java

Tout code Scala est compilé en bytecode Java et le résultat peut donc être exécuté dans la JVM. Il peut utiliser les librairies, hériter de classes, appeler des méthodes et accéder à tout code Java de manière transparente.

Scala réutilise même un certain nombre de types Java comme les types primitifs. Il ajoute des méthodes utilitaires comme la transformation d’un type vers un autre sans devoir passer par les fonctions de parsing de Java grâce à son système de conversions implicites qui sera présenté dans le chapitre Programmation fonctionnelle.

3. Programmation orientée objet

En Scala, la programmation orientée objet est poussée à son paroxysme car chaque...

Les avantages du Scala

1. Langage de haut niveau

Les programmes tendent toujours vers une complexité de plus en plus importante et la compréhension peut en pâtir. Scala permet de gérer cette complexité en proposant des niveaux d’abstraction élevés dans son design.

Pour cela, il met en place des fonctions utilitaires permettant d’avoir un code plus concis et compréhensible. Par exemple, les String sont considérées comme des séquences et il existe un large panel de fonctions associées permettant de simplifier et raccourcir le code.

De plus, comme expliqué plus tôt, en Scala, la plupart des fonctions respectent la transparence référentielle ce qui veut dire qu’on peut remplacer l’appel de la fonction par son résultat sans créer d’erreur. Les fonctions peuvent être composées et permettre ainsi de refactorer son code pour le rendre plus lisible.

Prenons par exemple une liste l et deux prédicats p1 et p2, des fonctions renvoyant un booléen. Vérifier qu’il existe un élément de l qui vérifie p1 ou un élément de l qui vérifie p2 peut s’écrire de deux façons différentes :

l.exists(p1) || l.exists(p2) 
l.exists(x => p1(x) || p2(x)) 

Ceci est possible car la méthode exists est une fonction pure, c’est-à-dire sans...

Installation

1. Installation de Java

a. Compatibilités des versions

Pour pouvoir utiliser Scala, il faut tout d’abord installer le JDK de Java. À partir des versions 2.12+, il faut opter pour la version 8 ou une version postérieure du JDK.

Dans ce livre, la version de Scala utilisée est la 2.12 et la version de Java minimale préconisée est la 8. Pour plus de détails sur la compatibilité entre le JDK et la version de Scala, voici un tableau récapitulant les dernières versions utilisables. 

Version du JDK

Version de Scala recommandée

13 - 14

2.13.3

2.12.11

12

2.13.3

2.12.11

11

2.13.3

2.12.11

2.11.12

8

2.13.3

2.12.11

2.11.12

2.10.7

Pour plus d’informations, rendez-vous sur la page de documentation de Scala à la rubrique JDK compatibility (https://docs.scala-lang.org/overviews/jdk-compatibility/overview.html).

b. Téléchargement du paquet

Sur le site d’Oracle (https://www.oracle.com/java/technologies/javase-downloads.html), les dernières versions de Java sont listées, notamment les deux qui nous intéressent Java SE 8u261 et Java SE 11 (LTS).

Il suffit de télécharger le JDK grâce au bouton dédié et choisir l’installateur ou le paquet correspondant à votre système d’exploitation.

2. Installation de Scala

Pour installer Scala, il existe deux grandes méthodes :...

Scala REPL

La console REPL (Read-Eval-Print Loop) est un interpréteur disponible par défaut avec Scala, qu’importe le mode d’installation. Dans cet ouvrage, les lignes de code présentées proviennent de cette console sauf si un autre médium est spécifié.

Pour commencer une session, il suffit de lancer la commande scala depuis un terminal de commandes.

> scala 
Welcome to Scala 2.13.1 (OpenJDK 64-Bit Server VM, Java 13.0.2). 
Type in expressions for evaluation. Or try :help. 
 
scala> 

Pour chaque expression tapée, le code est compilé et exécuté dans un template pour renvoyer le résultat attendu.

scala> 1 + 2 
res0: Int = 3 

On peut également définir des variables, des classes, importer des dépendances et faire tout ce qui est possible dans un projet classique.

scala> val x = 12 
x: Int = 12 
 
scala> case class Test(nom: String) 
defined class Test 
 
scala> import scala.util.Random 
import scala.util.Random 

Pour plus de lisibilité, le préfixe scala> sera supprimé et le résultat sera précédé de //.

Random.nextInt(x) 
// res1: Int = 9 

Premier projet Scala

1. Bonjour le monde

Prenons comme exemple le classique “Bonjour le monde” comme premier projet.

object Bonjour { 
 def main(args: Array[String]): Unit = { 
   println("Bonjour le monde !") 
 } 
} 

Comme en Java, on utilise une fonction main qui prend en entrée les arguments de la ligne de commande. La grande différence réside dans la structure englobante qui n’est pas une classe mais un objet. Comme on le verra plus tard, un objet est à la fois une classe et une instance de cette même classe qui est créée lors du premier appel.

2. Compiler l’application

Pour compiler cet exemple, on utilise la commande scalac. Pour cela, on écrit ce code dans un fichier Bonjour.scala et on le passe en argument à la commande. Pour lancer ce programme, on utilise la commande suivante dans un terminal :

$ scalac Bonjour.scala 

La commande scalac, tout comme la commande javac, génère deux fichiers :

  • Bonjour$.class

  • Bonjour.class

Le deuxième fichier contient la classe exécutable avec la commande scala.

3. Exécuter l’application

Une fois que le programme est compilé, il suffit de le lancer avec la commande scala.

$ scala Bonjour 
Bonjour le monde ! 

On peut spécifier le chemin avec l’option -classpath puis le nom du programme à lancer.

$ scala -classpath...