web-dev-qa-db-fra.com

Point d'entrée pour les applications Java: main (), init () ou run ()?

Jusqu'à présent, j'utilise des méthodes public void run() {} pour exécuter mon code en Java. Quand/pourquoi peut-on vouloir utiliser main() ou init() au lieu de run()?

38
Ziggy

C'est une question particulière car ce n'est pas censé être une question de choix.

Lorsque vous lancez la JVM, vous spécifiez une classe à exécuter, et c'est la main() de cette classe où votre programme démarre.

Par init(), je suppose que vous entendez la méthode JApplet. Lorsqu'une applet est lancée dans le navigateur, la méthode init() de l'applet spécifiée est exécutée comme premier ordre du jour.

Par run(), je suppose que vous entendez la méthode de Runnable. Il s'agit de la méthode invoquée lorsqu'un nouveau thread est démarré.

  • principal: démarrage du programme
  • init: début de l'applet
  • exécuter: démarrage du thread

Si Eclipse exécute votre méthode run() même si vous n'avez pas de main(), alors il fait quelque chose de particulier et non standard, mais pas irréalisable. Vous devriez peut-être publier un exemple de classe que vous avez exécutée de cette façon.

72
Jegschemesch

La méthode main est le point d'entrée d'une application Java.

Plus précisément 、 lorsque la machine virtuelle Java Java est invitée à exécuter une application en spécifiant sa classe (en utilisant le lanceur d'application Java), elle recherchera le main méthode avec la signature de public static void main(String[]).

Depuis la page de commande de Sun Java :

L'outil Java lance une application Java. Il le fait en démarrant un environnement d'exécution Java, en chargeant une classe spécifiée, et en invoquant la méthode main de cette classe.

La méthode doit être déclarée publique et statique, elle ne doit renvoyer aucune valeur et elle doit accepter un tableau String comme paramètre. La déclaration de méthode doit ressembler à ceci:

public static void main(String args[])

Pour des ressources supplémentaires sur la façon dont une application Java est exécutée, veuillez vous référer aux sources suivantes:

  1. Chapitre 12: Exécution à partir de Java Language Specification, Third Edition .
  2. Chapitre 5: Liaison, chargement, initialisation à partir de Spécifications de la machine virtuelle Java, deuxième édition .
  3. n examen plus approfondi de l'application "Hello World" à partir de Tutoriels Java .

La méthode run est le point d'entrée pour une nouvelle interface Thread ou une classe implémentant l'interface Runnable . Il n'est pas appelé par la Java Virutal Machine lorsqu'il est démarré par la commande Java.

Comme un Thread ou Runnable lui-même ne peut pas être exécuté directement par la machine virtuelle Java, il doit donc être appelé par la méthode Thread.start() Cela peut être accompli en instanciant un Thread et en appelant sa méthode start dans la méthode main de l'application:

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

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

Pour plus d'informations et un exemple sur la façon de démarrer une sous-classe de Thread ou une classe implémentant Runnable, voir Définir et démarrer un thread à partir de Java Tutoriels.


La méthode init est la première méthode appelée dans un Applet ou JApplet .

Lorsqu'une applet est chargée par le Java d'un navigateur ou par une visionneuse d'applet, elle appelle d'abord la méthode Applet.init. Toutes les initialisations requises pour utiliser l'applet doivent Une fois la méthode init terminée, la méthode start est appelée.

Pour plus d'informations sur l'appel de la méthode init d'une applet, lisez le cycle de vie d'une applet dans The Life Cycle of an Applet from the Java Tutoriels.

Voir aussi: Comment faire des applets à partir du tutoriel Java.

17
coobird

Java a une méthode statique spéciale:

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

qui est exécuté dans une classe lorsque la classe est démarrée avec une ligne de commande Java:

$ Java Class

exécuterait ladite méthode dans la classe "Class" si elle existait.

public void run() { ... }

est requis par l'interface Runnable ou hérité de la classe Thread lors de la création de nouveaux threads.

3

La méthode main() est le point d'entrée pour une application Java. run() est généralement utilisée pour les nouveaux threads ou tâches.

Où avez-vous écrit une méthode run(), quel type d'application écrivez-vous (par exemple Swing, AWT, console, etc.) et quel est votre environnement de développement?

2
Jon Skeet