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

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

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 progtwig.

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.

  • principal: inicio del progtwig
  • 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.

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

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

Desde la página de comando java de Sun:

La herramienta java inicia una aplicación Java. Lo hace iniciando un entorno de tiempo de ejecución de Java, cargando una clase especificada e invocando el método principal de esa 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. La statement del método debe ser similar a la siguiente:

 public static void main(String args[]) 

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

  1. Capítulo 12: Ejecución de la especificación del lenguaje Java, tercera edición .
  2. Capítulo 5: Vinculación, carga, inicialización desde las especificaciones de la máquina virtual de Java, segunda edición .
  3. Una mirada más de cerca a la aplicación “Hello World” de los tutoriales de Java .

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

Como un Thread o Runnable sí mismo no puede ser ejecutado directamente por la Máquina Virtual de Java, debe ser invocado por el método Thread.start() . Esto se puede lograr instanciando un Thread y llamando a su método de 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 Definición e inicio de Thread desde Java Tutorials.


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 complete el método init , se llama al método de start .

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 Life Cycle of a Applet de Java Tutorials.

Vea también: Cómo hacer applets del tutorial de Java.

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.

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?

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