scala
56 Programmez!
<
Janvier 2015
années de R&D dans le domaine de la gestion de la mémoire et de la
concurrence. Un programme écrit en Scala peut être packagé dans un
fichier .jar, .war, .ear ou même un script. Il est possible alors de les inté-
grer dans un batch, des applications sur Android, une application Web
ou dans un script d’exploitation.
Étant sur la JVM, Scala bénéficie de l’inépuisable liste des bibliothèques
Java, couvrant ainsi un large panel de besoins. Les usines logicielles
Java sont aussi compatibles avec Scala.
Rétro-compatibilité des binaires
Scala est un langage qui comporte beaucoup de fonctionnalités. Pour y
parvenir, de nombreuses modifications ont été apportées au travers des
années, au prix de certaines incompatibilités entre versions. À la dif-
férence de Java qui garantit une rétrocompatibilité dans ses change-
ments de versions, la communauté autour de Scala a fait le choix de
s’autoriser quelques changements.
Aujourd’hui, il existe deux compilateurs. Le premier est maintenu par la
société Typesafe, le second par la communauté Typelevel. Nous voilà
confrontés au même type de séparation entre les distributions Debian et
Ubuntu. Cela n’entame en rien leur popularité, bien au contraire !
Typesafe fournit une version stable du langage. Typelevel assure que sa
version du langage sera plus riche que celle fournie par Typesafe, tout
en restant compatible. Ainsi, les “early-adopters” de ce compilateur
pourront profiter des dernières fonctionnalités et faire vivre le langage.
Scala REPL & SBT
Dans l’idée de faciliter le travail quotidien des développeurs, Scala
apporte dans sa distribution un REPL (Read-Eval-Print-Loop). En lançant
dans un terminal la commande “scala”, un environnement d’évaluation
est lancé. Il permet au programmeur d’essayer le langage, sans avoir
besoin de créer un projet, un test ou une classe Main. Le terminal éval-
ue ligne par ligne ce qu’on lui fournit, offrant un retour visuel immédiat.
C’est idéal pour la découverte, le prototypage et la création de scripts.
SBT, pour Simple Build Tool, est un outil de build pour la JVM. Il est écrit
en Scala et est la plateforme privilégiée pour les projets en Scala. Sa
DSL de configuration peut laisser un néophyte perplexe. Son avantage
évident est d’être un script compilé. Cela permet d’être guidé par les
types lors de son utilisation.
Dans le même esprit, SBT est un REPL. C’est d’ailleurs pour cela que la
page d’accueil du site de SBT affiche maintenant fièrement “Interactive
Build Tool”. Une fois lancé, il est possible de lancer des tâches clas-
siques comme “compile”, “clean” et “test”. Les temps de compilation de
Scala étant connus pour être importants, le fait de disposer d’un REPL
est un gain considérable en phase de développement. Tous les caches
du compilateur restent chauds, assurant une compilation incrémentale
extrêmement efficace. C’est aussi idéal pour le TDD, en ajoutant un sim-
ple ‘~’ devant une commande, elle est exécutée à chaque changement
de fichiers sources. Donc utiliser ‘~test’ permet de lancer toutes la série
de tests à chaque changement de fichiers.
Une nouvelle gamme de bibliothèques pointues
Dans les domaines des applications distribuées, de systèmes haute-
ment concurrents et de hautes performances, de plus en plus de frame-
works et d’applications viennent de la communauté Scala.
Gatling
On peut citer Gatling, un outil de stress d’applications permettant de
simuler une forte activité sur les serveurs. L’outil fournit ensuite des rap-
ports sur la qualité de réponses des services. Gatling repose sur la
richesse du langage pour fournir une DSL décrivant facilement des scé-
narios complexes de charge.
Apache Spark
Apache Spark est un outil distribué de traitement et d’agrégation de
données. Écrit en Scala, il offre la possibilité de lire en streaming, filtrer
et transformer de très gros volumes de données, avec une syntaxe
claire et efficace. Il s’interface aussi parfaitement avec Apache Hadoop.
Akka
Akka est un autre framework qui rend populaire Scala. Son utilisation du
paradigme acteur permet de bâtir sereinement des systèmes distribués,
concurrents et hautement disponibles. Un acteur est à la frontière entre
un objet et une fonction. Il communique en échangeant des messages
immuables avec d’autres acteurs. Cela correspond parfaitement à la
philosophie du langage.
Ressources
La communauté autour de Scala est de plus en plus vivante et déborde
d’envies de partager son intérêt pour cet écosystème. Paris, Nice et Lyon
accueillent régulièrement un Scala User Group. Les sujets sont variés, du
niveau débutant au plus expert, chacun peut y trouver un intérêt. Scala
possède aussi sa propre conférence à Paris, Scala.IO. Cette année a eu
lieu la seconde édition. Il s’agit de deux jours de conférence sur Scala et
plus généralement des langages fonctionnels, des problématiques des
systèmes distribués et hautement scalables.
Scaladays est une conférence annuelle organisée par Typesafe. Les ses-
sions sont visibles dès aujourd’hui sur le site Parleys.
Le site de cours en ligne gratuit héberge deux cours en Scala, Functionnal
Programming Principale in Scala et Principles of Reactive Programming.
Les deux cours sont menés par Typesafe et l’École Fédérale
Polytechnique de Lausannes avec Martin Odersky en personne.
Scalacourses est un autre site Web permettant de se former et se ren-
seigner sur ce langage et sa communauté.
Conclusion
Dans les tâches quotidiennes, Scala est un langage peu verbeux, qui per-
met de construire simplement des systèmes robustes et de fournir des
réponses simples à des problématiques complexes. Cependant, Scala
implique maîtrise, rigueur et patience.
Ce langage est à conseiller à une population de développeurs qui a envie
d’apprendre, de s’améliorer et qui aime se challenger. Un programmeur
provenant du monde Java connaîtra dans un premier temps un réel plaisir
à programmer avec Scala. Tout ce qui était verbeux ou perfectible en
Java devient immédiatement possible et rapide. Mais, il se heurtera rapi-
dement à une nouvelle façon de penser avec l’approche fonctionnelle. Ce
n’est alors plus le langage qui devient complexe, mais ce nouveau
paradigme. Penser immuable, fonction et récursif demande du temps.
Une fois cette barrière franchie, s’offre alors au développeur le meilleur
des deux mondes. Il permet de programmer dans les deux styles, laissant
le choix à l’utilisateur de la meilleure solution pour son problème.
La programmation fonctionnelle est plus expressive. Dans un style plus
déclaratif qu’une programmation impérative, elle facilite la maintenance,
l’évolution et la réutilisation du code.
Pour croître et conquérir le monde, le SI de nos entreprises doit aujour-
d’hui répondre rapidement à des problématiques complexes. Les sys-
tèmes distribués, accessibles en 24/7, ainsi que les calculs parallèles sont
devenus la nouvelle norme. L’immuabilité avec la programmation fonc-
tionnelle aide à raisonner dans ces environnements.
La qualité des bibliothèques de l’écosystème Scala en fait aujourd’hui un
langage mature et prêt pour le monde de l’entreprise. Des grands acteurs
de l’économie du Web comme Twitter, Netflix ou Linkedin ont fait le pari
de travailler avec Scala.
u