Your SlideShare is downloading. ×
How to start using Scala
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

How to start using Scala


Published on

Published in: Technology, Education
No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 1. How to START using Ngoc Dao
  • 2. This talk is not about Scala syntax(You can learn 80% of it in 2 days, Sat & Sun)
  • 3. Source code:
  • 4. Why I use Scala● Syntax is similar to Ruby (human oriented)● Faster than Ruby (= Java, ~C)● Can reuse all Java libs (Java has lots of libs!)● Easy to program for multicores (like Erlang)
  • 5. Agenda1. “scala” and “scalac” commands2. SBT (Scala Build Tool)3. Some useful frameworks
  • 6. Part 1: scala & scalac
  • 7. Install Scala1. Download from scala-lang.org2. Config PATH .bash_profile: PATH=~/opt/scala-2.9.2/bin:$PATH
  • 8. ~/opt/scala-2.9.2:
  • 9. Interactive console● For trying out code snippets● Like “irb” of Ruby
  • 10. $ scalaWelcome to Scala version 2.9.2Type :help for more information.scala> 1 + 2res0: Int = 3scala> "hello".lengthres1: Int = 5scala> :q$
  • 11. Scripting Scala● Can run a script right away, no compile step is needed● To run, “scala” command is needed; it will compile on the fly then run● For simple one-file programs
  • 12. $ cat Hello1.scalaprintln(1 + 2)println("hello".length)$ scala Hello.scala35
  • 13. Compile Scala● Compile .scala file to .class file● Can use “scala” or normal “java” command to run .class file● Simple programs: scalac (like javac)● Bigger programs: SBT (see next slides)
  • 14. $ scalac Hello1.scalaHello1.scala:1: error: expectedclass or object definitionprintln(1 + 2)^Hello1.scala:2: error: expectedclass or object definitionprintln("hello".length)^two errors found Need to wrap the script with “main”
  • 15. $ cat Hello2.scalaobject Hello2 { // Similar to normal Java/C programs def main(args: Array[String]) { println(1 + 2) println("hello".length) }}
  • 16. Run with “scala” command$ scalac Hello2.scala$ lsHello2$.class Hello2.class Hello2.scala$ scala Hello235
  • 17. Run with “java” command$ java Hello2Exception in thread "main"java.lang.NoClassDefFoundError:scala/ScalaObject$ java -cp~/opt/scala-2.9.2/lib/scala-library.jar:.Hello2
  • 18. Part 2: SBT
  • 19. SBT (Scala Build Tool)● Dependency library manager● Build tool● Like “gem” + “rake” of Ruby● Like Maven of Java
  • 20. Install SBTThere are several ways to install: prefer installing SBT manually
  • 21. Install SBT manually~/opt/sbt:sbt:java -Xmx512M -XX:MaxPermSize=128M -jar `dirname $0`/sbt-launch-0.12.0.jar "$@".bash_profile:PATH=~/opt/sbt:$PATH
  • 22. Project structurehello build.sbt src main scala should_be_under_a_package Hello2.scala java (Java source files, if any) test (Scala/Java test source files, if any) scala java target scala-2.9.2 classes (Compiled .class files)
  • 23. build.sbtorganization := "com.kayac"name := "hello" Like Gemfile of Rubyversion := "1.0-SNAPSHOT"scalaVersion := "2.9.2"scalacOptions ++= Seq( Packaged .jar file: "-deprecation", hello_2.9.2-1.0-SNAPSHOT.jar "-unchecked") (Management of dependency libraries will be talked at part 3)
  • 24. SBT tasks$ sbt tasksconsole Starts the Scala interpretercompile Compiles sourcesclean Deletes files produced by the buildrun Runs a main classpackage Produces project jar filepublish Publishes project jar file to a repositorypublish-local Copies project jar file to ~/.ivy2test Executes all teststest-only Executes the tests provided as argumentstest-quick Executes the tests that either failed before
  • 25. Demo●● sbt console, run, package etc.
  • 26. SBT plugins useful plugins:* Create Eclipse project file (with library paths):* One jar plugins
  • 27. Install SBT plugins1. Install plugins at global level~/.sbt/plugins/build.sbtEx:addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0")2. Install plugins at project levelproject/plugins.sbtEx:
  • 28. Demo● Use sbt eclipse to create Eclipse project and see lib paths
  • 29. Part3: Some useful frameworks
  • 30. Xitrum ● Combine web server + web framework ● Scalable: session, realtime data etc.| Your app |+------------------+| Xitrum ||+----------------+||| Web framework || <-- Hazelcast --> Other instances||----------------|||| HTTP(S) Server |||+----------------+|+------------------+ Fast static file serving: WebSocket
  • 31. Demo●● Routes● WebSocket● xitrum-package
  • 32. Akka●● Better than Scalas default actor library● Has power of Erlang: concurrency distribution failure supervisor FSM (Finite State Machine, very good for realtime multiplayer games, to manage states of game sessions and inter-player interactions)
  • 33. FSM Demo