Die Scala Entwicklungsumgebung

Werbung
Die Scala Entwicklungsumgebung
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
1
Was ist drin?
Die Scala-Entwicklungsumgebung enthält
Die Scala-Shell: scala
Zwei Compiler: scalac und fsc (Fast Scala Compiler)
Die API
Die Laufzeitumgebung
Den Scala-Basar
Wir arbeiten mit der Version 2.10.x.
Scala gibt für die JVM und die CLR (.NET).
Seit Scala 2.0 gibt es keine aktuelle Version für die
CLR.
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
2
Installation Kommandozeilenwerkzeuge
Von http://www.scala-lang.org/downloads
für Linux holen scala-2.9.1.final.tgz
Mit md5sum vergleichen, Entpacken
Umgebungsvariable PATH erweitern, sodass sie auf
/prg/scala-2.9.1.final/bin
zeigt.
Testen:
scala -version
scalac -version
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
3
Ohne Java geht nichts
Die Compiler sind in Scala geschrieben,
Die ‚Laufzeitumgebung‘ ist ein Wrapper für die JVM.
Eine Voraussetzung für die Arbeit mit Scala ist ein
JRE.
Alle Java-Klassen können aus Scala heraus benutzt
werden (und umgekehrt).
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
4
Scala-Shell alias REPL
REPL: Read-Evaluate-Print-Loop
Scala-Befehle können eingetippt werden, die Shell
führt sie aus und gibt das jeweilige Ergebnis mit Name
undTypangabe aus.
$ scala
scala> println("Hallo, Scala")
Hallo, Scala
scala> 128*2
Res1: Int = 256
Scala> val os = System.getProperty("os.name")
os: java.lang.String = Linux
Scala> exit
$
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
5
Scala-Skripte
Eine Datei ohne Klasse wird als Skript aufgefasst.
Kommandozeilenargumente sind als args verfügbar.
dir.scala:
val dir = new java.io.File(args(0))
val files = dir.list
files.foreach(println)
Dialog:
$ scala dir.scala /bin
mkdir
ps
ln
uncompress
ls
...
$
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
6
Scala-Hauptprogramme
In Scala können wir wie in Java mit class Klassen
definieren.
Ausführbare main-Methoden stehen aber immer in so
genannten Singleton-Objekten.
object Greet {
def main(args: Array[String]){
println("Hello, " + args(0))
}
}
Singletons werden mit dem Schlüsselwort object
definiert.
Probieren: scala Greet.scala Christoph
oder
scalac Greet.scala; scala Greet Sebastian
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
7
Die Compiler
Der einfache Compiler
scalac
arbeitet wie andere Compiler.
Der zweite Compiler
fsc
wird beim ersten Aufruf als Dienst gestartet und nicht
beendet. Bei weiteren Aufrufen findet kein Neustart
statt!
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
8
Der Scala Bazaar
Der Basar ist ein Paket-Manager mit dem
 neue Pakete bequem installiert werden und
 man seine Scala Entwicklungsumgebung
aktualisieren kann.
Beispiel:
sbaz installed
zeigt alle installierten Pakete an.
Knabe: Wir benutzen stattdessen das BuildWerkzeug sbt.
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
9
Die Scala-IDEs
Es gibt Scala-Plugins für die IDEs
 IntelliJ IDEA: von Knabe benutzt
 Eclipse: Von scala-lang.org empfohlen
Installation siehe http://www.scala-ide.org/
 NetBeans
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
10
Simple Build Tool alias sbt (Knabe)
Build Tool: Reproduzierbarer Produktbau, bequeme
Nutzung von Fremdbibliotheken.
Installation: Siehe Hinweise WerkzeugInstallation
Vorteile gegenüber Maven:
• Typsichere Überprüfung der Build-Skripts
• + Interaktive Konsole zur inkrementellen
Nachkompilation mit unmittelbarer Ausführung
• Hohe Anpassbarkeit, da Builds in einer
Programmiersprache (Scala) konfiguriert werden
können.
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
11
sbt-Nutzung 1 (Knabe)
Bsp.: http://www.scala-sbt.org/0.13/tutorial/Hello.html
Hello-Projekt anlegen, füllen.
Batch Mode: Kommandozeilenaufruf von Aktionen
Bsp.: cd hello; sbt run package
Interactive Mode:
$ sbt
> test
Compiling …
Testing ...
> run
Running HelloWorld
Hallo zusammen!
> exit
$
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
12
sbt-Nutzung 2 (Knabe)
Continuous Mode: ~Kommando
Bsp.: ~test
Führt Compile-Test nach jedem Speichern einer
Quellcodeänderung durch.
Interpreter Mode: console
Führt Eingaben als Scala aus mit übersetzten Quellen
und Dependencies.
$ sbt console
scala> val files = new java.io.File(″.″).list
files: Array[String] = Array(Hi.scala~, Hi.scala, target)
scala> files.foreach(println)
Hi.scala~
Hi.scala
target
scala> :quit
L.$ Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
13
ScalaIDE-Nutzung 1 (Knabe)
Doku: http://scala-ide.org/docs/
Wir folgen Anleitung
„User Documentation for the Scala IDE 3.0.x“
Projekterzeugung: Im Navigator:
New > Other... > Scala Wizards > Scala Project
Erzeugt Scala-Projekt nach Eclipse-Konvention:
./bin: .class-Dateien
./src: Quelltextpakete für .java und .scala
Anderes erzeugen:
New > Scala Class
New > Scala Object
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
14
ScalaIDE-Nutzung 2 (Knabe)
REPL-Ersatz in IDE:
New > Scala Worksheet > Probe
Eingeben und speichern: Es erscheint:
object Probe {
2*3
//> res0: Int(6) = 6
val l = List("Berta", "Hans", "Tanja") //> l : List[String] = List(Berta, Hans, Tanja)
l.reverse
//> res1: List[String] = List(Tanja, Hans, Berta)
}
L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung
15
Herunterladen