El método main() en Java

El método main() en Java sirve como punto de entrada para una aplicación. Es un bloque de código que se ejecuta cuando se inicia el programa. El método main() es necesario para iniciar la ejecución de un programa Java y es una parte obligatoria de cada aplicación Java. Profundicemos en los detalles del método main() en Java.

Sintaxis del método main()

En Java, el método main() se encuentra dentro de una clase y sirve como punto de partida para la ejecución de un programa Java. El método main() debe declararse con la siguiente firma:

public class HelloWorld {

	public static void main(String[] args){

		//Some logic here

	}

}

Este método normalmente se encuentra dentro de una clase que contiene el punto de entrada del programa. La clase en sí puede tener el nombre que desee, pero el método main() siempre debe llamarse «main» y tener la firma especificada, de lo contrario, la JVM no será capaz de encontrar el método y obtendremos el siguiente error:

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

Ejecutar el programa

Para ejecutar un programa Java independiente desde la línea de comandos, primero debe asegurarse de tener el kit de Java Development Kit (JDK) instalado en su computadora. Una vez que esté implementado, puede seguir estos pasos para ejecutar su programa Java:

  1. Compile el programa: utilice el comando javac para compilar su programa Java. Por ejemplo, si su programa se llama «HelloWorld.java«, ejecutaría el siguiente comando: javac HelloWorld.java. Esto generará un archivo llamado «HelloWorld.class«, que contiene el código de bytes de su programa.
  2. Ejecute el programa: después de compilar el programa, puede usar el comando java para ejecutarlo. Si su programa contiene un método main(), puede ejecutarlo escribiendo java HelloWorld en la línea de comando. Esto invocará el método main() y ejecutará el programa.

Por ejemplo, digamos que tiene un programa Java simple llamado «HelloWorld» con un método main().

El proyecto estará ubicado en un directorio base llamado «HelloWorld«. El directorio «HelloWorld» contendrá a su vez, dos subdirectorios:

  • El subdirectorio «src» destinado a contener los archivos fuente (HelloWorld.java).
  • El subdirectorio «bin» que contendrá los archivos compilados (HelloWorld.class).
el-metodo-main-en-java

En el contexto del proyecto «HelloWorld«, el primer paso es navegar al directorio base del proyecto usando la línea de comando. Una vez en el directorio «HelloWorld«, el archivo de código fuente «HelloWorld.java» debe colocarse en el subdirectorio «src» y el archivo compilado «HelloWorld.class» debe ubicarse en el subdirectorio «bin«.

Para compilar el programa Java desde la línea de comando, se utiliza el comando javac. Mientras se encuentra en el directorio «HelloWorld«, se debe ejecutar el siguiente comando para compilar el archivo «HelloWorld.java» y colocar la salida compilada en el directorio «bin«:

javac -d bin src/HelloWorld.java

Este comando compila el archivo «HelloWorld.java» y coloca el archivo «HelloWorld.class» resultante en el directorio «bin«.

Después de una compilación exitosa, el programa Java independiente se puede ejecutar usando el comando java. Mientras se encuentra en el directorio «HelloWorld«, se debe ejecutar el siguiente comando para ejecutar el archivo compilado «HelloWorld.class» desde el directorio «bin«:

java -cp bin HelloWorld

El indicador -cp se utiliza para especificar la ruta de clases y «HelloWorld» es el nombre de la clase que contiene el método main(). Este comando invocará el método main() en la clase «HelloWorld» y ejecutará el programa Java.

Cómo pasar argumentos al método main()

Pasar argumentos al método main() proporciona un medio flexible de interactuar con un programa Java, haciéndolo adaptable a diversos casos de uso. Ya sea que se trate de proporcionar rutas de archivos, parámetros de configuración o entradas de datos, comprender cómo manejar eficazmente los argumentos de la línea de comandos permite crear aplicaciones versátiles e interactivas.

Consideremos el siguiente programa:

public class HelloWorld {
	public static void main(String[] args) {

		if (args.length > 0){
			System.out.println("-> Listado de argumentos ingresados:");

			for (int i = 0; i < args.length; i++){
				System.out.println("-> " + args[i]);
			}
		} else {
			System.out.println("-> No se ingresaron argumentos.");
		}

	}
}

En este ejemplo, el método main() de la clase HelloWorld acepta un array de String como parámetro. Este array contiene los argumentos de la línea de comandos pasados cuando se ejecuta el programa. El programa comprueba si se pasó algún argumento y, de ser así, recorre el array e imprime cada argumento. Si no se pasaron argumentos, simplemente imprime un mensaje indicándolo.

Al ejecutar este programa desde la línea de comando, se pueden pasar argumentos después del nombre del programa, por ejemplo:

java -cp bin HelloWorld arg1 arg2 arg3

La salida luego mostraría:

-> Listado de argumentos ingresados:
-> arg1
-> arg2
-> arg3

Tratar cadenas compuestas como un parámetro único

Puedes encontrarte con escenarios donde un argumento de línea de comando contiene espacios y debe tratarse como un parámetro único. Por ejemplo, al pasar una ruta de archivo como argumento, como «C:\Program Files\example.txt«, la ruta completa debe considerarse como un único parámetro. Para lograr esto, puede encerrar la cadena compuesta entre comillas dobles durante la entrada y el programa Java debe manejarla como un argumento único durante el procesamiento.

public class FileProcessor {
    public static void main(String[] args) {
        String filePath = args[0];
        System.out.println("File path: " + filePath);
    }
}

Cuando se ejecuta el programa Java desde la línea de comandos, la cadena compuesta se puede pasar como un parámetro único entre comillas dobles:

java -cp bin FileProcessor "C:\Program Files\example.txt"

Procesar una fecha

Cuando un programa Java requiere información de fecha como argumento de línea de comandos, se vuelve necesario analizar y procesar la fecha proporcionada. Supongamos que el programa necesita procesar una fecha en el formato «yyyy-MM-dd«. El método main() puede analizar la cadena de entrada utilizando la clase SimpleDateFormat para garantizar que coincida con el formato requerido y luego procesarla dentro del programa.

import java.text.SimpleDateFormat;
import java.util.Date;

public class DateProcessor {
    public static void main(String[] args) {
        if (args.length > 0) {
            String inputDate = args[0];
            try {
                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
                Date date = dateFormat.parse(inputDate);
                System.out.println("Fecha procesada: " + date);
            } catch (java.text.ParseException e) {
                System.err.println("Formato inválido. Por favor use yyyy-MM-dd.");
            }
        } else {
            System.err.println("Por favor, ingrese una fecha como argumento.");
        }
    }
}

Conclusión

En este artículo hemos repasado las principales características de el método main() en Java, y destacado su relevancia como punto de entrada para cualquier programa Java standalone.


Te puede interesar