13
SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

SCALA LIVEHeiko Seeberger, WeigleWilczek

Java User Group Darmstadt, 2011-03-31

Page 2: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

SCALA IS ...

mature concisestatically typed

lightweight

object-functional

expressive

interoperable with Java

Page 3: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

MATURE

Since 2003

Version 2.8

Page 4: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

OBJECT-FUNCTIONAL

Page 5: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

STATICALLY TYPED

Page 6: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

LIGHTWEIGHT

Semicolon Inference Type Inference

Implicit ConversionsInfix Operator Notation

Page 7: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

CONCISE

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 8: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

EXPRESSIVE

"Calling Person.toString" should { "return first name blank last name" in { val person = new Person("John", "Doe") person.toString mustEqual "John Doe" }}

Page 9: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

INTEROPERABLE WITH JAVA

scala> import org.apache.log4j._import org.apache.log4j._

scala> val testLogger = Logger getLogger "test"testLogger: org.apache.log4j.Logger = ...

Important!

Page 10: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

LET’S GET LIVE!

Page 11: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

DEVELOPMENT ENVIRONMENT

SBT

IDE

Page 12: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

AVAILABLE MAI 2011

Page 13: Heiko Seeberger, WeigleWilczek Java User Group Darmstadt ... · SCALA LIVE Heiko Seeberger, WeigleWilczek Java User Group Darmstadt, 2011-03-31

HAVE FUN WITH [email protected]

Twitter: hseeberger