Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction to Scala for Java Developers

14,758 views

Published on

This is brief presentation on the Scala programming language. It is aimed at Java developers who are curious about Scala. It was given at a San Francisco Java User Group in January 2009.

Published in: Technology
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Introduction to Scala for Java Developers

  1. Scala for Java Developers Michael Galpin, http://fupeg.blogspot.com Tuesday, January 13, 2009
  2. Scala is... A general purpose programming language ✤ A language that runs on the Java VM ✤ Statically typed ✤ An object-oriented language ✤ No primitives or operators, but with singletons ✤ A functional language ✤ A scalable language ✤ Tuesday, January 13, 2009
  3. Scala is General Purpose Some uses of Scala ✤ Scripting ✤ Web applications ✤ Messaging ✤ Graphical User Interfaces ✤ Tuesday, January 13, 2009
  4. Scala runs on the JVM Compiles to Java bytecode ✤ Written by Martin Odersky (javac) ✤ Uses core Java heavily ✤ Can call any Java classes ✤ Can be called by any Java class ✤ Tuesday, January 13, 2009
  5. Scala is Statically Typed var name :String = quot;Hello, worldquot; ; Tuesday, January 13, 2009
  6. Scala is Statically Typed var name = quot;Hello, worldquot; ; Tuesday, January 13, 2009
  7. Scala is Statically Typed var name = quot;Hello, worldquot; Tuesday, January 13, 2009
  8. Scala is Statically Typed val name = quot;Hello, worldquot; Tuesday, January 13, 2009
  9. Scala is Statically Typed val name = quot;Hello, worldquot; def makeList(a:String, b:String):List[String] = { return a :: b :: Nil ; } Tuesday, January 13, 2009
  10. Scala is Statically Typed val name = quot;Hello, worldquot; def makeList(a:String, b:String):List[String] = { return a :: b :: Nil } Tuesday, January 13, 2009
  11. Scala is Statically Typed val name = quot;Hello, worldquot; def makeList(a:String, b:String):List[String] = { a :: b :: Nil } Tuesday, January 13, 2009
  12. Scala is Statically Typed val name = quot;Hello, worldquot; def makeList(a:String, b:String):List[String] = a :: b :: Nil Tuesday, January 13, 2009
  13. Scala is Statically Typed val name = quot;Hello, worldquot; def makeList(a:String, b:String) = a :: b :: Nil Tuesday, January 13, 2009
  14. Scala is object-oriented Classes ✤ class Computer (val clockSpeed:Double, var memory:Int, var hdd:Int, var os:String){ def this(clockSpeed:Double) = this(clockSpeed, 0, 0, null) def addMemory(newRam:Int):Unit = { this.memory += newRam } def addDrive(newHdd:Int) = { this.hdd += newHdd } override def toString = clockSpeed + quot; GHz quot; + memory + quot; GB RAM quot; + hdd + quot; GB hdd quot; + os } Tuesday, January 13, 2009
  15. Scala is object-oriented Inheritance ✤ class Laptop(clockSpeed:Double, memory:Int, hdd:Int, val screenSize:Int, os:String) extends Computer(clockSpeed,memory,hdd,os){ override def toString = screenSize + quot; inch screen quot; + super.toString } Mix-ins ✤ trait Mac{ var osVersion:String def osx = { osVersion match { case quot;10.5quot; => quot;Leopardquot; case quot;10.4quot; => quot;Tigerquot; case _ => quot;OSXquot; } } } class MacBook(clockSpeed:Double, memory:Int, hdd:Int, os:String) extends Laptop(clockSpeed, memory, hdd, 13, os) with Mac{ var osVersion = os } Tuesday, January 13, 2009
  16. Scala has More Effective Java Tuesday, January 13, 2009
  17. Scala has More Effective Java You always override equals, hashCode, and toString ... right? ✤ Tuesday, January 13, 2009
  18. Scala has More Effective Java You always override equals, hashCode, and toString ... right? ✤ Case Classes ✤ case class Player(val name:String, val team:String, val position:String) val tebow = Player(quot;Tim Tebowquot;,quot;Floridaquot;,quot;QBquot;) println(tebow) // prints (Time Tebow,Florida,QB) val clone = Player(quot;Tim Tebowquot;,quot;Floridaquot;,quot;QBquot;) println(clone == tebow) // prints true val set = new HashSet[Player] set += tebow set += clone println(set.size) // prints 1 Tuesday, January 13, 2009
  19. Scala is very object-oriented No primitives ✤ No int, just Int ✤ No String[], just Array[String] ✤ No operators ✤ + - * / ++ += are all just methods ✤ Create your own or overload (if not final) ✤ Tuesday, January 13, 2009
  20. No Operators, Just Methods Tuesday, January 13, 2009
  21. No Operators, Just Methods Dots and parentheses are optional ✤ val x = 1.+(2) val y = 1 + 2 println(x == y) // prints true Tuesday, January 13, 2009
  22. No Operators, Just Methods Dots and parentheses are optional ✤ val x = 1.+(2) val y = 1 + 2 println(x == y) // prints true Sweet Syntactic Sugar ✤ val cache = new HashMap[String, String] cache += (quot;fooquot;,quot;barquot;) cache -= quot;fooquot; Tuesday, January 13, 2009
  23. Great for DSLs Domain Specific Languages ✤ XML ✤ Actors ✤ Tuesday, January 13, 2009
  24. XML Example: Atom class Entry(var title:String, val link:String, val id:String, var updated:Date, var summary:String){ def toAtom = <entry> <link href={link}/> <id>{id}</id> <updated>{updated}</updated> <summary>{summary}</summary> </entry> } Tuesday, January 13, 2009
  25. XML Example: Atom class Feed(val title:String, val link:String, var updated:Date, val author:String, val id:String){ var entries:List[Entry] = Nil def addEntry(entry:Entry){ entries = entry :: entries } def toAtom = <feed> <title>{title}</title> <link href={link}/> <updated>{updated}</updated> <author> <name>{author}</name> </author> <id>{id}</id> { val nodes = new NodeBuffer for (entry <- entries) { nodes &+ entry.toAtom } nodes } </feed> } Tuesday, January 13, 2009
  26. XML Example: Atom object Atom{ def main(args:Array[String]){ val f = new Feed(quot;Programming and Politicsquot;, quot;http://fupeg.blogspot.comquot;, new Date(),quot;Michel Galpinquot;,quot;5819005quot;) val e = new Entry(quot;New Scala Articlequot;, quot;http://fupeg.blogspot.com/2008/04/new-scala-article.htmlquot;, quot;6009113042595594848quot;, new Date(), quot;Article on Scala and XMLquot; ) f.addEntry(e) println(f.toAtom) } } Tuesday, January 13, 2009
  27. XML Example: Atom $ scalac Atom.scala $ scala Atom <feed> <title>Programming and Politics</title> <link href=quot;http://fupeg.blogspot.comquot;></link> <updated>Tue Jan 13 11:35:51 PST 2009</updated> <author> <name>Michel Galpin</name> </author> <id>5819005</id> <entry> <link href=quot;http://fupeg.blogspot.com/2008/04/new-scala-article.htmlquot;></link> <id>6009113042595594848</id> <updated>Tue Jan 13 11:35:51 PST 2009</updated> <summary>Scala is good</summary> </entry> </feed> Tuesday, January 13, 2009
  28. Singletons in Scala Use object instead of class ✤ object ComputerStore{ def main(args:Array[String]) = { val newton = new MacBook(2.0, 2048, 120, quot;10.5quot;) println(newton.clockSpeed + quot; is fast!quot;) println(quot;newton is running quot; + newton.osx) } } Often used as factories a.k.a. companion objects ✤ val names = List(quot;Billquot;, quot;Davidquot;, quot;Michaelquot;) Tuesday, January 13, 2009
  29. Scala is functional A function is an object, its definition is its apply method ✤ object DotProdct{ def apply(list1:List[Number], list2:[Number]) = { var result = 0 for (i <- 0 until list1.size){ result += list1(i)*list2(i) } result } } val a = List(1,2,3) val b = List(4,5,6) println(DotProduct(a,b)) // prints 32 Tuesday, January 13, 2009
  30. Closures Functions can be passed as parameters to other functions ✤ Scala allows for inline (anonymous) functions ✤ Still statically typed ✤ Lexically scoped (anonymous or not) ✤ Tuesday, January 13, 2009
  31. Closure Examples Tuesday, January 13, 2009
  32. Closure Examples class Person(val firstName:String, val middleName:String, var lastName:String){ def print( formatter:(String,String,String) => String )={ val str = formatter(firstName,middleName,lastName) println(str) } } Tuesday, January 13, 2009
  33. Closure Examples class Person(val firstName:String, val middleName:String, var lastName:String){ def print( formatter:(String,String,String) => String )={ val str = formatter(firstName,middleName,lastName) println(str) } } val p = new Person(quot;Michaelquot;,quot;Davidquot;,quot;Galpinquot;) Tuesday, January 13, 2009
  34. Closure Examples class Person(val firstName:String, val middleName:String, var lastName:String){ def print( formatter:(String,String,String) => String )={ val str = formatter(firstName,middleName,lastName) println(str) } } val p = new Person(quot;Michaelquot;,quot;Davidquot;,quot;Galpinquot;) val sep = quot; quot; def std(a:String,b:String,c:String) = List(a,b,c).mkString(sep) p.print(std) Tuesday, January 13, 2009
  35. Closure Examples class Person(val firstName:String, val middleName:String, var lastName:String){ def print( formatter:(String,String,String) => String )={ val str = formatter(firstName,middleName,lastName) println(str) } } val p = new Person(quot;Michaelquot;,quot;Davidquot;,quot;Galpinquot;) val sep = quot; quot; def std(a:String,b:String,c:String) = List(a,b,c).mkString(sep) p.print(std) val sep2 = quot;:quot; p.print( (a,b,c) => a + sep + b + sep2 + c) Tuesday, January 13, 2009
  36. Closure Examples class Person(val firstName:String, val middleName:String, var lastName:String){ def print( formatter:(String,String,String) => String )={ val str = formatter(firstName,middleName,lastName) println(str) } } val p = new Person(quot;Michaelquot;,quot;Davidquot;,quot;Galpinquot;) val sep = quot; quot; def std(a:String,b:String,c:String) = List(a,b,c).mkString(sep) p.print(std) val sep2 = quot;:quot; p.print( (a,b,c) => a + sep + b + sep2 + c) p.print(_ + sep + _ + sep2 + _) Tuesday, January 13, 2009
  37. Closures: Not Just for Golf Tuesday, January 13, 2009
  38. Closures: Not Just for Golf var nums = 1 until 100 filter(_ % 3 == 0) Tuesday, January 13, 2009
  39. Closures: Not Just for Golf var nums = 1 until 100 filter(_ % 3 == 0) nums.foreach(println(_)) Tuesday, January 13, 2009
  40. Closures: Not Just for Golf var nums = 1 until 100 filter(_ % 3 == 0) nums.foreach(println(_)) nums = nums.map(2*_ + 3) println(quot;All greater than 10? quot; + nums.forall(_ > 10)) Tuesday, January 13, 2009
  41. Closures: Not Just for Golf var nums = 1 until 100 filter(_ % 3 == 0) nums.foreach(println(_)) nums = nums.map(2*_ + 3) println(quot;All greater than 10? quot; + nums.forall(_ > 10)) val sum = nums.foldLeft(0)(_+_) println(quot;sum=quot;+sum) Tuesday, January 13, 2009
  42. Closures: Not Just for Golf var nums = 1 until 100 filter(_ % 3 == 0) nums.foreach(println(_)) nums = nums.map(2*_ + 3) println(quot;All greater than 10? quot; + nums.forall(_ > 10)) val sum = nums.foldLeft(0)(_+_) println(quot;sum=quot;+sum) val sorted = nums.toList.sort( (n,m) => { val remN = n % 5 val remM = m % 5 remN > remM }) sorted.foreach( (i) => println(i + quot; quot; + i % 5)) Tuesday, January 13, 2009
  43. Scala: A Scalable Language Compiles to bytecode ✤ Very close to “native” Java ✤ Sometimes faster! ✤ Tail recursion ✤ Concurrency ✤ Tuesday, January 13, 2009
  44. Scala: Better Bytecode What is the first triangle number to have at least N divisors? Time N Tuesday, January 13, 2009
  45. Tail Recursion: Scala Factorial object Factorial{ val ZERO = BigInt.int2bigInt(0) val ONE = BigInt.int2bigInt(1) def factorial(n:BigInt):BigInt= n match { case ZERO => ONE case ONE => ONE case _ => n*factorial(n-1) } def main(args:Array[String]){ val i = args(0).toInt val n = BigInt.int2bigInt(i) val start = new java.util.Date println(factorial(n)) val duration = (new java.util.Date()).getTime - start.getTime println(quot;duration=quot;+duration) } } Tuesday, January 13, 2009
  46. And in Java... import java.math.BigInteger; import java.util.Date; public class Factorial{ public static BigInteger factorial(BigInteger n){ if (n.equals(BigInteger.ZERO)) return BigInteger.ONE; else if (n.equals(BigInteger.ONE)) return BigInteger.ONE; else return n.multiply(factorial(n.subtract(BigInteger.ONE))); } public static void main(String[] args){ BigInteger n = new BigInteger(args[0]); Date start = new Date(); System.out.println(factorial(n)); long duration = (new Date()).getTime() - start.getTime(); System.out.println(quot;duration=quot;+duration); } } Tuesday, January 13, 2009
  47. And the Results... Factorial 100000 75000 Time(ms) 50000 25000 0 10000 20000 30000 50000 N Java Scala Tuesday, January 13, 2009
  48. Scala Concurrency: Actors Tuesday, January 13, 2009
  49. Scala Concurrency: Actors Actor Model: A Different Way to Implement Concurrency ✤ Tuesday, January 13, 2009
  50. Scala Concurrency: Actors Actor Model: A Different Way to Implement Concurrency ✤ Each Object is an Actor ✤ Tuesday, January 13, 2009
  51. Scala Concurrency: Actors Actor Model: A Different Way to Implement Concurrency ✤ Each Object is an Actor ✤ Each Actor has a Mailbox ✤ Tuesday, January 13, 2009
  52. Scala Concurrency: Actors Actor Model: A Different Way to Implement Concurrency ✤ Each Object is an Actor ✤ Each Actor has a Mailbox ✤ Actors (Asynchronously) Send Messages and Receive them in their ✤ Mailbox Tuesday, January 13, 2009
  53. Scala Concurrency: Actors Actor Model: A Different Way to Implement Concurrency ✤ Each Object is an Actor ✤ Each Actor has a Mailbox ✤ Actors (Asynchronously) Send Messages and Receive them in their ✤ Mailbox No Shared State ✤ Tuesday, January 13, 2009
  54. Why Actors: Performance Apache (C/Threads) vs. Yaws (Erlang/Actors) Throughput (KB/s) Concurrent Sessions Tuesday, January 13, 2009
  55. Why Actors: Simpler Code No Code Changes for Multi-threaded vs. Single-threaded ✤ No Mutable State ✤ No (Dead) Locking ✤ Tuesday, January 13, 2009
  56. Actor Example case object Ping case object Pong case object Stop class Pong extends Actor { def act() { var pongCount = 0 loop { react { case Ping => if (pongCount % 1000 == 0) // print every 1000th Ping println(quot;Pong: ping quot;+pongCount) sender ! Pong pongCount = pongCount + 1 case Stop => println(quot;Pong: stopquot;) exit() } } } } Tuesday, January 13, 2009
  57. Actor Example class Ping(count: Int, pong: Actor) extends Actor { def act(){ var pingsLeft = count - 1 pong ! Ping loop{ react { case Pong => if (pingsLeft % 1000 == 0) // print every 1000th Pong println(quot;Ping: pongquot;) if (pingsLeft > 0){ pong ! Ping pingsLeft -= 1 } else { println(quot;Ping: stopquot;) pong ! Stop exit() } } } } } Tuesday, January 13, 2009
  58. Actor Example object PingPong { def main(args:Array[String]){ val pong = new Pong val ping = new Ping(100000, pong) ping.start pong.start } } Tuesday, January 13, 2009

×