Java main method: el punto de inicio y fin de todos los programas Java

El Java main() method o método main en Java es el punto de inicio y fin de todo programa en Java. Durante la ejecución solo se tienen en cuenta las sentencias que están dentro de su ámbito. Por eso es tan importante que la sintaxis del método se respete hasta el más mínimo detalle al crear el código. Si es incorrecta, el programa no se ejecutará.

¿Qué es el método main() en Java?

Independientemente del proyecto que quieras realizar con este lenguaje de programación y del código conciso o extenso que utilices para ello, en Java, toda aplicación comienza con el método main. Si este no está disponible, el código no puede ejecutarse. Antes de pasar a main(), primero se carga la máquina virtual Java (JVM) en la memoria y se compila el código. Una vez completados estos pasos, el código se pasa al método main() de Java para su comprobación y debería ejecutarse correctamente. En principio, también es posible utilizar varios de estos métodos, aunque el máximo es un método main por clase.

La sintaxis del método main() en Java

La sintaxis del método main en Java es siempre la misma y consta de varias partes importantes. Este es su aspecto:

public static void main(String[] args)
java

Estos componentes cumplen las siguientes funciones:

  • public: garantiza que también se puede acceder a una clase desde fuera.
  • static: declara el método como estático. Esto significa que puede existir sin que se haya creado previamente un objeto de una clase específica.
  • void: asegura que el método main no tiene que devolver un valor.
  • main: es el nombre con el que la máquina virtual Java puede identificar el método en cuanto ejecuta un programa.
  • String[] args: es un array en el que se almacenan y reciben los argumentos de la línea de comandos.

Los distintos componentes y sus ventajas

Para entender mejor cómo funciona el método main en Java y por qué todos sus componentes son tan importantes, volveremos a repasarlos individualmente en las secciones que aparecen a continuación. En particular, mostraremos qué ocurre si falta parte de la firma. Para ello, elegiremos un ejemplo de código muy sencillo, que mostraremos con el comando Java System.out.println. Se vería así:

public class main {
	public static void main(String[] args) {
		System.out.println("Texto de ejemplo.");
	}
}
bash

Si ejecutas este código, obtendrás el siguiente resultado:

Texto de ejemplo.
bash

public

public actúa como especificador de acceso y señala a la máquina virtual Java dónde se ejecuta el programa correspondiente. Existen otros modificadores de acceso como default, private o protected. Sin embargo, si los utilizas dentro del método main, recibirás un mensaje de error:

public class main {
	private static void main(String[] args) {
		System.out.println("Texto de ejemplo.");
	}
}
bash

El resultado correspondiente es:

Error: Main method not found in class, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
bash

Este mensaje de error indica que no hay acceso público al método.

static

El hecho de que el método utilizado sea estático queda confirmado por la palabra clave “static”. Por lo tanto, también se puede utilizar independientemente de cualquier instancia de clase creada. Si se elimina la declaración como “static”, el código queda así:

public class main {
	public void main(String[] args) {
		System.out.println("Texto de ejemplo.");
	}
}
bash

En este caso, también recibirás un mensaje de error en lugar del resultado deseado:

Error: Main method is not static in class test, please define the main method as:
public static void main(String[] args)
bash

void

“Void” es una palabra que especifica que el método main no debe devolver ningún valor. Como main() es el punto de inicio y fin de un programa en Java, no sería necesario devolver ningún valor. Este es el aspecto que tendría el código sin “void”:

public class main {
	public static main(String[] args) {
		System.out.println("Texto de ejemplo.");
	}
}
bash

Este es el mensaje de error que provoca la omisión de la palabra clave:

Error: Main method must return a value of type void in class Main, please define the main method as:
public static void main(String[] args)
bash

main

Para cada programa en Java, la JVM busca primero el llamado identificador “main”. Este indica dónde debe comenzar y terminar la ejecución. En cuanto finaliza el método main, también finaliza la salida. Por lo tanto, esta firma no debe modificarse ni añadirse nunca. Si hacemos esto en nuestro ejemplo, el código queda así:

public class main {
	public static void ersatzMain(String[] args) {
		System.out.println("Texto de ejemplo.");
	}
}
bash

Como la JVM no puede encontrar el identificador, terminará el programa directamente y solo emitirá el siguiente mensaje de error:

Error: Main method not found in class, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
bash

String[] args

El array String[] args corresponde a la clase java.lang.String y contiene datos que almacena como valores de cadena. Si omites esta especificación, el código cambia:

public class main {
	public static void main() {
		System.out.println("Texto de ejemplo.");
	}
}
bash

Sin el argumento, el Java main method no puede ejecutarse y volverás a recibir el siguiente mensaje de error:

Error: Main method not found in class, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
bash

Ortografías alternativas

El ejemplo de código que se muestra aquí se ha escrito siguiendo la sintaxis más habitual. Sin embargo, puedes adaptarlo fácilmente si quieres una mejor visión general. Por ejemplo, es posible colocar los corchetes directamente después de “args”. Quedaría así:

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

También puedes almacenar argumentos como “varargs”, es decir, listas de argumentos variables:

public static void main(String…args) { }
java
Consejo

En nuestra Digital Guide encontrarás otros muchos artículos sobre Java. Por ejemplo, hemos hecho una comparación de Java y JavaScript y reunido los operadores Java más importantes.

¿Le ha resultado útil este artículo?
Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continua navegando, consideramos que acepta su uso. Puede obtener más información, o bien conocer cómo cambiar la configuración de su navegador en nuestra. Política de Cookies.
Page top