Question: What is the difference between 

```
object Application extends App {
   println("Hello World")
}

```

and 

```
object Application {
    def main(args: Array[String]): Unit = {
        println("Hello World");
    }
}

```

Answer: 
These two cases is not same on the scala scripting.

`object extends App` was not executed by "`scala MyObject.scala`" command,
but the object containing the *main* method was executed by "`scala MyObject.scala`" command.
Which was described as scala looking for object with main method for scripting.

When using REPL or scala workseet of Eclipse, 
need to call `MyObject.main(Array[String]())` explicitly for both cases.

This simple tip be helpful for beginner like me.
App trait is implemented using the [[DelayedInit]] functionality, which means that fields of the object will not have been initialized before the main method has been executed.