title: Diffrence between extends from App and object contain main method in scala
body: <p>I wrote sample spark-scala program for creating list of json elements from dataframe. when i executed with main method it returns empty list but when i executed without object that extends app it returns list that contains records.
  what is the difference between extends App and main method in scala object</p>
  
  <pre><code>object DfToMap {
  def main(args: Array[String]): Unit = {
  val spark: SparkSession = SparkSession.builder()
  .appName("Rnd")
  .master("local[*]")
  .getOrCreate()
  import spark.implicits._
  
  val df = Seq(
  (8, "bat"),
  (64, "mouse"),
  (27, "horse")
  ).toDF("number", "word")
  
  val json = df.toJSON
  val jsonArray = new util.ArrayList[String]()
  json.foreach(f =&gt; jsonArray.add(f))
  print(jsonArray)
  }
  }
  </code></pre>
  
  <p>It will return empty list
  But following program gives me list with records</p>
  
  <pre><code>object DfToMap extends App{
  val spark: SparkSession = SparkSession.builder()
  .appName("Rnd")
  .master("local[*]")
  .getOrCreate()
  import spark.implicits._
  
  val df = Seq(
  (8, "bat"),
  (64, "mouse"),
  (27, "horse")
  ).toDF("number", "word")
  
  val json = df.toJSON
  val jsonArray = new util.ArrayList[String]()
  json.foreach(f =&gt; jsonArray.add(f))
  print(jsonArray)
  
  }
  </code></pre>