title: Swing Event Thread Java
body: <p>In this code HelloWorldApp simply extends JFrame .
  Why dont i need to put the 'app' object definition in the invokeLater method ?
  And why 'app' need to be final ? Thanks</p>
  
  <pre><code>final HelloWorldApp app = new HelloWorldApp();
  SwingUtilities.invokeLater( new Runnable() 
  {
      public void run() 
      {
          app.createAndShowGUI();
      }
  });
  </code></pre>