SlideShare une entreprise Scribd logo
1  sur  33
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 javac
1.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

Contenu connexe

Tendances

Scalar Types Hints
Scalar Types HintsScalar Types Hints
Scalar Types HintsDarkmira
 
Techday Arrow Group: Java 8
Techday Arrow Group: Java 8Techday Arrow Group: Java 8
Techday Arrow Group: Java 8Arrow Group
 
Cours VB 2012 seance 1
Cours VB 2012 seance 1Cours VB 2012 seance 1
Cours VB 2012 seance 1ISIG
 
Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Jean-Baptiste Vigneron
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoftdavrous
 
Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6Julien CROUZET
 
Enib cours c.a.i. web - séance #5 : scala play! framework
Enib   cours c.a.i. web - séance #5 : scala play! frameworkEnib   cours c.a.i. web - séance #5 : scala play! framework
Enib cours c.a.i. web - séance #5 : scala play! frameworkHoracio Gonzalez
 
Vbisigk
VbisigkVbisigk
VbisigkISIG
 
Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Mamadou Oury Ba
 
Kevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NETKevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NETMSDEVMTL
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de donnéesISIG
 
Développement de plug in sous eclipse
Développement de plug in sous eclipseDéveloppement de plug in sous eclipse
Développement de plug in sous eclipseISIG
 
Javascript pour le développeur Java
Javascript pour le développeur JavaJavascript pour le développeur Java
Javascript pour le développeur Javajollivetc
 
Visual studio
Visual studioVisual studio
Visual studioISIG
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScriptMicrosoft
 
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fêteC# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fêteFabrice JEAN-FRANCOIS
 

Tendances (20)

Scalar Types Hints
Scalar Types HintsScalar Types Hints
Scalar Types Hints
 
Techday Arrow Group: Java 8
Techday Arrow Group: Java 8Techday Arrow Group: Java 8
Techday Arrow Group: Java 8
 
Cours VB 2012 seance 1
Cours VB 2012 seance 1Cours VB 2012 seance 1
Cours VB 2012 seance 1
 
Cours JavaScript
Cours JavaScriptCours JavaScript
Cours JavaScript
 
Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoft
 
Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6
 
Formation VBA Excel
Formation VBA ExcelFormation VBA Excel
Formation VBA Excel
 
Devoxx France - Nouvelles du Front
Devoxx France - Nouvelles du FrontDevoxx France - Nouvelles du Front
Devoxx France - Nouvelles du Front
 
Enib cours c.a.i. web - séance #5 : scala play! framework
Enib   cours c.a.i. web - séance #5 : scala play! frameworkEnib   cours c.a.i. web - séance #5 : scala play! framework
Enib cours c.a.i. web - séance #5 : scala play! framework
 
Vbisigk
VbisigkVbisigk
Vbisigk
 
Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5Améliorations dans Java depuis la version 5
Améliorations dans Java depuis la version 5
 
Kevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NETKevin Avignon: Roslyn - La plateforme de compilation .NET
Kevin Avignon: Roslyn - La plateforme de compilation .NET
 
Change mind about JS
Change mind about JSChange mind about JS
Change mind about JS
 
Environnement de développement de bases de données
Environnement de développement de bases de donnéesEnvironnement de développement de bases de données
Environnement de développement de bases de données
 
Développement de plug in sous eclipse
Développement de plug in sous eclipseDéveloppement de plug in sous eclipse
Développement de plug in sous eclipse
 
Javascript pour le développeur Java
Javascript pour le développeur JavaJavascript pour le développeur Java
Javascript pour le développeur Java
 
Visual studio
Visual studioVisual studio
Visual studio
 
Introduction à JavaScript
Introduction à JavaScriptIntroduction à JavaScript
Introduction à JavaScript
 
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fêteC# 5 versus Java 8... Quand C++ 11 s'invite à la fête
C# 5 versus Java 8... Quand C++ 11 s'invite à la fête
 

En vedette

Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelleMICHRAFY MUSTAFA
 
Scala - La transformation numérique (Français)
Scala - La transformation numérique (Français)Scala - La transformation numérique (Français)
Scala - La transformation numérique (Français)SCALA
 
Insulinotherapie en 2013
Insulinotherapie en 2013Insulinotherapie en 2013
Insulinotherapie en 2013djamel bouema
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Alexis Seigneurin
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! frameworkBenoît Simard
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursIppon
 
Introduction à Play Framework 2
Introduction à Play Framework 2Introduction à Play Framework 2
Introduction à Play Framework 2Samy Dindane
 
Mof gobierno regional junin
Mof gobierno regional juninMof gobierno regional junin
Mof gobierno regional juninArchitect
 
Projet carrières en informatique
Projet carrières en informatiqueProjet carrières en informatique
Projet carrières en informatiquej-bastarache
 
Amélioration des délais d’accès aux soins pour les Canadiens : évaluation du ...
Amélioration des délais d’accès aux soins pour les Canadiens : évaluation du ...Amélioration des délais d’accès aux soins pour les Canadiens : évaluation du ...
Amélioration des délais d’accès aux soins pour les Canadiens : évaluation du ...tamingofthequeue
 
Leccion 06 ii_2011
Leccion 06 ii_2011Leccion 06 ii_2011
Leccion 06 ii_2011Ricardo
 
Programme du SPF du 05 avril 2012
Programme du SPF du 05 avril 2012Programme du SPF du 05 avril 2012
Programme du SPF du 05 avril 2012bsalim68
 
La educación superior en el siglo XXI ANUIES
 La educación superior en el siglo XXI ANUIES La educación superior en el siglo XXI ANUIES
La educación superior en el siglo XXI ANUIESLilia G. Torres Fernández
 

En vedette (20)

Scala : programmation fonctionnelle
Scala : programmation fonctionnelleScala : programmation fonctionnelle
Scala : programmation fonctionnelle
 
Scala - La transformation numérique (Français)
Scala - La transformation numérique (Français)Scala - La transformation numérique (Français)
Scala - La transformation numérique (Français)
 
Paralell collections in Scala
Paralell collections in ScalaParalell collections in Scala
Paralell collections in Scala
 
Insulinotherapie en 2013
Insulinotherapie en 2013Insulinotherapie en 2013
Insulinotherapie en 2013
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclair
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeurs
 
Introduction à Play Framework 2
Introduction à Play Framework 2Introduction à Play Framework 2
Introduction à Play Framework 2
 
Ils nous font confiance
Ils nous font confianceIls nous font confiance
Ils nous font confiance
 
Mof gobierno regional junin
Mof gobierno regional juninMof gobierno regional junin
Mof gobierno regional junin
 
Projet carrières en informatique
Projet carrières en informatiqueProjet carrières en informatique
Projet carrières en informatique
 
Les initiatives
Les initiativesLes initiatives
Les initiatives
 
Temas de equipos
Temas de equiposTemas de equipos
Temas de equipos
 
Amélioration des délais d’accès aux soins pour les Canadiens : évaluation du ...
Amélioration des délais d’accès aux soins pour les Canadiens : évaluation du ...Amélioration des délais d’accès aux soins pour les Canadiens : évaluation du ...
Amélioration des délais d’accès aux soins pour les Canadiens : évaluation du ...
 
Leccion 06 ii_2011
Leccion 06 ii_2011Leccion 06 ii_2011
Leccion 06 ii_2011
 
Programme du SPF du 05 avril 2012
Programme du SPF du 05 avril 2012Programme du SPF du 05 avril 2012
Programme du SPF du 05 avril 2012
 
La educación superior en el siglo XXI ANUIES
 La educación superior en el siglo XXI ANUIES La educación superior en el siglo XXI ANUIES
La educación superior en el siglo XXI ANUIES
 
Evaluacion de programas e instituciones
Evaluacion de programas e institucionesEvaluacion de programas e instituciones
Evaluacion de programas e instituciones
 
Art nouveau period
Art nouveau periodArt nouveau period
Art nouveau period
 

Similaire à Tour d’horizon de scala

.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?Rui Carvalho
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemeStéphane Traumat
 
Java uik-chap2-dev java
Java uik-chap2-dev javaJava uik-chap2-dev java
Java uik-chap2-dev javaAmel Morchdi
 
Alphorm.com Formation Big Data avec Apache Spark: Initiation
Alphorm.com Formation Big Data avec Apache Spark: InitiationAlphorm.com Formation Big Data avec Apache Spark: Initiation
Alphorm.com Formation Big Data avec Apache Spark: InitiationAlphorm
 
Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10Jean-Michel Doudoux
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1ATHMAN HAJ-HAMOU
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelleAssociation Agile Nantes
 
Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeformationobjetdirect
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro javaAmel Morchdi
 

Similaire à Tour d’horizon de scala (20)

Presentation Spring
Presentation SpringPresentation Spring
Presentation Spring
 
Introduction Kotlin
Introduction KotlinIntroduction Kotlin
Introduction Kotlin
 
Tutoriel java
Tutoriel javaTutoriel java
Tutoriel java
 
Programmation Java
Programmation JavaProgrammation Java
Programmation Java
 
.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?.Net pour le développeur Java - une source d'inspiration?
.Net pour le développeur Java - une source d'inspiration?
 
Présentation de JEE et de son écosysteme
Présentation de JEE et de son écosystemePrésentation de JEE et de son écosysteme
Présentation de JEE et de son écosysteme
 
Java 11 to 17 : What's new !?
Java 11 to 17 : What's new !?Java 11 to 17 : What's new !?
Java 11 to 17 : What's new !?
 
Java uik-chap2-dev java
Java uik-chap2-dev javaJava uik-chap2-dev java
Java uik-chap2-dev java
 
Nouveautés Java 9-10-11
Nouveautés Java 9-10-11Nouveautés Java 9-10-11
Nouveautés Java 9-10-11
 
gradle_lavajug
gradle_lavajuggradle_lavajug
gradle_lavajug
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
Alphorm.com Formation Big Data avec Apache Spark: Initiation
Alphorm.com Formation Big Data avec Apache Spark: InitiationAlphorm.com Formation Big Data avec Apache Spark: Initiation
Alphorm.com Formation Big Data avec Apache Spark: Initiation
 
JAVA Chapitre1
JAVA Chapitre1 JAVA Chapitre1
JAVA Chapitre1
 
Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10Voxxeddays lux 2018 apres java 8, java 9 et 10
Voxxeddays lux 2018 apres java 8, java 9 et 10
 
Introduction à Hibernate p.1
Introduction à Hibernate p.1Introduction à Hibernate p.1
Introduction à Hibernate p.1
 
Patrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnellePatrons de conception de la programmation fonctionnelle
Patrons de conception de la programmation fonctionnelle
 
Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonome
 
Java uik-chap1-intro java
Java uik-chap1-intro javaJava uik-chap1-intro java
Java uik-chap1-intro java
 
Alt.net spring.net
Alt.net spring.netAlt.net spring.net
Alt.net spring.net
 

Tour d’horizon de scala

  • 2. 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.
  • 3. 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 javac 1.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 »
  • 4. 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)
  • 5. 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
  • 7. 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.
  • 9. Les principaux concepts  Le langage permet de simplifier la syntaxe ◦ Le ; est optionnel ◦ Les () aussi ◦ Les . aussi  Exemple de syntaxes identiques
  • 10. 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 :
  • 11. 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 :
  • 12. 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 :
  • 13. Les principaux concepts Les Options  Fini les NullPointerException !!
  • 14. Les principaux concepts Les Object  Une intégration native du pattern Singleton  Voici une déclaration :  Et son utilisation :
  • 15. 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
  • 16. Les principaux concepts  Une intégration du pattern Factory
  • 17. 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 :
  • 18. Les principaux concepts Le Pattern Matching  La reconnaissance de motif est un outil puissant, ce n’est pas qu’un « switch vitaminé »
  • 19. Les principaux concepts Le Pattern Matching  Ou encore …
  • 20. 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.
  • 21. Les principaux concepts Les collections  Scala offre une API très puissante pour la gestion des collections.  Quelques exemples :
  • 22. 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.
  • 23. 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.
  • 24. Les principaux concepts Les tests  Compatible avec Junit
  • 25. 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.
  • 26. L’interaction avec Java Quelques exemples  Avec JPA …
  • 27. L’interaction avec Java Quelques exemples  Avec Spring MVC…
  • 28. L’interaction avec Java Quelques exemples  Une servlet …
  • 29. 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
  • 30. 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
  • 31. 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 ... ?
  • 32. 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.
  • 33. 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