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.9.x. Scala gibt für die JVM und die CLR (.NET). Seit Version 2 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. 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. L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung 9 Der Scala-IDEs Es gibt Scala-Plugins für die IDEs IntelliJ IDEA: von mir benutzt Eclipse: Von scala-lang.org empfohlen Installation siehe http://www.scala-ide.org/ NetBeans L. Piepmeyer: Funktionale Programmierung - Die Scala Entwicklungsumgebung 10