Why does my boilerplate Java desktop app JFrame use EventQueue.invokeLater in the main method?
I am using the latest Eclipse, and GWT Designer, to make a swing application in Java.
The main function in my application window (which is a javax.swing.JFrame) in the auto generated by the tools looks like this:

        /* launch the application */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					AppWindow window = new AppWindow();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

This seems like a lot of noise around what could have been just this:

	public static void main(String[] args) {
				try {
					AppWindow window = new AppWindow();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			
		
	}

I have read that the EventQueue.InvokeLater technique is useful in thread situations, and another question asks where to use it [here][1].

My question is simpler; Why do this automatically in the code generator here? Why should main return quickly and let the application window get created later by the event queue?  Wouldn't blocking be exactly the point?  Why is the JFrame auto-generated designer doing this EventQueue stuff?   I have tried to see some difference in the start up and showing of forms whether this code is done the simpler way or the harder way, and I can only conclude provisionally that this has some benefits that are not visible in tiny demo apps made by beginners like me, and that perhaps in real-world large complex Jframe based classes, there is some benefit to this delaying/queuing strategy?


  [1]: http://stackoverflow.com/questions/3541373/should-we-use-eventqueue-invokelater-for-any-gui-update-in-java-desktop-applicati
Why does my boilerplate Java desktop app JFrame use EventQueue.invokeLater in the main method?
===

I am using the latest Eclipse, and GWT Designer, to make a swing application in Java.
The main function in my application window (which is a javax.swing.JFrame) in the auto generated by the tools looks like this:

        /* launch the application */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					AppWindow window = new AppWindow();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

This seems like a lot of noise around what could have been just this:

	public static void main(String[] args) {
				try {
					AppWindow window = new AppWindow();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			
		
	}

I have read that the EventQueue.InvokeLater technique is useful in thread situations, and another question asks where to use it [here][1].

My question is simpler; Why do this automatically in the code generator here? Why should main return quickly and let the application window get created later by the event queue?  Wouldn't blocking be exactly the point?  Why is the JFrame auto-generated designer doing this EventQueue stuff?   I have tried to see some difference in the start up and showing of forms whether this code is done the simpler way or the harder way, and I can only conclude provisionally that this has some benefits that are not visible in tiny demo apps made by beginners like me, and that perhaps in real-world large complex Jframe based classes, there is some benefit to this delaying/queuing strategy?


  [1]: http://stackoverflow.com/questions/3541373/should-we-use-eventqueue-invokelater-for-any-gui-update-in-java-desktop-applicati