tour d’horizon de scala

33
Tour d’horizon de SCALA

Upload: benoit-wilcox

Post on 03-Jul-2015

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Tour d’horizon de scala

Tour d’horizon de SCALA

Page 2: 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.

Page 3: Tour d’horizon de scala

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 »

Page 4: Tour d’horizon de scala

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)

Page 5: Tour d’horizon de scala

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

Page 6: Tour d’horizon de scala

Scala en entreprise …

Page 7: Tour d’horizon de scala

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.

Page 8: Tour d’horizon de scala

Les principaux concepts

Page 9: Tour d’horizon de scala

Les principaux concepts

Le langage permet de simplifier la syntaxe

◦ Le ; est optionnel

◦ Les () aussi

◦ Les . aussi

Exemple de syntaxes identiques

Page 10: Tour d’horizon de scala

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 :

Page 11: Tour d’horizon de scala

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 :

Page 12: Tour d’horizon de scala

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 :

Page 13: Tour d’horizon de scala

Les principaux concepts

Les Options Fini les NullPointerException !!

Page 14: Tour d’horizon de scala

Les principaux concepts

Les Object

Une intégration native du pattern Singleton

Voici une déclaration :

Et son utilisation :

Page 15: Tour d’horizon de scala

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

Page 16: Tour d’horizon de scala

Les principaux concepts

Une intégration du pattern Factory

Page 17: Tour d’horizon de scala

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 :

Page 18: Tour d’horizon de scala

Les principaux concepts

Le Pattern Matching

La reconnaissance de motif est un outil puissant, ce n’est pas

qu’un « switch vitaminé »

Page 19: Tour d’horizon de scala

Les principaux concepts

Le Pattern Matching

Ou encore …

Page 20: Tour d’horizon de scala

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.

Page 21: Tour d’horizon de scala

Les principaux concepts

Les collections

Scala offre une API très puissante pour la gestion des collections.

Quelques exemples :

Page 22: Tour d’horizon de scala

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.

Page 23: Tour d’horizon de scala

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.

Page 24: Tour d’horizon de scala

Les principaux concepts

Les tests

Compatible avec Junit

Page 25: Tour d’horizon de scala

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.

Page 26: Tour d’horizon de scala

L’interaction avec Java

Quelques exemples

Avec JPA …

Page 27: Tour d’horizon de scala

L’interaction avec Java

Quelques exemples

Avec Spring MVC…

Page 28: Tour d’horizon de scala

L’interaction avec Java

Quelques exemples

Une servlet …

Page 29: Tour d’horizon de scala

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

Page 30: Tour d’horizon de scala

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

Page 31: Tour d’horizon de scala

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 ... ?

Page 32: Tour d’horizon de scala

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.