¿Qué es Java? Historia, características y primer programa

📅 Actualizado en marzo 2026 ✍️ Ángel López ⏱️ 18 min de lectura ✓ Nivel principiante ★ ★ ★ ★ ★ (5/5)

☕ ¿Qué es Java?

Java es un lenguaje de programación de propósito general, orientado a objetos y diseñado para ser independiente de la plataforma donde se ejecute. Su filosofía fundacional se resume en el lema «Write Once, Run Anywhere» (WORA): un programa escrito en Java puede ejecutarse en cualquier dispositivo que disponga de una Máquina Virtual de Java (JVM), sin necesidad de recompilarlo.

Desde su lanzamiento público en 1995, Java se ha consolidado como uno de los lenguajes de programación más utilizados del mundo. Se emplea en una enorme variedad de contextos: desde aplicaciones empresariales de gran escala y sistemas bancarios hasta aplicaciones móviles Android, servidores web, sistemas embebidos y plataformas de big data. Según el índice TIOBE, Java se mantiene de forma consistente entre los tres lenguajes más populares a nivel global.

Java es un lenguaje fuertemente tipado, lo que significa que el tipo de cada variable debe declararse explícitamente y el compilador verifica la compatibilidad de tipos antes de la ejecución. Esta característica, junto con su gestión automática de memoria mediante el garbage collector, reduce considerablemente los errores comunes de programación y contribuye a la robustez del código producido.

Dato clave: Java no es solo un lenguaje, sino toda una plataforma tecnológica que incluye el lenguaje de programación, la máquina virtual (JVM), las bibliotecas estándar (API) y un conjunto de herramientas de desarrollo (JDK).

📜 Historia de Java: de Oak a Oracle

La historia de Java comienza en 1991, cuando un equipo de ingenieros de Sun Microsystems liderado por James Gosling inició el proyecto «Green». El objetivo original no era crear un lenguaje para ordenadores de escritorio, sino desarrollar un lenguaje para dispositivos electrónicos de consumo como televisores inteligentes y electrodomésticos conectados, una visión que se adelantó décadas al concepto actual de Internet de las Cosas (IoT).

El lenguaje se llamó inicialmente Oak (roble), inspirado en un árbol que Gosling veía desde la ventana de su oficina. Sin embargo, al descubrir que ese nombre ya estaba registrado como marca comercial, el equipo lo rebautizó como Java, en referencia a un tipo de café procedente de la isla de Java (Indonesia), bebida que el equipo consumía en grandes cantidades durante el desarrollo.

El verdadero despegue de Java se produjo en 1995, coincidiendo con la explosión de Internet. Sun Microsystems presentó Java al mundo y lanzó el navegador HotJava, capaz de ejecutar applets Java incrustados en páginas web. Poco después, Netscape Navigator integró soporte para applets Java, lo que catapultó su adopción masiva.

AñoHitoVersión
1991Inicio del proyecto Green en Sun Microsystems
1995Lanzamiento público de Java 1.0JDK 1.0
1998Java 2: Swing, Collections FrameworkJ2SE 1.2
2004Generics, autoboxing, enums, for-eachJ2SE 5.0
2010Oracle adquiere Sun Microsystems
2014Expresiones lambda y Stream APIJava 8 (LTS)
2017Nuevo ciclo de releases semestralesJava 9+
2018Primera LTS del nuevo cicloJava 11 (LTS)
2021Sealed classes, pattern matchingJava 17 (LTS)
2023Virtual threads, record patternsJava 21 (LTS)

En 2010, Oracle Corporation adquirió Sun Microsystems por aproximadamente 7.400 millones de dólares. Desde entonces, Oracle gestiona el desarrollo de Java, manteniendo un ciclo de lanzamiento semestral (marzo y septiembre) con versiones LTS cada dos años. La última versión con soporte a largo plazo es Java 21 LTS, lanzada en septiembre de 2023.

⚙️ Características principales de Java

Java fue diseñado desde el principio con un conjunto de características que lo diferencian de otros lenguajes de su generación. Estas propiedades explican su longevidad y su adopción masiva en entornos empresariales:

Orientado a objetos

Todo en Java gira en torno a objetos y clases. Soporta los cuatro pilares de la programación orientada a objetos: encapsulamiento, herencia, polimorfismo y abstracción. A diferencia de lenguajes como C++, Java no permite funciones globales sueltas: todo método debe pertenecer a una clase.

Independiente de la plataforma

El código fuente Java (.java) se compila a bytecode (.class), un formato intermedio que no depende de ningún sistema operativo ni arquitectura de procesador. La JVM instalada en cada plataforma se encarga de interpretar o compilar ese bytecode en instrucciones nativas. Esto permite que el mismo archivo .class se ejecute en Windows, Linux, macOS o cualquier otro sistema que disponga de una JVM.

Robusto y seguro

Java elimina los punteros explícitos (a diferencia de C/C++), gestiona la memoria automáticamente mediante el garbage collector, verifica los tipos en tiempo de compilación, comprueba los límites de los arrays en tiempo de ejecución y dispone de un sistema de excepciones que obliga a manejar los errores de forma explícita. Además, la JVM incluye un verificador de bytecode y un gestor de seguridad que impiden la ejecución de código malicioso.

Multihilo (multithreaded)

Java incluye soporte nativo para la programación concurrente mediante la clase Thread y la interfaz Runnable. Desde Java 21, el lenguaje incorpora además los virtual threads (hilos virtuales), que permiten crear millones de hilos ligeros con un coste mínimo de memoria, revolucionando la programación concurrente en el servidor.

Alto rendimiento

Aunque Java es un lenguaje interpretado por la JVM, las implementaciones modernas utilizan compilación JIT (Just-In-Time) que traduce el bytecode a código nativo durante la ejecución. Esto permite un rendimiento muy cercano al de lenguajes compilados como C++, especialmente en aplicaciones de larga duración donde el JIT tiene tiempo de optimizar las rutas más frecuentes.

CaracterísticaDescripciónBeneficio práctico
Orientado a objetosTodo es una clase; soporta herencia, polimorfismo, encapsulamientoCódigo modular y reutilizable
MultiplataformaBytecode ejecutable en cualquier JVMUn solo código para todos los SO
RobustoSin punteros, garbage collector, excepciones obligatoriasMenos bugs en producción
SeguroVerificador de bytecode, sandbox, gestor de seguridadProtección contra código malicioso
MultihiloThreads nativos y virtual threads (Java 21+)Aplicaciones concurrentes eficientes
Alto rendimientoCompilación JIT, optimización en tiempo de ejecuciónRendimiento cercano a C++ en servidor
DistribuidoSoporte nativo para TCP/IP, HTTP, RMIIdeal para sistemas en red

🖥️ La Máquina Virtual de Java (JVM)

La JVM (Java Virtual Machine) es el componente fundamental que hace posible la independencia de plataforma de Java. Se trata de una máquina virtual que actúa como capa intermedia entre el bytecode Java y el hardware real del ordenador. Cada sistema operativo tiene su propia implementación de JVM, pero todas entienden el mismo bytecode.

El proceso completo funciona así: el programador escribe código fuente en archivos .java. El compilador javac transforma ese código en archivos .class que contienen bytecode. Cuando se ejecuta el programa, la JVM carga esos archivos .class, verifica que el bytecode sea válido y seguro, y lo ejecuta utilizando una combinación de interpretación y compilación JIT.

Flujo de compilación y ejecución
Código fuente (.java)
        │
        ▼  javac (compilador)
Bytecode (.class)
        │
        ▼  JVM (máquina virtual)
        │
   ┌────┴────┐
   │ Windows │  Linux  │  macOS  │  ...
   └─────────┘─────────┘─────────┘
   
   El mismo .class se ejecuta en cualquier plataforma con JVM
Consejo: La JVM no es exclusiva de Java. Otros lenguajes como Kotlin, Scala, Groovy y Clojure también compilan a bytecode y se ejecutan sobre la JVM, lo que les permite interoperar con código Java existente.

📦 Ediciones de Java: SE, EE y ME

Java se distribuye en tres ediciones principales, cada una orientada a un tipo diferente de desarrollo:

EdiciónNombre completoUso principalEjemplos de uso
Java SEStandard EditionAplicaciones de escritorio y base del lenguajeHerramientas, utilidades, aprendizaje
Java EEEnterprise Edition (ahora Jakarta EE)Aplicaciones empresariales y servidores webAPIs REST, microservicios, portales corporativos
Java MEMicro EditionDispositivos con recursos limitadosIoT, tarjetas SIM, sistemas embebidos

Para aprender Java, la edición Java SE es el punto de partida obligatorio. Incluye todas las clases y APIs fundamentales del lenguaje: tipos de datos, colecciones, entrada/salida, concurrencia, networking y más. Las ediciones EE y ME se construyen sobre SE, añadiendo funcionalidades específicas para sus respectivos dominios.

Nota importante: En 2017, Oracle transfirió Java EE a la Eclipse Foundation, que lo rebautizó como Jakarta EE. Los paquetes cambiaron de javax.* a jakarta.*, pero la funcionalidad se mantiene y evoluciona activamente.

🔧 JDK, JRE y JVM: diferencias clave

Uno de los puntos de confusión más frecuentes para quienes se inician en Java es la diferencia entre JDK, JRE y JVM. Los tres están relacionados pero cumplen funciones distintas, y se organizan de forma concéntrica:

Relación entre JDK, JRE y JVM
┌─────────────────────────────────────────────┐
│  JDK (Java Development Kit)                 │
│  ┌─────────────────────────────────────────┐ │
│  │  JRE (Java Runtime Environment)         │ │
│  │  ┌─────────────────────────────────────┐│ │
│  │  │  JVM (Java Virtual Machine)         ││ │
│  │  │  - Carga bytecode                   ││ │
│  │  │  - Verifica seguridad               ││ │
│  │  │  - Ejecuta (interpreta + JIT)       ││ │
│  │  └─────────────────────────────────────┘│ │
│  │  + Bibliotecas estándar (java.lang,     │ │
│  │    java.util, java.io, java.net...)     │ │
│  └─────────────────────────────────────────┘ │
│  + javac (compilador)                        │
│  + jdb (depurador)                           │
│  + javadoc (documentación)                   │
│  + jar (empaquetador)                        │
│  + jshell (REPL interactivo desde Java 9)    │
└─────────────────────────────────────────────┘

Para programar en Java se necesita el JDK. El JRE sería suficiente para ejecutar programas ya compilados, pero desde Java 11 Oracle ya no distribuye el JRE como producto independiente: al instalar el JDK se obtiene también el entorno de ejecución completo.

💾 Instalación del JDK paso a paso

Para comenzar a programar en Java es necesario instalar el JDK (Java Development Kit). Existen varias distribuciones gratuitas y fiables:

DistribuciónProveedorLicenciaRecomendado para
Oracle JDKOracleNFTC (gratuita)Producción empresarial
Eclipse TemurinAdoptiumOpen Source (GPLv2+CE)Desarrollo y aprendizaje
Amazon CorrettoAmazonOpen Source (GPLv2+CE)Entornos AWS
Azul ZuluAzul SystemsOpen SourceMicroservicios

Instalación en Windows

El proceso de instalación en Windows consta de tres pasos fundamentales: descargar el instalador, ejecutarlo y configurar las variables de entorno.

Configuración de variables de entorno en Windows (CMD)
:: 1. Establecer JAVA_HOME (ruta donde se instaló el JDK)
setx JAVA_HOME "C:\Program Files\Java\jdk-21"

:: 2. Añadir el directorio bin al PATH del sistema
setx PATH "%PATH%;%JAVA_HOME%\bin"

:: 3. Verificar la instalación
java -version
javac -version

Instalación en Linux (Ubuntu/Debian)

Instalación del JDK en Ubuntu/Debian
# Actualizar repositorios
sudo apt update

# Instalar OpenJDK 21
sudo apt install openjdk-21-jdk

# Verificar la instalación
java -version
# Salida esperada: openjdk version "21.0.x" ...

javac -version
# Salida esperada: javac 21.0.x

Instalación en macOS

Instalación del JDK en macOS con Homebrew
# Instalar mediante Homebrew
brew install openjdk@21

# Crear enlace simbólico para que el sistema lo detecte
sudo ln -sfn /opt/homebrew/opt/openjdk@21/libexec/openjdk.jdk \
    /Library/Java/JavaVirtualMachines/openjdk-21.jdk

# Verificar
java -version
Importante: Tras la instalación, es fundamental verificar que tanto java (la JVM) como javac (el compilador) están accesibles desde la terminal. Si el comando javac -version no se reconoce, la variable PATH no está configurada correctamente.

🚀 Tu primer programa en Java: Hola Mundo

El programa «Hola Mundo» es el ejemplo clásico para verificar que el entorno de desarrollo funciona correctamente y para comprender la estructura básica de un programa Java. Aunque es sencillo, ilustra varios conceptos fundamentales del lenguaje.

HolaMundo.java
/**
 * Primer programa en Java.
 * Demuestra la estructura básica: clase, método main y salida por consola.
 */
public class HolaMundo {

    public static void main(String[] args) {
        System.out.println("¡Hola, Mundo!");
        System.out.println("Bienvenido al curso de Java de Ciberaula.");
    }
}
// Salida esperada:
// ¡Hola, Mundo!
// Bienvenido al curso de Java de Ciberaula.

Analicemos cada elemento de este programa:

ElementoSignificado
public class HolaMundoDeclara una clase pública llamada HolaMundo. El nombre del archivo debe coincidir: HolaMundo.java
public static void main(String[] args)El método principal: punto de entrada del programa. La JVM busca exactamente esta firma para iniciar la ejecución
System.out.println()Imprime una línea de texto en la consola. System es una clase, out es su flujo de salida estándar, y println es el método que imprime con salto de línea
Compilar y ejecutar desde la terminal
# Paso 1: Compilar el archivo fuente
javac HolaMundo.java
# Genera: HolaMundo.class (bytecode)

# Paso 2: Ejecutar el programa (sin extensión .class)
java HolaMundo

# Salida:
# ¡Hola, Mundo!
# Bienvenido al curso de Java de Ciberaula.

# Alternativa desde Java 11: ejecución directa sin compilar explícitamente
java HolaMundo.java
Consejo: Desde Java 11, es posible ejecutar directamente un archivo .java de una sola clase sin compilarlo previamente, mediante java NombreArchivo.java. Esto es muy útil para pruebas rápidas y aprendizaje.

🔄 Proceso de compilación e interpretación

Java utiliza un modelo híbrido que combina compilación e interpretación. Este proceso de dos fases es lo que permite la portabilidad del código entre distintas plataformas:

Fase 1 — Compilación: el compilador javac analiza el código fuente (.java), verifica la sintaxis y los tipos, y genera bytecode (.class). El bytecode es un conjunto de instrucciones de bajo nivel diseñado para la JVM, no para ningún procesador real específico.

Fase 2 — Ejecución: la JVM carga el bytecode, lo verifica y lo ejecuta. Las JVM modernas utilizan un compilador JIT (Just-In-Time) que detecta las secciones de código ejecutadas con mayor frecuencia (hot spots) y las compila a código máquina nativo para maximizar el rendimiento.

Ejemplo: el bytecode generado por javac
# Compilar
javac HolaMundo.java

# Ver el bytecode descompilado (herramienta javap incluida en el JDK)
javap -c HolaMundo.class

# Salida parcial:
# public static void main(java.lang.String[]);
#   Code:
#      0: getstatic     #7   // Field java/lang/System.out
#      3: ldc           #13  // String ¡Hola, Mundo!
#      5: invokevirtual #15  // Method PrintStream.println
#      8: return

🛠️ Entornos de desarrollo (IDE) recomendados

Aunque es posible escribir código Java con un simple editor de texto y compilar desde la terminal, los IDE (Integrated Development Environment) proporcionan herramientas que aceleran enormemente el desarrollo: autocompletado inteligente, depuración visual, refactorización automática, integración con sistemas de control de versiones y gestión de dependencias.

IDEDesarrolladorLicenciaCaracterísticas destacadas
IntelliJ IDEAJetBrainsCommunity (gratis) / Ultimate (pago)Autocompletado superior, refactorización avanzada, soporte Kotlin nativo. El IDE más popular entre desarrolladores Java profesionales.
EclipseEclipse FoundationOpen Source (EPL)Extensible mediante plugins, larga trayectoria, gran comunidad. Base de Jakarta EE Tools.
Visual Studio CodeMicrosoftOpen Source (MIT)Ligero, extensiones Java de Red Hat/Microsoft, ideal para proyectos pequeños y aprendizaje.
Apache NetBeansApache FoundationOpen Source (Apache 2.0)Soporte nativo para Maven/Gradle, editor visual de interfaces Swing.
Recomendación para principiantes: Si estás empezando, IntelliJ IDEA Community Edition (gratuito) es la mejor opción. Su autocompletado inteligente y sus mensajes de error claros facilitan enormemente el aprendizaje. Si se prefiere algo más ligero, Visual Studio Code con las extensiones Java de Red Hat también es una excelente alternativa.

⚔️ Java frente a otros lenguajes

Una de las preguntas más habituales al elegir un lenguaje de programación es cómo se compara Java con otras opciones populares. La siguiente tabla resume las diferencias más relevantes:

AspectoJavaPythonC++JavaScript
ParadigmaOO estrictoMultiparadigmaMultiparadigmaMultiparadigma
TipadoEstático y fuerteDinámico y fuerteEstático y fuerteDinámico y débil
CompilaciónBytecode + JITInterpretadoNativoInterpretado / JIT
RendimientoAltoMedio-bajoMuy altoMedio-alto (V8)
Gestión memoriaGarbage collectorGarbage collectorManualGarbage collector
Curva aprendizajeMediaBajaAltaBaja-media
Uso principalEmpresas, AndroidIA, datos, scriptingSistemas, juegosWeb frontend/backend

Java ocupa un nicho privilegiado: ofrece un rendimiento significativamente superior al de Python, una seguridad y gestión de memoria muy superiores a C++, y un ecosistema empresarial sin rival. Su tipado estático atrapa errores en tiempo de compilación, algo que lenguajes dinámicos como Python o JavaScript solo detectan en tiempo de ejecución.

🌍 Aplicaciones reales de Java en la industria

Java se utiliza en prácticamente todos los sectores tecnológicos. Estas son algunas de las áreas donde su presencia es dominante:

Aplicaciones empresariales: la mayoría de las grandes corporaciones (bancos, aseguradoras, telecomunicaciones, administración pública) construyen sus sistemas back-end con Java. Frameworks como Spring Boot y Jakarta EE dominan el desarrollo de microservicios y APIs REST en el entorno corporativo.

Desarrollo Android: Java fue el lenguaje oficial de Android desde sus inicios en 2008. Aunque Kotlin es ahora el lenguaje preferido por Google para nuevas aplicaciones, millones de aplicaciones Android existentes están escritas en Java, y el conocimiento de Java sigue siendo un requisito habitual para desarrolladores Android.

Big Data: el ecosistema de Big Data se construyó mayoritariamente sobre Java. Herramientas como Apache Hadoop, Apache Spark, Apache Kafka y Elasticsearch están escritas en Java o en lenguajes de la JVM. Esto convierte a Java en un lenguaje esencial para ingenieros de datos.

Computación en la nube: los principales proveedores de nube (AWS, Google Cloud, Azure) ofrecen SDKs nativos para Java, y la mayor parte de la infraestructura interna de estos servicios utiliza Java. Amazon, por ejemplo, es uno de los mayores usuarios de Java del mundo.

🧩 Ejemplo integrador: calculadora de notas

El siguiente ejemplo reúne varios conceptos fundamentales de Java: declaración de clase, método main, variables, arrays, bucles, condicionales y salida por consola. Simula una calculadora que recibe las notas de un estudiante, calcula la media y determina si ha aprobado.

CalculadoraNotas.java — Ejemplo integrador
/**
 * Calculadora de notas de un estudiante.
 * Demuestra: arrays, bucles, condicionales y formateo de salida.
 */
public class CalculadoraNotas {

    public static void main(String[] args) {

        // Notas del estudiante (sobre 10)
        double[] notas = {7.5, 8.0, 6.5, 9.0, 5.5};
        String[] asignaturas = {
            "Programación", "Bases de Datos",
            "Redes", "Sistemas Operativos", "Matemáticas"
        };

        // Calcular suma y media
        double suma = 0;
        for (double nota : notas) {
            suma += nota;
        }
        double media = suma / notas.length;

        // Mostrar resultados por asignatura
        System.out.println("╔══════════════════════════════════╗");
        System.out.println("║   BOLETÍN DE CALIFICACIONES      ║");
        System.out.println("╠══════════════════════════════════╣");

        for (int i = 0; i < notas.length; i++) {
            String estado = notas[i] >= 5.0 ? "APROBADO" : "SUSPENSO";
            System.out.printf("║ %-20s %4.1f  %-8s ║%n",
                asignaturas[i], notas[i], estado);
        }

        System.out.println("╠══════════════════════════════════╣");
        System.out.printf("║ Media: %.2f                      ║%n", media);

        // Resultado final
        if (media >= 9.0) {
            System.out.println("║ Calificación: SOBRESALIENTE      ║");
        } else if (media >= 7.0) {
            System.out.println("║ Calificación: NOTABLE             ║");
        } else if (media >= 5.0) {
            System.out.println("║ Calificación: APROBADO            ║");
        } else {
            System.out.println("║ Calificación: SUSPENSO            ║");
        }

        System.out.println("╚══════════════════════════════════╝");
    }
}
// Salida esperada:
// ╔══════════════════════════════════╗
// ║   BOLETÍN DE CALIFICACIONES      ║
// ╠══════════════════════════════════╣
// ║ Programación            7.5  APROBADO ║
// ║ Bases de Datos          8.0  APROBADO ║
// ║ Redes                   6.5  APROBADO ║
// ║ Sistemas Operativos     9.0  APROBADO ║
// ║ Matemáticas             5.5  APROBADO ║
// ╠══════════════════════════════════╣
// ║ Media: 7.30                      ║
// ║ Calificación: NOTABLE             ║
// ╚══════════════════════════════════╝

✏️ Ejercicios prácticos resueltos

Practica lo aprendido con estos ejercicios progresivos. Intenta resolverlos antes de consultar la solución.

Ejercicio 1: Datos personales (Nivel básico)

Escribe un programa Java que declare variables para nombre, edad y ciudad, y muestre por consola un mensaje con estos datos formateados.

Ver solución
DatosPersonales.java
public class DatosPersonales {

    public static void main(String[] args) {
        String nombre = "María García";
        int edad = 22;
        String ciudad = "Madrid";

        System.out.println("=== Ficha Personal ===");
        System.out.println("Nombre: " + nombre);
        System.out.println("Edad: " + edad + " años");
        System.out.println("Ciudad: " + ciudad);
        System.out.printf("Resumen: %s, %d años, de %s.%n", nombre, edad, ciudad);
    }
}
// Salida esperada:
// === Ficha Personal ===
// Nombre: María García
// Edad: 22 años
// Ciudad: Madrid
// Resumen: María García, 22 años, de Madrid.

Ejercicio 2: Conversor de temperatura (Nivel intermedio)

Crea un programa que convierta temperaturas de Celsius a Fahrenheit y viceversa. Declara un array con las temperaturas 0, 20, 37, 100 en Celsius y muestra su equivalencia en Fahrenheit usando la fórmula: F = C × 9/5 + 32.

Ver solución
ConversorTemperatura.java
public class ConversorTemperatura {

    public static void main(String[] args) {
        double[] celsius = {0, 20, 37, 100};

        System.out.println("┌────────────┬────────────────┐");
        System.out.println("│  Celsius   │  Fahrenheit    │");
        System.out.println("├────────────┼────────────────┤");

        for (double c : celsius) {
            double f = c * 9.0 / 5.0 + 32;
            System.out.printf("│  %6.1f °C │  %8.1f °F   │%n", c, f);
        }

        System.out.println("└────────────┴────────────────┘");
    }
}
// Salida esperada:
// ┌────────────┬────────────────┐
// │  Celsius   │  Fahrenheit    │
// ├────────────┼────────────────┤
// │     0.0 °C │      32.0 °F   │
// │    20.0 °C │      68.0 °F   │
// │    37.0 °C │      98.6 °F   │
// │   100.0 °C │     212.0 °F   │
// └────────────┴────────────────┘

Ejercicio 3: Verificador de números primos (Nivel avanzado)

Escribe un programa que determine si un número es primo. El programa debe verificar los números del 1 al 20 y mostrar cuáles son primos y cuáles no.

Ver solución
VerificadorPrimos.java
public class VerificadorPrimos {

    /**
     * Determina si un número es primo.
     * Un número primo solo es divisible por 1 y por sí mismo.
     */
    public static boolean esPrimo(int numero) {
        if (numero < 2) {
            return false;
        }
        // Solo necesitamos comprobar hasta la raíz cuadrada
        for (int i = 2; i <= Math.sqrt(numero); i++) {
            if (numero % i == 0) {
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        System.out.println("Números primos del 1 al 20:");
        System.out.println("─".repeat(30));

        int contadorPrimos = 0;

        for (int i = 1; i <= 20; i++) {
            if (esPrimo(i)) {
                System.out.printf("  %2d → PRIMO%n", i);
                contadorPrimos++;
            } else {
                System.out.printf("  %2d → no primo%n", i);
            }
        }

        System.out.println("─".repeat(30));
        System.out.printf("Total de primos encontrados: %d%n", contadorPrimos);
    }
}
// Salida esperada (parcial):
//   1 → no primo
//   2 → PRIMO
//   3 → PRIMO
//   4 → no primo
//   5 → PRIMO
//   ...
// Total de primos encontrados: 8

❓ Preguntas frecuentes sobre ¿Qué es Java? Historia, características y primer programa

Las dudas más comunes respondidas de forma clara y directa.

No. Aunque comparten parte del nombre, son lenguajes completamente distintos. Java es un lenguaje compilado y fuertemente tipado que se ejecuta sobre la JVM. JavaScript es un lenguaje interpretado, de tipado dinámico, diseñado originalmente para navegadores web. La similitud en el nombre fue una decisión de marketing de Netscape en los años 90.
Sí, Java es gratuito para uso comercial. Desde 2023, Oracle JDK se distribuye bajo la licencia Oracle No-Fee Terms and Conditions (NFTC) que permite uso comercial sin coste. Además, existen distribuciones completamente libres como OpenJDK, Amazon Corretto, Eclipse Temurin (Adoptium) y Azul Zulu, todas ellas válidas para producción.
Se recomienda instalar la última versión LTS (Long-Term Support) de Java. En 2026, Java 21 LTS es la opción más estable y con soporte extendido. Las versiones LTS reciben actualizaciones de seguridad durante varios años, lo que las hace ideales tanto para aprender como para proyectos profesionales.
Java se mantiene entre los tres lenguajes más utilizados del mundo por varias razones: su rendimiento en entornos empresariales es excelente, cuenta con un ecosistema maduro de librerías y frameworks (Spring, Jakarta EE, Hibernate), domina el desarrollo Android nativo junto con Kotlin, y su comunidad de millones de desarrolladores garantiza soporte y evolución continua.
La JVM (Java Virtual Machine) es el motor que ejecuta el bytecode Java. El JRE (Java Runtime Environment) incluye la JVM más las librerías estándar necesarias para ejecutar programas. El JDK (Java Development Kit) incluye todo el JRE más herramientas de desarrollo como el compilador javac, el depurador jdb y utilidades de documentación. Para programar se necesita el JDK; para solo ejecutar programas basta con el JRE.
Valora este artículo

💬 Foro de discusión

¿Tienes dudas sobre ¿Qué es Java? Historia, características y primer programa? Comparte tu pregunta con la comunidad.

¿Tienes cuenta? o comenta como invitado ↓

Todavía no hay mensajes. ¡Sé el primero en participar!