1. Información general
Todo programa necesita un lugar para iniciar su ejecución; hablando de programas Java, ese es el método principal . Estamos tan acostumbrados a escribir el método principal durante nuestras sesiones de código, que ni siquiera prestamos atención a sus detalles. En este artículo rápido, analizaremos este método y mostraremos algunas otras formas de escribirlo.2. Firma común
La plantilla de método principal más común es:public static void main(String[] args) { }
Así es como lo hemos aprendido, así es como el IDE autocompleta el código por nosotros. Pero esa no es la única forma que puede asumir este método, hay algunas variantes válidas que podemos usar y no todos los desarrolladores prestan atención a este hecho.
Antes de sumergirnos en esas firmas de métodos, repasemos el significado de cada palabra clave de la firma común:
- public : modificador de acceso, que significa visibilidad global
- estático : se puede acceder al método directamente desde la clase, no tenemos que crear una instancia de un objeto para tener una referencia y usarlo
- void : significa que este método no devuelve un valor
- main : el nombre del método, ese es el identificador que busca JVM al ejecutar un programa Java
En cuanto al parámetro args , representa los valores recibidos por el método. Así es como pasamos argumentos al programa cuando lo iniciamos por primera vez.
El parámetro args es una matriz de String s. En el siguiente ejemplo:
java CommonMainMethodSignature foo bar
estamos ejecutando un programa Java llamado CommonMainMethodSignature y pasando 2 argumentos: foo y bar . Se puede acceder a esos valores dentro del método principal como args [0] (con foo como valor) y args [1] (con bar como valor).
En el siguiente ejemplo, comprobamos los argumentos para decidir si cargamos los parámetros de prueba o de producción:
public static void main(String[] args) { if (args.length > 0) { if (args[0].equals("test")) { // load test parameters } else if (args[0].equals("production")) { // load production parameters } } }
Siempre es bueno recordar que los IDE también pueden pasar argumentos al programa.
3. Diferentes formas de escribir un método main ()
Veamos algunas formas diferentes de escribir el método principal . Aunque no son muy comunes, son firmas válidas.
Tenga en cuenta que ninguno de estos es específico del método principal , se pueden utilizar con cualquier método Java, pero también son una parte válida del método principal .
Los corchetes se pueden colocar cerca de String , como en la plantilla común, o cerca de argumentos en cualquier lado:
public static void main(String []args) { }
public static void main(String args[]) { }
Los argumentos se pueden representar como varargs:
public static void main(String...args) { }
Incluso podemos agregar rigidfp para el método main () , que se usa para la compatibilidad entre procesadores cuando se trabaja con valores de coma flotante:
public strictfp static void main(String[] args) { }
sincronizado y final también son palabras clave válidas para el método principal , pero no tendrán ningún efecto aquí.
Por otro lado, final se puede aplicar a los argumentos para evitar que se modifique la matriz:
public static void main(final String[] args) { }
Para finalizar estos ejemplos, también podemos escribir el método principal con todas las palabras clave anteriores (que, por supuesto, probablemente nunca usará en una aplicación práctica):
final static synchronized strictfp void main(final String[] args) { }
4. Tener más de un método principal ()
También podemos definir más de un método principal dentro de nuestra aplicación.
De hecho, algunas personas lo usan como una técnica de prueba primitiva para validar clases individuales (aunque los marcos de prueba como JUnit están mucho más indicados para esta actividad).
Para especificar qué método principal debe ejecutar la JVM como punto de entrada de nuestra aplicación, usamos el archivo MANIFEST.MF . Dentro del manifiesto, podemos indicar la clase principal:
Main-Class: mypackage.ClassWithMainMethod
Esto se usa principalmente al crear un archivo .jar ejecutable . Indicamos qué clase tiene el método principal para iniciar la ejecución, a través del archivo de manifiesto ubicado en META-INF / MANIFEST.MF (codificado en UTF-8).
5. Conclusión
Este tutorial describió los detalles del método principal y algunas otras formas que puede asumir, incluso las que no son muy comunes para la mayoría de los desarrolladores.
Tenga en cuenta que, aunque todos los ejemplos que hemos mostrado son válidos en términos de sintaxis, solo tienen un propósito educativo y la mayoría de las veces nos ceñiremos a la firma común para hacer nuestro trabajo.