Java es uno de los lenguajes de programación más populares del mundo. Según el índice TIOBE, se ha mantenido constantemente entre los 3 idiomas principales durante más de dos décadas.
¿Por qué Java en 2025?
Antes de profundizar en los detalles técnicos, es importante comprender qué hace que Java sea una opción relevante. Este lenguaje se utiliza en sistemas críticos de bancos, agencias gubernamentales y las mayores empresas de Internet. Netflix, Amazon, LinkedIn, Twitter: todos están construidos en Java.
Ventajas clave de Java para un desarrollador principiante:
Write Once, Run Anywhere
El código escrito en Java funciona en cualquier plataforma con JVM (Java Virtual Machine) instalada. ¿Has desarrollado una aplicación en macOS? Funcionará sin cambios en Windows y Linux.
Tipificación estricta
Java te obliga a especificar explícitamente los tipos de variables, lo que puede parecer redundante al principio, pero te enseña a escribir un código predecible y fiable. Muchos errores se detectan en la fase de compilación, no en la producción.
Un ecosistema enorme
Millones de bibliotecas listas para cualquier tarea. ¿Necesitas trabajar con JSON? Tenemos Gson y Jackson. ¿Construir una API REST? Spring Boot lo hará en diez minutos. ¿Procesar grandes cantidades de datos? Apache Hadoop y Spark están a su servicio.
Demanda en el mercado laboral
La demanda de desarrolladores de Java es constantemente alta y los salarios son competitivos. Backend, Android, sistemas de procesamiento de datos: la elección de especializaciones es enorme.
Instalación y configuración del entorno
Paso 1: Instalación de JDK
JDK (Java Development Kit) es un conjunto de herramientas para desarrollar en Java. En 2025, recomiendo comenzar con la última versión LTS (Long-Term Support). En el momento de escribir este artículo, es Java 21.
Para Windows:
Descarga OpenJDK desde Adoptium (Eclipse Temurin) u Oracle JDK
Ejecutar el instalador
Añada la ruta a Java a la variable de entorno PATH
Para macOS:
# Usando Homebrew brew install openjdk@21 # Añade a ~/.zshrc o ~/.bash_profile export PATH="/opt/homebrew/opt/openjdk@21/bin:$PATH"
Para Linux (Ubuntu/Debian):
sudo apt update sudo apt install openjdk-21-jdk
Compruebe la instalación:
java -version javac -version
Debería ver información sobre la versión de Java. Si no se encuentran los comandos, comprueba el PATH.
Paso 2: Elegir un IDE
Para trabajar en serio con Java, necesitas un buen IDE. Las tres opciones principales son:
IntelliJ IDEA — líder indiscutible. Community Edition es gratuito y contiene todo lo necesario para aprender Java. Autocompletado inteligente, depurador integrado, integración con Git, soporte para Maven y Gradle desde la caja.
Eclipse — veterano de la industria, completamente gratis. Un poco más lento que IDEA, pero muy funcional.
Visual Studio Code — una versión ligera con el plugin Extension Pack for Java. Es adecuado si estás acostumbrado a VS Code, pero para Java es mejor usar un IDE completo.
Consejo: Recomiendo empezar con IntelliJ IDEA Community Edition. Descárguelo del sitio web oficial de JetBrains, instálelo y estará listo para trabajar.
Estructura del programa Java
Creemos el primer proyecto. En IntelliJ IDEA: File → New → Project → selecciona Java, especifica JDK, crea un proyecto.
Cada programa Java comienza con una clase y un método main:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java World!");
}
}Vamos a analizarlo línea por línea:
public class HelloWorld — declaración de clase. En Java, todo es una clase. El nombre de la clase debe coincidir con el nombre del archivo (HelloWorld.java).
public static void main(String[] args) — punto de entrada al programa.
public— el método está disponible desde cualquier lugarstatic— el método pertenece a la clase, no al objetovoid— el método no devuelve nadaString[] args— matriz de argumentos de línea de comandos
System.out.println() — salida de texto a la consola con salto de línea.
Para compilar y ejecutar desde la terminal:
javac HelloWorld.java # Compilación en HelloWorld.class java HelloWorld # Ejecución del programa

Conceptos básicos de sintaxis: variables y tipos de datos
Java es un lenguaje estrictamente tipado. Cada variable tiene un tipo que se especifica en la declaración:
public class DataTypes {
public static void main(String[] args) {
// Números enteros
byte smallNumber = 127; // -128 a 127
short mediumNumber = 32000; // -32,768 a 32,767
int regularNumber = 1000000; // -2^31 a 2^31-1
long bigNumber = 9000000000L; // -2^63 a 2^63-1 (¡L al final!)
// Números de punto flotante
float price = 19.99f; // 32 bits (¡f al final!)
double precise = 3.14159265359; // 64 bits, por defecto
// Símbolos y líneas
char grade = 'A'; // Un carácter
String name = "Java Developer"; // Línea (¡objeto!)
// Tipo lógico
boolean isActive = true;
boolean hasErrors = false;
// Conclusión
System.out.println("Name: " + name);
System.out.println("Price: $" + price);
System.out.println("Active: " + isActive);
}
}Matices importantes
String es un objeto, no primitivo. Las cadenas en Java son inmutables. Cada operación de concatenación crea una nueva cadena.
Conversión automática de tipos funciona de menor a mayor de forma segura:
int x = 100;
long y = x; // OK, int se ajusta a long
double z = y; // OK, long se ajusta a doubleLa dirección inversa requiere una conversión explícita:
double pi = 3.14;
int rounded = (int) pi; // Conversión explícita, se descarta la parte fraccionariaOperadores y estructuras de control
Operadores condicionales
public class ControlFlow {
public static void main(String[] args) {
int score = 85;
// If-else
if (score >= 90) {
System.out.println("Excellent!");
} else if (score >= 70) {
System.out.println("Good");
} else if (score >= 50) {
System.out.println("Satisfactory");
} else {
System.out.println("Needs improvement");
}
// Switch (sintaxis moderna de Java 14+)
String day = "Monday";
String mood = switch (day) {
case "Monday" -> "Beginning of the week";
case "Friday" -> "It's almost the weekend!";
case "Saturday", "Sunday" -> "Weekend!";
default -> "Ordinary day";
};
System.out.println(mood);
// Operador ternario
String result = score >= 50 ? "Passed" : "Fail";
}
}Ciclos
public class Loops {
public static void main(String[] args) {
// Para - cuando conocemos el número de iteraciones
for (int i = 0; i < 5; i++) {
System.out.println("Iteration: " + i);
}
// While - mientras la condición sea verdadera
int count = 0;
while (count < 3) {
System.out.println("Count: " + count);
count++;
}
// Do-while - se ejecutará al menos una vez
int num = 10;
do {
System.out.println("Number: " + num);
num--;
} while (num > 5);
// Enhanced for (para colecciones y matrices)
int[] numbers = {1, 2, 3, 4, 5};
for (int n : numbers) {
System.out.println(n);
}
}
}Matrices y colecciones
Las matrices en Java tienen un tamaño fijo:
public class ArraysExample {
public static void main(String[] args) {
// Anuncio e inicialización
int[] numbers = new int[5]; // Matriz de 5 elementos
numbers[0] = 10;
numbers[1] = 20;
// Inmediatamente con los valores
String[] names = {"Alice", "Bob", "Charlie"};
// Matriz bidimensional
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// Búsqueda
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
// O más fácil
for (String name : names) {
SystemPara estructuras dinámicas, utilizamos colecciones:
import java.util.*;
public class CollectionsExample {
public static void main(String[] args) {
// ArrayList - matriz dinámica
List<String> cities = new ArrayList<>();
cities.add("Moscow");
cities.add("St. Petersburg");
cities.add("Kazan");
cities.remove("Kazan");
System.out.println("Size: " + cities.size());
System.out.println("First: " + cities.get(0));
// HashMap - clave-valor
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 25);
ages.put("Bob", 30);
ages.put("Charlie", 28);
System.out.println("Bob's age: " + ages.get("Bob"));
// Recorrido de HashMap
for (Map.Entry<String, Integer> entry : ages.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
// HashSet - elementos únicos
Set<Integer> uniqueNumbers = new HashSet<>();
uniqueNumbers.add(1);
uniqueNumbers.add(2);
uniqueNumbers.add(2); // Duplicado, no se añadirá
System.out.println("Set Size: " + uniqueNumbers.size()); // 2
}
}Programación orientada a objetos
Java es un lenguaje de programación orientado a objetos puro. Todo es un objeto (excepto los primitivos).
// Definición de clase
public class User {
// Campos (propiedades)
private String name;
private int age;
private String email;
// Constructor
public User(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
// Getters y setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
// Métodos
public void displayInfo() {
System.out.println("Name: " + name);
System.out.println("Age: " + age);
System.out.println("Email: " + email);
}
public boolean isAdult() {
return age >= 18;
}
}
// Uso
public class Main {
public static void main(String[] args) {
User user = new User("Alexey", 25, "alex@example.com");
user.displayInfo();
if (user.isAdult()) {
System.out.println(user.getName() + " adult");
}
}
}Java no es solo un lenguaje, es todo un ecosistema.
Empieza poco a poco, escribe código todos los días, haz cursos en Codice y Únete a nuestra comunidad de desarrolladores en canal de Telegram. Después de tres meses de práctica regular, escribirás con confianza en Java, y después de seis meses podrás solicitar un puesto de desarrollador junior. ¡Buena suerte con tu aprendizaje!
