main
no es una palabra clave en java. ¿Cómo sabe la JVM ejecutar el método main
como punto de partida de cualquier programa?¿Cómo utiliza JVM el "Método principal" para iniciar un programa Java?
Respuesta
main
no necesita ser una palabra clave en java para que la JVM la busque al inicio de la ejecución. No hay conflicto con otros métodos o variables también llamados main
. Esta es simplemente la forma en que se diseñó la especificación de JVM. Lo más probable es que haya sido tomado prestado del lenguaje c.
Java Referencias de especificación: keywords, invoking main.
+1 Tenga en cuenta que no solo importa el nombre del método, también debe ser 'static' (quizás' void', también) y tomar 'String []' como sus únicos argumentos. – Thilo
@Thilo: Correcto. La firma del método debe ser 'public static void main (String [] args)' para ser llamado al inicio. – Asaph
De vuelta en los viejos días de Mac OS 7 (¿u 8?), Donde no había línea de comando, Mac JVM también permitiría un main sin args. Afortunadamente, esto se ha unificado ahora (ya no funciona). – Thilo
Se acaba de especificar en el JLS.
12 Execution
...
máquina virtual de Java se inicia mediante la carga de una clase especificada y después de invocar el método
main
en esta clase especificada. La sección §12.1 describe los pasos de carga, vinculación e inicialización implicados en la ejecución demain
, como una introducción a los conceptos de este capítulo. Las secciones adicionales especifican los detalles de la carga (§12.2), que une (§12.3), y la inicialización (§12.4)....
12.1 Virtual Machine Start-Up
Una máquina virtual de Java se inicia la ejecución invocando el método
main
de alguna clase especificada, pasándole un único argumento, que es una matriz de cadenas. En los ejemplos en esta especificación, esta primera clase se llama típicamenteTest
....
12.1.4 Invoke Test.main
Finalmente, después de la terminación de la inicialización para la clase
Test
(durante el cual otros equipos de carga consecuente, que une, y de inicialización puede haber ocurrido), el métodomain
deTest
se invoca.El método
main
debe declararsepublic
,static
yvoid
. Debe aceptar un solo argumento que sea una matriz de cadenas.
Invoca este método mediante el uso de la reflexión. Usted puede echar un vistazo a las fuentes de Java Web Start por ejemplo
Invoca este método mediante el uso de la reflexión. Entonces, esto significa que en tiempo de ejecución busca la clase que tiene el método principal. ¿Es correcto? –
Al ejecutar el archivo jar, especifique el nombre de la clase con el método principal, o bien, puede especificar la clase principal dentro del manifiesto en jar. En Java Web Start, usted especifica la clase principal en el archivo jnlp. –
principal es básicamente un indicador universal del método central de modo Java automáticamente hace que el método central cuando se les proporciona public static
public static void main
No estoy seguro de lo que quieres decir ... pero a mí no parece responder la pregunta. – icedwater
En principio, cada lengua era más o menos similar a su predecesor. En el lenguaje C, es el main() el que se ejecuta al principio, pero no es obligatorio que ocurra todo el tiempo. Los programas sin método principal también se pueden ejecutar. Entonces, es solo la convención por la cual se llama al método principal al principio.
favor compruebe:
Entry point for Java applications: main(), init(), or run()?
- 1. ¿Es necesario el método Principal en un programa Java?
- 2. ¿Utiliza el método principal de clases para la depuración?
- 3. Java - Thread.sleep en el método principal
- 4. Hábitos de Java para el método principal
- 5. Ejecutar el método principal de Java desde una aplicación de escritorio Java en una JVM diferente
- 6. Cómo iniciar el programa Java GUI convenientemente para el usuario final
- 7. ¿Qué método se utiliza para finalizar la ejecución del programa Java en el medio?
- 8. ¿Cómo determinar qué clases utiliza un programa Java?
- 9. llamar a otro método en el principal método en Java
- 10. ¿El applet de Java se ejecuta sin un método principal?
- 11. ocultar la ventana de la consola cuando se utiliza el archivo por lotes para iniciar un programa java?
- 12. Iniciar un agente de Java después del inicio del programa
- 13. Cómo conectarse a un programa Java en localhost jvm usando JMX?
- 14. El programa no contiene un método estático "Principal" adecuado para un punto de entrada
- 15. ¿Podemos sobrecargar el método principal en Java?
- 16. ¿Iniciar el programa en un segundo monitor?
- 17. ¿Cuál es la necesidad de String array en el método principal de JAVA
- 18. Invocar un método de limpieza para el subproceso de usuario Java, cuando JVM detiene el subproceso
- 19. ¿Utiliza una aplicación Java como el programa predeterminado para un tipo de archivo en particular?
- 20. Cómo cerrar un jframe sin cerrar el programa principal
- 21. python: cómo finalizar un hilo cuando finaliza el programa principal
- 22. Llamando al método C# dentro de un programa Java
- 23. Compartir un objeto entre dos hilos y el programa principal
- 24. Tubería de un programa que utiliza WriteConsole
- 25. ¿Cómo implementar el detector de eventos en el fondo del programa principal en Java?
- 26. ¿Utiliza invariantes cuando programa?
- 27. Java: ¿Núcleos disponibles para la JVM?
- 28. ¿Cuál es el exitContext utiliza para en un método WaitHandle.WaitOne
- 29. reemplazar el método principal
- 30. $ 0 (Nombre del programa) en Java? Descubre la clase principal?
en cuenta que no es una palabra clave en C/C++ y C# tampoco. Supongo que es solo una tradición. –