Download - Tour d’horizon de scala
Tour d’horizon de SCALA
Sommaire
Un peu d’histoire …
Scala en est où ?
Scala en entreprise
Les principaux concepts
L’interaction avec Java
Et l’environnement de travail …
Pourquoi utiliser Scala ?
Avis et références.
Un peu d’histoire …
Scala a été créé en 2003 par Martin Odersky, professeur à l’Ecole Polytechnique de Lausanne.
Il a collaboré à la création du compilateur javac1.3 et est à l’origine des Generics de Java 5.
Pour lui, Scala se devait d’être pleinement compatible avec la JVM avec une syntaxe élégante
Scala vient de « Scalable Language »
Un peu d’histoire …
Martin Odersky a créé la société Typesafe qui a pour
but la promotion du langage.
Cette société repose, en plus d’une offre de conseil, sur
ScalaIDE (plugin eclipse), Play! (Framework web) et
Akka (framework pour la programmation concurrente)
Scala en est où ?« I can honestly say if someone had shown me the Programming Scala book in
2003 I'd probably have never created Groovy. »
James Strachan
Scala en entreprise …
Les principaux concepts Scala est multi-paradigme. C’est un langage pur Objet supportant
une approche fonctionnelle.
Il est statiquement typé. De part son inférence de type, on dit avec humour qu’il est dynamique statiquement typé.
Tout est objet, tout est valeur (même les fonctions ! )
L’immuabilité est un concept central.
Tout est public par défaut. Le mot clé public n’existe pas.
La version 2.10 permet la compilation en Bytecode par le compilateur de la plateforme JVM (contrairement aux anciennes versions qui utilisaient un compilateur bytecode maison)
La richesse de l’API Java est utilisable par Scala.
Les principaux concepts
Les principaux concepts
Le langage permet de simplifier la syntaxe
◦ Le ; est optionnel
◦ Les () aussi
◦ Les . aussi
Exemple de syntaxes identiques
Les principaux concepts
Les attributs et Paramètres
Les attributs et paramètres
Le mot clé var
◦ Déclaration d’un attribut / paramètre modifiable
◦ ex :
Le mot clé val
◦ Déclaration d’un attribut / paramètre immuable
◦ ex :
Les principaux concepts
Les Classes La déclaration
◦ Et ça suffit !!!!!!
◦ Le constructeur par défaut ainsi que les accesseurs sont
implicites.
Mais l’encapsulation là dedans ?
◦ Si un jour un setter a besoin d’être explicité il pourra être fait
sans modification des appels existants sur cet attribut.
◦ Pour des besoins de compatibilité avec des API
Java, comme JPA par exemple qui attendent un getVariable
il est possible de dire à Scala de le générer comme ici :
Les principaux concepts
Les méthodes Déclaration
Une méthode renvoie systématique une valeur
Il n’y a pas de mot clé return comme en Java
C’est le résultat de la dernière instruction qui est renvoyé.
Ici, une méthode qui additionne 2 entiers :
Les principaux concepts
Les Options Fini les NullPointerException !!
Les principaux concepts
Les Object
Une intégration native du pattern Singleton
Voici une déclaration :
Et son utilisation :
Les principaux concepts
Les traits Un trait est une sorte d’interface (le mot clé interface n’existe
pas en Scala)
Il peut contenir une implémentation
L’héritage multiple est possible
Les principaux concepts
Une intégration du pattern Factory
Les principaux concepts
Les Compagnons
C’est l’utilisation d’une factory comme dans le slide précédent
mais cette fois le nom est identique.
Ce qui permet l’écriture simple et intuitive :
Les principaux concepts
Le Pattern Matching
La reconnaissance de motif est un outil puissant, ce n’est pas
qu’un « switch vitaminé »
Les principaux concepts
Le Pattern Matching
Ou encore …
Les principaux concepts
Les case classes
Immuable : Une fois la classe instancié, l’objet ne plus être modifié
L’objet compagnon est implicite, pas besoin de « new »
Le constructeur est implicite
Les méthodes equals, toString et hashcode sont implicites
Peut se décomposer avec le pattern matching.
Les principaux concepts
Les collections
Scala offre une API très puissante pour la gestion des collections.
Quelques exemples :
Les principaux concepts
Les fonctions de haut niveau Proche du concept des lambda expression de Java 8
Exemple de mise en œuvre. Exécuter une fonction passée en
paramètre de manière périodique.
Les principaux concepts
Les acteurs API permettant de réaliser de la programmation concurrente et
distribuée, offrant facilité de mise en œuvre et de très bonnes
performances
C’est un portage d’Erlang, on y retrouve même la notion de
supervision, robustesse garantie.
Les principaux concepts
Les tests
Compatible avec Junit
L’interaction avec Java
Scala fonctionne sur la JVM, il est complètement
interopérable.
Vous n’êtes donc pas obligé de réécrire votre SI pour
commencer.
Scala est compilé en bytecode java.
Vous pouvez appeler une librairie Java depuis Scala
Scala peut être appelé directement depuis du Java.
L’interaction avec Java
Quelques exemples
Avec JPA …
L’interaction avec Java
Quelques exemples
Avec Spring MVC…
L’interaction avec Java
Quelques exemples
Une servlet …
L’interaction avec Java
Quelques exemples Maven…
Utilisation de l’archetype simple (bientôt un web ?)
◦ GroupId= org.scala-tools.archetypes
◦ ArtifactId=scala-archetype-simple
Et l’environnement de travail
dans tout ça …
Les IDE principaux ont des plugins très bien intégrés pour
Scala.
Pour les puristes, il existe un plugin pour vim
Pourquoi utiliser Scala ?
Syntaxe fluide et productive
Le pattern matching, outil extrêment puissant
La manipulation des collections
Les fonctions anonymes
Permet de capitaliser sur ce qui a déjà été réalisé en Java
Scala est-il déjà ce que Java 10 devrait être ... ?
Un dernier avis …
Attention tout de même à l’utilisation d’une syntaxe trop concise
qui peut rendre plus difficile l’assimilation du code par un pair.
Tentation de faire du Java avec Scala et de ne jamais exploiter la
richesse du fonctionnel.
Plus en detail …
Apprendre Scala en ligne : https://www.coursera.org/course/progfun
Scala Officiel : http://www.scala-lang.org/
Excellent Blog : http://danielwestheide.com/scala/neophytes.html
Pour débuter : http://www.siteduzero.com/informatique/tutoriels/apprenez-la-
programmation-avec-scala