Punto de entrada para aplicaciones Java: main (), init () o run ()?

Hasta ahora he estado usando los métodos public void run() {} para ejecutar mi código en Java. ¿Cuándo/por qué podría uno querer usar main() o init() en lugar de run() ?

0
¿Estás usando una herramienta de GUI, que construye un montón de código de esqueleto para ti, y en el que sueltas tu método de ejecución?
agregado el autor toolkit, fuente

5 Respuestas

Java tiene un método estático especial:

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

que se ejecuta en una clase cuando la clase se inicia con una línea de comando java:

$ java Class

ejecutaría dicho método en la clase "Clase" si existiera.

public void run() { ... }

es requerido por la interfaz Runnable, o heredado de la clase Thread cuando se crean nuevos hilos.

0
agregado

El método main() es el punto de entrada para una aplicación Java. run() se usa generalmente para nuevos subprocesos o tareas.

¿Dónde ha estado escribiendo un método run() , qué tipo de aplicación está escribiendo (por ejemplo, Swing, AWT, consola, etc.) y cuál es su entorno de desarrollo?

0
agregado
Estoy trabajando en Eclipse, y aunque no sé qué significa AWT o swing, ciertamente he escrito programas de consola. Todos mis programas hasta ahora solo tienen 1 método run() y ningún método main ().
agregado el autor Ziggy, fuente
Hmm ... Acabo de probar en Eclipse, y no puedo lanzar clases que solo tengan un método run (). ¿Cómo estás ejecutando estos programas?
agregado el autor Jon Skeet, fuente

El método main es el punto de entrada de una aplicación Java.

Específicamente, cuando se le dice a Java Virtual Machine que ejecute una aplicación especificando su clase (utilizando el iniciador de aplicación java ), buscará el método main con la firma de public static void main (String []) .

De la página de comandos java de :

La herramienta java inicia una aplicación Java. Lo hace al comenzar   un entorno de tiempo de ejecución Java, cargando una clase especificada e invocando eso   el principal método de la clase.

     

El método debe declararse público y estático, no debe devolver ningún   valor, y debe aceptar una matriz String como parámetro. El método   la declaración debe ser similar a la siguiente:

  public void main main (String args [])
 

Para obtener recursos adicionales sobre cómo se ejecuta una aplicación Java, consulte las siguientes fuentes:

  1. Chapter 12: Execution from the Java Language Specification, Third Edition.
  2. Chapter 5: Linking, Loading, Initializing from the Java Virtual Machine Specifications, Second Edition.
  3. A Closer Look at the "Hello World" Application from the Java Tutorials.

El método run es el punto de entrada para un nuevo Thread o una clase que implementa el Runnable interfaz. No es invocado por Java Virutal Machine cuando se inicia con el comando java .

Como un hilo o ejecutable no puede ser ejecutado directamente por la máquina virtual Java, por lo que debe ser invocado por el método Thread.start() . Esto se puede lograr instanciando un Thread y llamando a su método start en el método main de la aplicación:

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

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

Para obtener más información y un ejemplo de cómo iniciar una subclase de Thread o una clase que implementa Runnable , consulte Definir e iniciar un subproceso desde los Tutoriales de Java.


El método init es el primer método llamado en un Applet o JApplet .

Cuando un applet es cargado por el plugin de Java de un navegador o por un visor de applet, primero llamará al método Applet.init . Cualquier inicialización que se requiera para usar el applet se debe ejecutar aquí. Después de que se completa el método init , se llama al método init .

Para obtener más información sobre cuándo se llama al método init de un applet, lea sobre el ciclo de vida de un applet en The Ciclo de vida de un Applet de los Tutoriales de Java.

Ver también: Cómo crear applets del tutorial de Java .

0
agregado

Esta es una pregunta peculiar porque no se supone que sea una cuestión de elección.

Cuando inicia JVM, especifica una clase para ejecutar, y es el main() de esta clase donde se inicia su programa.

Por init() , supongo que te refieres al método JApplet. Cuando se lanza un applet en el navegador, el método init() del applet especificado se ejecuta como la primera orden del día.

Por run() , supongo que te refieres al método de Runnable. Este es el método invocado cuando se inicia un nuevo hilo.

  • main: inicio del programa
  • init: inicio del applet
  • ejecutar: inicio de subproceso

Si Eclipse está ejecutando su método run() aunque no tenga main() , entonces está haciendo algo peculiar y no estándar, pero no es inviable. Quizás deberías publicar una clase de muestra que has estado ejecutando de esta manera.

0
agregado
Ja ja ja, OK: estoy importando archivos de bibliotecas que no puedo leer. Entonces probablemente se está creando un Runnable en alguna parte, y luego mis métodos run() ejecutan runables. Esto fue genial, gracias!
agregado el autor Ziggy, fuente

como principiante, importo paquetes de acm, y en este paquete, run() comienza a ejecutar un subproceso, init() inicializa el applet de Java.

0
agregado
Antes de responder viejas preguntas, eche un vistazo si alguien ya publicó su respuesta. Imho, no estás proporcionando algo nuevo, en comparación con la respuesta de Jegschemesch.
agregado el autor user unknown, fuente