KEMBAR78
1.1 motivation | ODP
Scala workshop
If I were to pick a language to use today
     other than Java, it would be Scala.

             James Gosling
Scala, it must be stated, is the current heir
apparent to the Java throne. No other language
   on the JVM seems as capable of being a
   "replacement for Java" as Scala, and the
momentum behind Scala is now unquestionable.

      Charlies Olivier Nutter - JRuby lead
Though my tip though for the long term
  replacement of javac is Scala. I'm very
   impressed with it! I can honestly say if
someone had shown me the Programming
 in Scala book by by Martin Odersky, Lex
   Spoon & Bill Venners back in 2003 I'd
    probably have never created Groovy.

             James Strachen
public class Person {
      private int age;
      private String name;

        public Person(int age, String name) {
          this.age = age;
          this.name = name;
        }

        public int getAge() {
          return this.age;
        }

        public void setAge(int age) {
          this.age = age;
        }

        public String getName() {
          return this.name;
        }

        public void setName(String name) {
          this.name = name;
        }
    }




class Person(var age: Int, var name: String)
List<Person> persons = ...
List<Person> adults = new LinkedList<Person>();
List<Person> kids = new LinkedList<Person>();
for (Person person : persons) {
  if (person.getAge() < 18) {
    kids.add(person);
  } else {
    adults.add(person);
  }
}




val (kids, adults) = persons.partition(_.age < 18)
String s = "!em esreveR";
System.out.println(s.reverse());




val s: java.lang.String = "!em esreveR"
println(s.reverse)

=> Reverse me!
BufferedReader reader = null;
try {
  reader = new BufferedReader(new FileReader("f.txt"));
  System.out.println(reader.readLine());
} finally {
  if (reader != null) {
    try {
      reader.close();
    } catch (IOException e) {
      // Exception on close, ignore
    }
  }
}




using(new BufferedReader(new FileReader("f.txt"))) {
    reader => println(reader.readLine())
}
I will never forget these words: "With great power
  comes great responsibility." This is my gift, my
         curse. Who am I? I'm Spider-man.
val myList = List(1, 2, 3)
val res = (10/:myList)(_+_)


??
Scala
Object oriented and functional
Statically typed
Java compatible
  Complies to Java bytecode (and CLR)
  Existing libraries/frameworks
Better Java
Todays schedule
Basic syntax
REPL, IDEs and setup
First class functions
Pattern matching
OO and traits
Functional programming
++

1.1 motivation

  • 1.
  • 2.
    If I wereto pick a language to use today other than Java, it would be Scala. James Gosling
  • 3.
    Scala, it mustbe stated, is the current heir apparent to the Java throne. No other language on the JVM seems as capable of being a "replacement for Java" as Scala, and the momentum behind Scala is now unquestionable. Charlies Olivier Nutter - JRuby lead
  • 4.
    Though my tipthough for the long term replacement of javac is Scala. I'm very impressed with it! I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably have never created Groovy. James Strachen
  • 5.
    public class Person{ private int age; private String name; public Person(int age, String name) { this.age = age; this.name = name; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } } class Person(var age: Int, var name: String)
  • 6.
    List<Person> persons =... List<Person> adults = new LinkedList<Person>(); List<Person> kids = new LinkedList<Person>(); for (Person person : persons) { if (person.getAge() < 18) { kids.add(person); } else { adults.add(person); } } val (kids, adults) = persons.partition(_.age < 18)
  • 7.
    String s ="!em esreveR"; System.out.println(s.reverse()); val s: java.lang.String = "!em esreveR" println(s.reverse) => Reverse me!
  • 8.
    BufferedReader reader =null; try { reader = new BufferedReader(new FileReader("f.txt")); System.out.println(reader.readLine()); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { // Exception on close, ignore } } } using(new BufferedReader(new FileReader("f.txt"))) { reader => println(reader.readLine()) }
  • 9.
    I will neverforget these words: "With great power comes great responsibility." This is my gift, my curse. Who am I? I'm Spider-man.
  • 10.
    val myList =List(1, 2, 3) val res = (10/:myList)(_+_) ??
  • 11.
    Scala Object oriented andfunctional Statically typed Java compatible Complies to Java bytecode (and CLR) Existing libraries/frameworks Better Java
  • 12.
    Todays schedule Basic syntax REPL,IDEs and setup First class functions Pattern matching OO and traits Functional programming ++