Slide 1

Slide 1 text

SCALA, MOINS D’1 HEURE POUR COMPRENDRE, APPRENDRE ET AIMER Speaker : Philippe Charrière - @k33g_org 1

Slide 2

Slide 2 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Bonjour Philippe Charrière @clever_cloud ! @k33g_org G @k33g I ❤JavaScript, I Golo

Slide 3

Slide 3 text

#JSC2017 @k33g_org SCALACESTCOMMEJS … OK, I ❤ Scala too

Slide 4

Slide 4 text

#JSC2017 @k33g_org SCALACESTCOMMEJS “Scala, ça ressemble à de l’ES2015 sans ;” _ Philippe Charrière … probablement lors d’un apéro

Slide 5

Slide 5 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Naissance du talk un pari avec le @MontpellierJug

Slide 6

Slide 6 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Format du talk un "mini cours", je vais aller un peu vite pour que l'on un max de notions une liste de bouts de code Objectif: avoir le nécessaire pour faire du Scala dès ce week end https://github.com/k33g/scala.is.the.new.javascript

Slide 7

Slide 7 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Avertissements Je ne suis pas un spécialiste Scala J’aime rendre les choses simples Un Scalafiste tuerait probablement mon Apprenons d’abord à ❤ ce langage … … la pureté on verra plus tard

Slide 8

Slide 8 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Plan - pré-requis - ide - 1er projet - exemples ré-utilisables

Slide 9

Slide 9 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Installation(s) - pré-requis: Java 8 JDK - https://www.scala-lang.org/download/ - 2 choix: SBT (Scala Build Tool) - à la ✋ (https://www.scala-lang.org/download/install.html) pour la version à la main ⚠ mettre à jour les variables d'environnement

Slide 10

Slide 10 text

#JSC2017 @k33g_org SCALACESTCOMMEJS SBT | Installation - OSX: brew install sbt | ou brew upgrade sbt - Windows: MSI Installer: http://www.scala-sbt.org/0.13/docs/ Installing-sbt-on-Windows.html - Linux: - Universal package: https://cocl.us/sbt01316zip - Debian package: https://dl.bintray.com/sbt/debian/ sbt-0.13.16.deb - RPM package: http://www.scala-sbt.org/0.13/docs/ Installing-sbt-on-Linux.html - Ubuntu: apt-get

Slide 11

Slide 11 text

#JSC2017 @k33g_org SCALACESTCOMMEJS IDE - IntelliJ (NetBeans, Eclipse) - VSCode - ext install scala (Iliya Tryapitsin) - couleur: https://marketplace.visualstudio.com/items? itemName=itryapitsin.Scala - ENSIME http://ensime.org

Slide 12

Slide 12 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Hello

Slide 13

Slide 13 text

#JSC2017 @k33g_org SCALACESTCOMMEJS 1er projet Scala mkdir hello cd hello mkdir -p src/{main,test}/{java,resources,scala} mkdir lib project . ├── lib ├── project ├── src │ ├── main │ │ ├── java │ │ ├── resources │ │ └── scala │ └── test │ ├── java │ ├── resources │ └── scala

Slide 14

Slide 14 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Hello . ├── lib ├── project ├── src │ └── main │ └── scala │ └── garden │ └──bots │ └──Hello.scala

Slide 15

Slide 15 text

#JSC2017 @k33g_org SCALACESTCOMMEJS `Hello.scala` package garden.bots object Hello extends App { println("Hello ") }

Slide 16

Slide 16 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Hello . ├── lib ├── project ├── src │ └── main │ └── scala │ └── garden │ └──bots │ └──Hello.scala ├── build.sbt

Slide 17

Slide 17 text

#JSC2017 @k33g_org SCALACESTCOMMEJS `build.sbt` name := "01-hello" version := "1.0" scalaVersion := "2.12.2"

Slide 18

Slide 18 text

#JSC2017 @k33g_org SCALACESTCOMMEJS `sbt run` [info] Resolving org.fusesource.jansi#jansi;1.4 ... [info] Done updating. [info] Set current project to 00-hello (in build file:/Volumes/data/Dropbox/SCALA-FACILE/ sandbox/00-hello/) [info] Updating {file:/Volumes/data/Dropbox/SCALA-FACILE/sandbox/00-hello/}root-00- hello... [info] Resolving jline#jline;2.14.3 ... [info] Done updating. [info] Compiling 1 Scala source to /Volumes/data/Dropbox/SCALA-FACILE/sandbox/00-hello/ target/scala-2.12/classes... [info] 'compiler-interface' not yet compiled for Scala 2.12.2. Compiling... [info] Compilation completed in 9.912 s [info] Running garden.bots.Hello Hello [success] Total time: 11 s, completed Aug 2, 2017 7:58:39 AM

Slide 19

Slide 19 text

#JSC2017 @k33g_org SCALACESTCOMMEJS "sbt-revolver" . ├── lib ├── project │ └── plugins.sbt ├── src │ └── main │ └── scala │ └── garden │ └──bots │ └──Hello.scala ├── build.sbt addSbtPlugin("io.spray" % "sbt-revolver" % "0.9.0")

Slide 20

Slide 20 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Hello sbt ~reStart package garden.bots object Hello extends App { println("Hello ") println("I ❤ Scala") } 2. Waiting for source changes... (press enter to interrupt) root-00-hello Hello root-00-hello I ❤ Scala root-00-hello ... finished with exit code 0

Slide 21

Slide 21 text

#JSC2017 @k33g_org SCALACESTCOMMEJS ENSIME

Slide 22

Slide 22 text

#JSC2017 @k33g_org SCALACESTCOMMEJS IDE: Ensime 1/3 http://ensime.org/build_tools/sbt/ mkdir ~/.sbt/0.13/plugins/ pico ~/.sbt/0.13/plugins/plugins.sbt addSbtPlugin("org.ensime" % "sbt-ensime" % "1.12.14")

Slide 23

Slide 23 text

#JSC2017 @k33g_org SCALACESTCOMMEJS IDE: Ensime 2/3 `/projet/build.properties`: sbt.version=0.13.15 ensime.sbt: import org.ensime.EnsimeKeys._ ensimeServerVersion in ThisBuild := "2.0.0-M4" ensimeProjectServerVersion in ThisBuild := "2.0.0-M4"

Slide 24

Slide 24 text

#JSC2017 @k33g_org SCALACESTCOMMEJS IDE: Ensime 3/3 run: sbt ensimeConfig Installer le plugin VS-Code: ext install scala-lsp

Slide 25

Slide 25 text

#JSC2017 @k33g_org SCALACESTCOMMEJS Lecture de code

Slide 26

Slide 26 text

#JSC2017 @k33g_org SCALACESTCOMMEJS MERCI