Java – Hola Mundo

El primer programa de siempre. En Java ha hecho falta durante treinta años una clase, un método estático y un arreglo de argumentos para escribir una línea de texto; desde Java 25 ya no.

La versión de toda la vida

public class HolaMundo {
    public static void main(String[] args) {
        System.out.println("Hola Mundo");
    }
}

Guarda el archivo como HolaMundo.java. El nombre del archivo tiene que coincidir con el de la clase, mayúsculas incluidas: es una regla del lenguaje, no una costumbre.

javac HolaMundo.java
java HolaMundo
salidaHolaMundo.class
Hola Mundo

El primer comando llama al compilador y deja un archivo HolaMundo.class, que no es código máquina sino bytecode. El segundo arranca la máquina virtual, que busca ese .class y ejecuta su método main. Al segundo comando no se le pone la extensión.

Qué significa cada palabra

PalabraPor qué está ahí
publicpara que la máquina virtual pueda llamar al método desde fuera
staticpara llamarlo sin crear antes un objeto HolaMundo
voidno devuelve nada
mainel nombre que la máquina virtual busca; ningún otro vale
String[] argslos argumentos de la línea de órdenes, aunque no los uses
System.outla salida estándar; println es su método para escribir una línea
Verás escrito String args[], con los corchetes detrás del nombre. Compila igual —es herencia de C—, pero la forma recomendada en Java es String[] args, con los corchetes pegados al tipo, porque lo que es un arreglo es el tipo, no la variable.

Sin compilar: un solo comando

Desde Java 11 no hace falta compilar a mano para un archivo suelto:

java HolaMundo.java
salidaHola Mundo

La máquina virtual lo compila en memoria y lo ejecuta. No deja ningún .class en el disco. Para probar algo rápido es lo cómodo; para un proyecto de verdad se sigue compilando.

La forma corta de Java 25

Java 25 estrenó los archivos fuente compactos: si el programa es una sola cosa, no hace falta envolverlo en una clase ni declarar el método como público y estático.

void main() {
    IO.println("Hola Mundo");
}
java hola.java
salidaHola Mundo

Son nueve palabras menos. IO.println es una clase nueva de la biblioteca estándar que escribe en la consola sin pasar por System.out; también tiene IO.print y IO.readln para leer del teclado.

Esto no sustituye a lo anterior. Sirve para programas de un archivo: ejercicios, pruebas, utilidades pequeñas. En cuanto el programa crece y se reparte en varias clases, vuelves a la versión completa de arriba, que es la que vas a leer en cualquier proyecto. Conviene entender las dos.

Lo que conviene recordar

Para…Haz
Compilar y ejecutarjavac Clase.java y luego java Clase
Ejecutar sin compilarjava Clase.java, con la extensión
Un programa de un archivo en Java 25void main() suelto, sin clase
Probar una línea sin crear archivosjshell

Más información en inglés: Hello World in Java.

Todo el código se compiló y se ejecutó con Java 25 LTS en un contenedor limpio antes de publicar esta página; las salidas están copiadas de esa ejecución.