
De Java 8 a Java 21: Un Viaje en el Tiempo en Devs
¡Hola Chiquis!👋🏻 Imagina que eres un desarrollador en Amaya, la misteriosa corporación de la serie Devs. Al igual que los ingenieros de Amaya que construyen un simulador del universo, nosotros, los desarrolladores Java, estamos constantemente construyendo y mejorando nuestros propios universos de código. En este viaje, exploraremos la evolución de Java desde la versión 8 hasta la 21, descubriendo las mejoras clave que han transformado la forma en que escribimos código.
En la serie “Devs”, los personajes exploran los límites de la tecnología y la programación, enfrentándose a desafíos complejos y descubriendo nuevas posibilidades. De manera similar, el viaje desde Java 8 a Java 21 ha sido una evolución constante, con mejoras significativas en las APIs que han ampliado las capacidades de los desarrolladores.
Java 8: El Nacimiento de un Nuevo Paradigma Marcó un punto de inflexión en la historia de Java con la introducción de las expresiones lambda y la Stream API. Estas características permitieron escribir código más conciso y funcional, acercando a Java a otros lenguajes modernos.
// Java 8:
List<String> nombres = Arrays.asList("Ana", "Juan", "Pedro");
nombres.stream()
.filter(nombre -> nombre.startsWith("A"))
.forEach(System.out::println);
Ejemplo de Expresiones Lambda y Streams
import java.util.Arrays;
import java.util.List;
public class Java8Example {
public static void main(String[] args) {
List<String> nombres = Arrays.asList("Alice", "Bob", "Charlie");
// Expresión lambda
nombres.forEach(nombre -> System.out.println(nombre));
// Streams API
long count = nombres.stream()
.filter(nombre -> nombre.startsWith("A"))
.count();
System.out.println("Nombres que empiezan con 'A': " + count);
}
}
Java 9: Un Nuevo Módulo para un Mundo Modular Introdujo el sistema de módulos, permitiendo dividir grandes aplicaciones en módulos más pequeños y manejables. Esto mejora la encapsulación, reduce las dependencias y facilita la distribución de aplicaciones.
// Java 9:
module miModulo {
requires java.base;
exports mi.paquete;
}
También trajo mejoras en la API, como el método of en las colecciones y la clase Optional. Ejemplo de Módulos y Optional
// module-info.java
module com.example {
requires java.base;
}
// Uso de Optional
import java.util.Optional;
public class Java9Example {
public static void main(String[] args) {
Optional<String> nombre = Optional.of("Alice");
nombre.ifPresent(System.out::println);
}
}
Java 10: Inferencia de Tipos Locales Introdujo la inferencia de tipos locales con la palabra clave var, lo que permitió a los desarrolladores escribir código más limpio y conciso. Ejemplo de Inferencia de Tipos Locales
import java.util.List;
public class Java10Example {
public static void main(String[] args) {
var nombres = List.of("Alice", "Bob", "Charlie");
nombres.forEach(System.out::println);
}
}
Java 11: LTS y Más Se convirtió en una versión de soporte a largo plazo (LTS), lo que significa que recibirá soporte durante varios años. Además, introdujo mejoras como el cliente HTTP, el recolector de basura ZGC y la eliminación del applet.
// Java 11:
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.example.com"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
Trajo nuevas APIs y mejoras en el lenguaje, como el método isBlank en la clase String, la clase Files y la ejecución de archivos de un solo archivo. Ejemplo de Nuevas APIs
import java.nio.file.Files;
import java.nio.file.Path;
public class Java11Example {
public static void main(String[] args) throws Exception {
String texto = " ";
System.out.println("¿Está en blanco?: " + texto.isBlank());
Path archivo = Files.createTempFile("ejemplo", ".txt");
Files.writeString(archivo, "Contenido del archivo");
String contenido = Files.readString(archivo);
System.out.println("Contenido del archivo: " + contenido);
}
}

Java 12–15: Mejoras Incrementales Las versiones de Java 12 a 15 introdujeron mejoras incrementales, como las expresiones switch, las clases Text Blocks y las mejoras en la API de colecciones. Ejemplo de Expresiones switch y Text Blocks
public class Java15Example {
public static void main(String[] args) {
// Expresiones switch
String dia = "LUNES";
String tipoDia = switch (dia) {
case "LUNES", "MARTES", "MIERCOLES", "JUEVES", "VIERNES" -> "Día laborable";
case "SABADO", "DOMINGO" -> "Fin de semana";
default -> throw new IllegalArgumentException("Día inválido: " + dia);
};
System.out.println("Tipo de día: " + tipoDia);
// Text Blocks
String json = """
{
"nombre": "Alice",
"edad": 30
}
""";
System.out.println("JSON: " + json);
}
}
Java Evolución Continua Desde Java 14 hasta Java 21, se han introducido numerosas mejoras, incluyendo:
- Patrones de switch: Permiten utilizar patrones en las expresiones switch para una mejor legibilidad y concisión.
- Registros: Una forma más concisa de definir clases de datos inmutables.
- Preview de características: Algunas características se liberan como “preview” para recopilar feedback de la comunidad antes de su inclusión final.
- Mejoras en el concurrente: Nuevos métodos y optimizaciones en la API concurrente.
- Virtual Threads: Una nueva forma de gestionar concurrencia de manera más eficiente.
Java 16–21: Innovaciones Continuas Las versiones más recientes de Java han continuado introduciendo innovaciones, como las clases Record, las Pattern Matching y las mejoras en la API de concurrencia. Ejemplo de Código: Clases Record y Pattern Matching
public class Java21Example {
public static void main(String[] args) {
// Clases Record
record Persona(String nombre, int edad) {}
Persona persona = new Persona("Alice", 30);
System.out.println("Persona: " + persona);
// Pattern Matching
Object obj = "Hola, mundo";
if (obj instanceof String s) {
System.out.println("Longitud de la cadena: " + s.length());
}
}
}
¿Qué Significa Todo Esto? La evolución de Java ha sido constante y trae consigo nuevas herramientas y formas de escribir código. Al estar al día con las últimas versiones, puedes:
- Escribir código más limpio y conciso: Las nuevas características permiten expresar ideas de forma más natural.
- Mejorar el rendimiento de tus aplicaciones: Las optimizaciones del compilador y el recolector de basura hacen que tu código sea más rápido.
- Aprovechar nuevas funcionalidades: Las nuevas API y características te permiten resolver problemas de manera más eficiente.
- Escribir código más seguro: Las mejoras en la seguridad ayudan a proteger tus aplicaciones de vulnerabilidades.
En resumen, el viaje desde Java 8 a Java 21 ha sido emocionante y lleno de innovaciones. Al igual que los ingenieros de Amaya que buscan comprender el universo, los desarrolladores Java estamos constantemente explorando nuevas formas de construir software. Y al igual que en Devs, este viaje es solo el comienzo.
Conclusión Al igual que en “Devs”, donde los personajes exploran los límites de la tecnología y descubren nuevas posibilidades, el viaje desde Java 8 a Java 21 ha sido una evolución constante que ha ampliado las capacidades de los desarrolladores. Desde las expresiones lambda y las Streams API en Java 8 hasta las clases Record y el Pattern Matching en Java 21, cada versión ha traído mejoras significativas que han transformado el lenguaje.
¡Gracias por leer! 👇🏻 🚀 ¿Te ha gustado? Comparte tu opinión. Artículo completo, visita: https://lnkd.in/ewtCN2Mn https://lnkd.in/eAjM_Smy 👩💻 https://lnkd.in/eKvu-BHe https://dev.to/orlidev https://lnkd.in/ecHHabTD https://pin.it/2BuZ9N4n8 https://linktr.ee/orlidevs ¡No te lo pierdas!
Referencias: Imágenes creadas con: Copilot ( microsoft.com )
#PorUnMillóndeAmigos #MakeYourselfVisible
