Java-Programme ohne main()

Lädt der Klassenlader eine Klasse, so führt er als allererstes die statischen Blöcke aus. Mit dieser Eigenschaft lassen sich Programme ohne main()-Funktion schreiben. In den statischen Block wird einfach das Hauptprogramm geschrieben. Da die virtuelle Maschine aber immer noch nach dem main() sucht, müssen wir die Laufzeitumgebung schon vorher beenden. Dies geschieht dadurch, dass mit System.exit() die Bearbeitung abgebrochen wird:

class StaticNowMain
{
  static
  {
    System.out.println( "Jetzt bin ich das Hauptprogramm" );
    System.exit( 0 );
  }
}

Nicht jede Laufzeitumgebung nimmt das jedoch ohne Murren hin. Mit diesem Vorgehen ist der Nachteil verbunden, dass bei Ausnahmen im versteckten Hauptprogramm manche virtuelle Maschinen unsinnige Fehler melden – etwa den, dass die Klasse StaticNowMain nicht gefunden wurde, oder auch eine ExceptionInInitializerError, die an Stelle einer vernünftigen Exception kommt.