The "Hello, world!" Program
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 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/bin |
Windows | %SCALA_HOME% %PATH% | c:\Progra~1\Scala %PATH%;%SCALA_HOME%\bin |
Run it interactively !
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.
Script it !
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 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 the scala
command is specified in the PATH
environment variable.
Compile it !
The scalac
command compiles one (or more) Scala source file(s) and generates Java bytecode which can be executed on any standard JVM; the Scala compiler works similarly to javac
, the Java compiler of the Java SDK.
> 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
Execute it !
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 extendsApplication
, 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!")
}
-----------------------------------------------------
Silence, the way to avoid many problems;
Smile, the way to solve many problems;