This page is no longer maintained — Please continue to the home page at

Getting Started with Scala

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)

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 = ()

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 containing the following Scala code (and shell preamble)

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:

  > ./

Note: We assume here the file 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 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!")


Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland