As a first example, we use the standard Hello world
program to demonstrate the use of the Scala tools without knowing too much about the language.
object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } }
The structure of this program should be familiar to Java programmers: it consists of the method main
which prints out a friendly greeting to the standard output.
We assume that both the Scala software [1] and the user environment are set up correctly. For example:
Environment Variable Value (example) Unix $SCALA_HOME $PATH /usr/local/share/scala $PATH:$SCALA_HOME/binWindows %SCALA_HOME% %PATH% c:\Progra~1\Scala %PATH%;%SCALA_HOME%\bin
The scala
command starts an interactive shell where Scala expressions are interpreted interactively.
> scala This is a Scala shell. Type in expressions to have them evaluated. Type :help for more information. scala> object HelloWorld { | def main(args: Array[String]) { | println("Hello, world!") | } | } defined module HelloWorld scala> HelloWorld.main(null) Hello, world! unnamed0: Unit = () scala>:q
The shortcut :q
stands for the internal shell command :quit
used to exit the interpreter.
The above Scala program may also be run as a shell script respectively as a batch command (see the examples in the man pages of the scala
command).
The bash [2] shell script script.sh
containing the following Scala code (and shell preamble)
#!/bin/sh
exec scala "$0" "$@"
!# object HelloWorld { def main(args: Array[String]) { println("Hello, world! " + args.toList) } } HelloWorld.main(args)
can be run directly from the command shell:
> ./script.sh
Note: We assume here the file
script.sh
has execute access and the search path for thescala
command is specified in thePATH
environment variable.
The scalac
command compiles one (or more) Scala source file(s) and generates Java bytecode which can be executed on any standard JVM [3]; the Scala compiler works similarly to javac
[4], the Java compiler of the Java SDK [5].
> scalac HelloWorld.scala
By default scalac
generates the class files into the current working directory. You may specify a different output directory using the -d
option.
> scalac -d classes HelloWorld.scala
The scala
command executes the generated bytecode with the appropriate options:
> scala HelloWorld
scala
allows us to specify command options, such as the -classpath
(or -cp
) option:
> scala -classpath classes HelloWorld
The argument of the scala
command has to be a top-level object. If that object is followed by the clause extends Application
, then all statements contained in that object will be executed; otherwise you have to add a method main
which will act as the entry point of your program.
Here is how it looks like:
object HelloWorld2 extends Application { println("Hello, world!") }
Links:
[1] http://www.scala-lang.org/downloads
[2] http://www.gnu.org/software/bash/
[3] http://java.sun.com/docs/books/jvms/
[4] http://java.sun.com/j2se/1.5.0/docs/tooldocs/solaris/javac.html
[5] http://java.sun.com/javase/