¿Que esperar y aprender de Java en 2021?

Siguiendo con un post que publiqué a inicios de 2020, en este año atípico observé algunas tendencias que pueden marcar el ecosistema de Java y como developers deberíamos de considerar al iniciar nuevos proyectos.

Así que tomando mi manto de profeta Java, estas creo que serán las 7 tendencias más importantes durante el año en el ecosistema de Java:

La Java Virtual Machine continuara como motor del Big Data

En el área de Big Data existen algunas herramientas bastante conocidas para ingeniería de datos, tales como:

Lo que estas herramientas tienen en común es que las 3 se ejecutan sobre la JVM. Aunque la mayoría de científicos de datos utilizan Python para crear modelos matemáticos, la recolección y procesamiento para estos modelos siempre suele recaer sobre la JVM, Rust, Go o C++/C.

¿Porqué?. Al igual que en Tensorflow o Pandas con C, Python resulta ser un muy buen lenguaje para prototipos, pero su desempeño es pésimo a estas escalas, por lo que estos sistemas suelen utilizar Python como lenguaje «pegamento» y las cargas de trabajo reales se ejecutan en Go, Rust, JVM o C++.

Adicionalmente, para el siguiente nivel (ciencia de datos) hay nuevos proyectos para ejecutar cargas de trabajo, tales como:

Y a nível de la JVM no olvidemos a Project Panama.

Últimamente recibo la pregunta si Python va a matar a Java, cuando en realidad lo que deberían estarse preguntando es como Python mató a R y R no la vio venir. Debemos recordar que estos son lenguajes utilizados por matemáticos y físicos, no por ingenieros de software obsesionados con DDD, TDD y refactoring.

Java no es un buen «glue languaje» así como tampoco lo es Kotlin o JavaScript, pero es una buena plataforma para hacer el «trabajo sucio».

Creo que el gran perdedor acá fue Scala, ya que Scala si está posicionando como «glue language» pero con tanta abstracción funcional sinceramente se le fue la moto y se encuentra de nuevo en una búsqueda de identidad.

Java 17 impulsara Java 11

Java 17 es el siguiente lanzamiento LTS de Java, el cual debe incluir:

Entre otros. . .

Son tantos los cambios que han habido desde Java 8 que prácticamente estamos hablando de dos Javas distintos. Recordemos que 6 años son una eternidad en computación.

Java 8 seguirá siendo una versión popular, especialmente porqué hay demasiado FUD alrededor de el Java de Oracle (HotSpot) que ya ni vale la pena debatir. En resumen Java es libre y debes pagar por el solo si requieres soporte de Oracle (o terceros) o tu producto lo exige.

¿Porqué Java 11?. El ecosistema enterprise es más conservador que el startupero, y acá Java ofrece una base solida para innovar a través del ecosistema, entonces la gente puede que considere «estable» Java 11 hasta que salga la siguiente versión. Al menos esa es la tendencia.

Spring presentara finalmente una versión AOT

El 2020 fue el año del AOT en el ecosistema Java, el raciocinio es bastante simple, en entornos donde es más importante el arranque y el consumo de memoria vs. el peak performance -e.g. serverless y k8s limitados- los devs optan por GraalVM Native Image, prueba de ello es el aumento de popularidad para Quarkus y MicroProfile.

Spring desde hace algún tiempo está experimentando con la creación de un Spring Native, siendo una de las principales limitantes «reflection». Por eso mismo Red Hat tuvo que inventar un framework nuevo a pesar de que ya tenia uno bastante popular basado en Wildfly/JBoss.

Java (como lenguaje) finalmente sera desplazado por Kotlin en Android

Aunque muchas de las ventajas de versiones modernas de Java podrían traerse a Android, lo cierto es que el Java de Android se siente como programar en Java 7 con uno que otro Lambda.

En el ecosistema Android no se ve claro si en algún momento se soportara Java 17 (o inclusive 8 real), una decisión que parece más política dada la batalla entre Google y Oracle.

Ya es dificil que un dev Android en 2020 inicie un proyecto en Java y sera casi imposible en 2021, aunque el soporte es «oficial», esto también suena a «soporte oficial a un Java petrificado».

Por otro lado siempre debemos recordar que la JVM es un ecosistema, y la JVM sigue siendo la base del ecosistema Android (Android Studio, JDK, Bytecode to Dex).

Este sera un año tumultoso por el cambio desde Javax hacia Jakarta

La versión 9 de Jakarta EE vio la luz a finales de año y entre otras cosas como Jakarta NoSQL y Jakarta MVC, también tiene un cambio muy importante, ya no se utilizara javax sino jakarta en el namespace.

¿Que significa esto para fines practicos?

Si tu código depende de Servlets, JSF, JPA, CDI, Mail, Bean Validation (entro otros), TODOS tus imports ahora deberan ser import jakarta. y no import javax.

Esto basicamente le pega a TODO el ecosistema enterprise de Java, y siendo así las bibliotecas, y servidores de aplicaciones irán adoptando este cambio.

¿Que proyectos se veran afectados?. Entre los más importantes que ya tienen planes o estan iniciandolos puedo mencionar:

Dentro de Eclipse ya se cuenta con una herramienta para facilitar esta migración, denominada Eclipse Transformer, de la cual probablemente hable con más detalle en Q1 de 2021.

Si tienen planes de actualizar sus stacks en Java, considerar este cambio sera obligatorio.

JavaScript aumentara su relevancia en el ecosistema políglota de JVM

Un dato incomodo para la comunidad JS es que el framework más rapido de JavaScript, no se ejecuta sobre Node sino sobre la JVM, especificamente GraalJS. Hemos de considerar que desde hace tiempo el soporte Enterprise de GraalVM también incluye JavaScript, el mundo es políglota sin duda.

Adicionalmente debemos de considerar que aunque Nashorn se eliminó en Java 11, a partir de Java 15 existirá como un modulo optativo, asi que ahora no tenemos uno sino dos caminos para ejecutar JavaScript en la JVM.

Yo particularmente uso ambos y sigo prefiriendo Java, pero no tengo problema con JS y me agrada la evolución de ECMA y sobre todo TypeScript, para mi TypeScript pone el Java en JavaScript.

(Casi) No habrán conferencias Java presenciales en LATAM en 2021

Parte de la crisis del COVID, fue la suspensión de los eventos masivos. Si la lógica impera, los países del primer mundo recibirán antes la vacuna y nosotros iremos a la fila.

Espero uno que otro evento en Brasil y tal vez México, pero aun es muy riesgoso asistir a eventos presenciales. Estoy seguro que regresaran porque la experiencia on-line simplemente no es la misma, tal vez de acá en adelante los eventos híbridos sean la norma.

5 respuestas a “¿Que esperar y aprender de Java en 2021?”

  1. WebView 4.0 WebView 4.0 Android 10 Android 10
    Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile DuckDuckGo/5 Safari/537.36

    Estimado! Estoy estudiando JAVA como primer lenguaje pero siempre dudo si ir a JS. Elegí Java porque tengo la posibilidad concreta de trabajo. A JS cada vez lo veo más versátil. Me aconseja seguir con Java o pasar a Js?

  2. Firefox 85.0 Firefox 85.0 GNU/Linux x64 GNU/Linux x64
    Mozilla/5.0 (X11; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0

    Aca la respuesta es depende, si lo que te gusta es desarrollo web probablemente sea más productivo que inicies de una en JS.

    Si te interesa el desarrollo en General, una vez entiendas Java vas a entender un monton de lenguajes y no solo Java.

  3. WebView 4.0 WebView 4.0 Android 10 Android 10
    Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.181 Mobile DuckDuckGo/5 Safari/537.36

    La verdad que JS me tienta porque parece ser más amable de aprender y una salida laboral más rápida. Pero el desarrollo en gral me gusta. Por ahora voy a seguir con JAVA e intentar trabajar. Una vez trabajando iré aprendiendo JS. Gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *