SPRECHEN SIE SCALA? Heiko Seeberger, WeigleWilczek rheinjug Düsseldorf, 18.03.2010 WARUM SCALA? WARUM SCALA? Which Programming Language would you use now on top of JVM, except Java? - Scala. James Gosling WARUM SCALA? Scala, it must be stated, is the current heir apparent to the Java throne. Charles Nutter WARUM SCALA? I can honestly say if someone had shown me ... Scala ... back in 2003 I'd probably have never created Groovy. James Strachan a eift ger us obje kt-fu nkti ona l sta h ty tisc iert pis leich tgew icht ig WAS IST SCALA? ragm p sch ati au uck sdr ark sst knap p un d pr äzis inte rope e rabe l mit Java Seit 2003 Version 2.8 AUSGEREIFT OBJEKT-FUNKTIONAL Any AnyVal AnyRef Int Unit ScalaObject Long scala.* val scala.* ref java.* ref Null Nothing ALLES IST EIN OBJEKT Keine Seiteneffekte 1, 2, 3 f a, b, c Funktionen höherer Ordnung FUNKTIONALE PROGRAMMIERUNG STATISCH TYPISIERT Semicolon Inference Type Inference Infix Operator Notation Implicit Conversions LEICHTGEWICHTIG AUSDRUCKSSTARK "Calling Person.toString" when { "first and last name are not-empty" should { "return first name blank last name" in { val person = new Person("John", "Doe") person.toString should be ("John Doe") } } } KNAPP UND PRÄZISE public class Person { private final String firstName; private final String lastName; public class Person(val firstName: String, Person(String firstName, String lastName) { val lastName: String) this.firstName = firstName; this.lastName = lastName; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } } // Java PRAGMATISCH INTEROPERABEL MIT JAVA scala> import org.apache.log4j._ import org.apache.log4j._ scala> val testLogger = Logger getLogger "test" testLogger: org.apache.log4j.Logger = ... Wichtig! LIVE DEMO: HELLO WORLD Kl sen as Klas sen- Para m eter M den tho e LIVE DEMO: OO-GRUNDLAGEN Defa u lt-Ar gum lder Fe Com pan ente ion Obje cts Te We st- eug rkz LIVE DEMO: SCALATEST DSL -Bei spie l Für Libr a ry-E ntw icklu ng LIVE DEMO: IMPLICIT CONVERSIONS rba alie che pra re S Sk Type Infe renc e O ren ato per Unv erän derl iche Obje kte LIVE DEMO: FUNKTIONALE LISTE nen g ktio nun Fun Ord rer öhe h Funk tion slite rale unk F nen tio Meh rfac hver erbu ng r icht ig ge mac ht LIVE DEMO: TRAITS odifi M ns atio c abe ack St Upp er B o und s Gen cs r eri cht i cht ma g ge i Low e r Bo und s LIVE DEMO: TYP-PARAMETER var In anz i Kov aria nz trav Kon anz ari Wil card d tern Pat Swit ch rich tig g ema c ht Co ant nst tern Pat LIVE DEMO: PATTERN MATCHING Vari a ble Patt e ruc st ern att or P t Seq u rn ence Con Patt ern in d rale ite L che pra er S LIVE DEMO: XML-SUPPORT XPa th-A bfra gen FRAGEN / DISKUSSION DANKE seeberger@weiglewilczek.com XING Scala-Gruppe