RheinJUG 2010 - Sprechen Sie Scala?
-
Upload
heiko-seeberger -
Category
Technology
-
view
616 -
download
0
description
Transcript of RheinJUG 2010 - Sprechen Sie Scala?
![Page 1: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/1.jpg)
SPRECHEN SIE SCALA?Heiko Seeberger, WeigleWilczekrheinjug Düsseldorf, 18.03.2010
![Page 2: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/2.jpg)
WARUM SCALA?
![Page 3: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/3.jpg)
WARUM SCALA?
Which Programming Language would you usenow on top of JVM, except Java? - Scala.
James Gosling
![Page 4: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/4.jpg)
WARUM SCALA?
Scala, it must be stated, is the currentheir apparent to the Java throne.
Charles Nutter
![Page 5: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/5.jpg)
WARUM SCALA?
I can honestly say if someone had shown me ... Scala ... back in 2003 I'd probably have never created Groovy.
James Strachan
![Page 6: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/6.jpg)
WAS IST SCALA?
ausgereiftobjekt-funktional statisch typisiert
leichtgewichtig
knapp und präzise
ausdrucksstark
pragmatischinteroperabel mit Java
![Page 7: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/7.jpg)
AUSGEREIFT
Seit 2003
Version 2.8
![Page 8: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/8.jpg)
OBJEKT-FUNKTIONAL
![Page 9: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/9.jpg)
Any
AnyVal AnyRef
ScalaObject
java.* refscala.* ref
Int
Long
Unit
scala.* val
Null
Nothing
ALLES IST EIN OBJEKT
![Page 10: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/10.jpg)
1, 2, 3 a, b, cf
FUNKTIONALE PROGRAMMIERUNG
Keine Seiteneffekte
Funktionen höherer Ordnung
![Page 11: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/11.jpg)
STATISCH TYPISIERT
![Page 12: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/12.jpg)
LEICHTGEWICHTIG
Semicolon Inference Type Inference
Implicit ConversionsInfix Operator Notation
![Page 13: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/13.jpg)
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") } }}
![Page 14: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/14.jpg)
KNAPP UND PRÄZISE
public class Person { // Java
private final String firstName; private final String lastName;
public Person(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; }
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }}
class Person(val firstName: String, val lastName: String)
![Page 15: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/15.jpg)
PRAGMATISCH
![Page 16: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/16.jpg)
INTEROPERABEL MIT JAVA
scala> import org.apache.log4j._import org.apache.log4j._
scala> val testLogger = Logger getLogger "test"testLogger: org.apache.log4j.Logger = ...
Wichtig!
![Page 17: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/17.jpg)
LIVE DEMO: HELLO WORLD
![Page 18: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/18.jpg)
LIVE DEMO: OO-GRUNDLAGEN
KlassenKlassen-Parameter Methoden
Default-ArgumenteFelder
Companion Objects
![Page 19: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/19.jpg)
LIVE DEMO: SCALATEST
Test-Werkzeug
DSL-Beispiel
![Page 20: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/20.jpg)
LIVE DEMO: IMPLICIT CONVERSIONS
Für Library-Entwicklung
Skalierbare Sprache
![Page 21: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/21.jpg)
LIVE DEMO: FUNKTIONALE LISTE
Type Inference OperatorenUnveränderlicheObjekte
Funktionen
höherer OrdnungFunktionsliterale Funktionen
![Page 22: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/22.jpg)
LIVE DEMO: TRAITS
Mehrfachvererbung richtig gemacht
Stackabe Modifications
![Page 23: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/23.jpg)
LIVE DEMO: TYP-PARAMETER
Generics richtig gemacht
KovarianzInvarianz
Kontravarianz
Upper Bounds
Lower Bounds
![Page 24: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/24.jpg)
LIVE DEMO: PATTERN MATCHING
Switch richtig gemacht
Constructor PatternVariable Pattern
Sequence Pattern
Wildcard Pattern
Constant Pattern
![Page 25: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/25.jpg)
LIVE DEMO: XML-SUPPORT
Literale in der Sprache
XPath-Abfragen
![Page 26: RheinJUG 2010 - Sprechen Sie Scala?](https://reader034.fdocuments.in/reader034/viewer/2022042714/5575a1bcd8b42aff598b4cd6/html5/thumbnails/26.jpg)
FRAGEN / DISKUSSION