Creo que no es completamente correcto decir que no hay una manera correcta.
La manera correcta de instanciar tu aplicación debe ser la siguiente:
Código:
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
No recuerdo exactamente el lugar donde explica el motivo de crear un thread para instanciar tu aplicación. Posiblemente lo encuentro más tarde y lo agrego por aquí.