it-swarm.com.de

Einstiegspunkt für Java Anwendungen: main (), init () oder run ()?

Bisher habe ich public void run() {} Methoden verwendet, um meinen Code in Java auszuführen. Wann/warum könnte man main() oder init() anstelle von run() verwenden wollen?

38
Ziggy

Dies ist eine eigentümliche Frage, denn es sollte keine Frage der Wahl sein.

Wenn Sie die JVM starten, geben Sie eine auszuführende Klasse an und es ist die main() dieser Klasse, in der Ihr Programm gestartet wird.

Mit init() meine ich vermutlich die JApplet-Methode. Wenn ein Applet im Browser gestartet wird, wird die Methode init() des angegebenen Applets als erster Geschäftsauftrag ausgeführt.

Mit run() meine ich vermutlich die Methode von Runnable. Dies ist die Methode, die aufgerufen wird, wenn ein neuer Thread gestartet wird.

  • main: Programmstart
  • init: Applet-Start
  • run: Threadstart

Wenn Eclipse Ihre run() -Methode ausführt, obwohl Sie keine main() haben, dann handelt es sich um etwas Besonderes und Nicht-Standardmäßiges, das jedoch nicht durchführbar ist. Vielleicht sollten Sie eine Beispielklasse posten, die Sie auf diese Weise ausgeführt haben.

72
Jegschemesch

Die Methode main ist der Einstiegspunkt einer Anwendung Java.

Insbesondere wenn die virtuelle Maschine Java angewiesen wird, eine Anwendung durch Angabe ihrer Klasse auszuführen (mithilfe des Anwendungsstarts Java), sucht sie nach der Methode main mit die Signatur von public static void main(String[]).

Von der Java-Befehlsseite von Sun :

Das Java Tool startet eine Java Anwendung. Dazu wird eine Laufzeitumgebung Java gestartet, eine angegebene Klasse geladen und die main -Methode dieser Klasse aufgerufen.

Die Methode muss als public und static deklariert sein, darf keinen Wert zurückgeben und muss ein String -Array als Parameter akzeptieren. Die Methodendeklaration muss folgendermaßen aussehen:

public static void main(String args[])

Weitere Ressourcen zur Ausführung einer Java -Anwendung finden Sie in den folgenden Quellen:

  1. Kapitel 12: Ausführung aus der Java Language Specification, Third Edition .
  2. Kapitel 5: Verknüpfen, Laden, Initialisieren aus Java Virtual Machine Specifications, Second Edition .
  3. Ein genauerer Blick auf die "Hello World" -Anwendung aus den Java-Tutorials .

Die run-Methode ist der Einstiegspunkt für eine neue Thread oder eine Klasse, die die Runnable implementiert Schnittstelle. Es wird von der Virutal-Maschine Java nicht aufgerufen, wenn es vom Befehl Java gestartet wird.

Da ein Thread oder Runnable selbst nicht direkt von der Java -Virtuellen Maschine ausgeführt werden kann, muss es von der Thread.start() -Methode aufgerufen werden. Dies kann erreicht werden, indem ein Thread instanziiert und dessen start -Methode in der main -Methode der Anwendung aufgerufen wird:

public class MyRunnable implements Runnable
{
    public void run()
    {
        System.out.println("Hello World!");
    }

    public static void main(String[] args)
    {
        new Thread(new MyRunnable()).start();
    }
}

Weitere Informationen und ein Beispiel zum Starten einer Unterklasse von Thread oder einer Klasse, die Runnable implementiert, finden Sie unter Definieren und Starten eines Threads in Java Tutorials.


Die init -Methode ist die erste Methode, die in einem Applet oder JApplet aufgerufen wird.

Wenn ein Applet vom Java Plugin eines Browsers oder von einem Applet Viewer geladen wird, ruft es zuerst die Methode Applet.init Auf. Alle Initialisierungen, die zur Verwendung des Applets erforderlich sind, sollten hier ausgeführt werden. Nachdem die Methode init abgeschlossen ist, wird die Methode start aufgerufen.

Weitere Informationen darüber, wann die init -Methode eines Applets aufgerufen wird, finden Sie unter Der Lebenszyklus eines Applets in Java Tutorials.

Siehe auch: Applets erstellen aus dem Java Tutorial.

17
coobird

Java hat eine spezielle statische Methode:

public static void main(String[] args) { ... }

was in einer Klasse ausgeführt wird, wenn die Klasse mit einer Java Kommandozeile gestartet wird:

$ Java Class

würde diese Methode in der Klasse "Class" ausführen, wenn sie existiert.

public void run() { ... }

wird von der Runnable-Schnittstelle benötigt oder beim Erstellen neuer Threads von der Thread-Klasse geerbt.

3

Die Methode main() ist der Einstiegspunkt für eine Java=) - Anwendung. run() wird normalerweise für neue Threads oder Aufgaben verwendet.

Wo haben Sie eine run() -Methode geschrieben, welche Art von Anwendung schreiben Sie (z. B. Swing, AWT, Konsole usw.) und wie sieht Ihre Entwicklungsumgebung aus?

2
Jon Skeet