No es una novedad que a Java como lenguaje de programación se le pronostica la decadencia inminente. O al menos que cada vez que alguien en un ámbito tech dice que prefiere Java a otros lenguajes más modernos, es visto con cierta desconfianza o desprecio. Como si se tratara de alguien que ha despertado de un coma de años al mejor estilo  de la película “Good Bye Lenin”. Bromas aparte, y porque conocemos bien este lenguaje, nuestro Slasher Emiliano Pazos, software developer en Slashmobility, nos plantea hoy cuál es el verdadero estado de Java como lenguaje de programación en 2021.  

¿Qué es Java?

Comencemos por describir a este lenguaje. Java se encuentra actualmente entre los 3 lenguajes de programación más populares. Java fue lanzado y comercializado por primera vez en 1995. Su desarrollo comenzó cuatro años antes en manos de James Gosling, Mike Sheridan y Patrick Naughton. Es un lenguaje multipropósito y pensado con la premisa WORE: write once, executed everywhere. Este concepto significa un gran avance para la época.  Implica además, que será la famosa Java Virtual Machine (JVM) la encargada de ejecutar el código. Él mismo funcionará de forma idéntica en cada plataforma capaz de incorporar una JVM. Alcanzando el principio de portabilidad y neutralidad a la arquitectura. Otras razones por las que Java ha tenido tanto éxito y que lo caracterizan son, entre otros:

  • Ser un lenguaje simple a la vista: la curva inicial de aprendizaje para principiantes no es tan elevada como en otros lenguajes
  • Es orientado a objetos,  robusto, seguro
  • Tiene una gran performance en ejecución
  • Es un lenguaje compilado, dinámico y multi-hilo

Por último, cabe mencionar que Java incorpora un “garbage collector” que simplifica el manejo de memoria en el desarrollo en comparación a otros lenguajes como C++.

¿Para qué se usa Java?

La adopción de Java por parte de la comunidad ha ido variando a lo largo de los años. Actualmente, se utiliza principalmente para el desarrollo de aplicaciones cliente-servidor que sirven el backend de aplicaciones web híbridas y nativas. Sin embargo, también encontramos desde las más modernas aplicaciones que aplican microservicios y son nativas Cloud, hasta aplicaciones monolíticas que aún dan batalla y utilizan un mismo proyecto de Java para servir aplicaciones web del tipo server side rendering. También, hasta hace un tiempo, Java era el lenguaje más popular para el desarrollo de aplicaciones nativas para móviles Android. Sin embargo, ha sido destronado por un competidor del que hablaremos más adelante. 

¿Quién compite con Java?

Como contrincantes directos encontramos a C#, PHP, JavaScript o Python entre otros. Estos siempre han sido alternativas a Java. Aunque implican grandes diferencias en la sintaxis y procedimientos de despliegue, hay uno al que le dedicaremos un lugar especial y que ha estado creciendo mucho en los últimos años:  Kotlin. Este lenguaje de programación ha sido proclamado por Google como el estándar para crear aplicaciones nativas en Android en el año 2017, apenas un año después de su lanzamiento. Lo que ha impulsado su crecimiento fuertemente.

¿Sustituirá Kotlin a Java?

Kotlin es quizás el lenguaje que efectivamente viene a disputar el terreno de Java. Está inspirado en él y tiene la capacidad de ser compilado para ser ejecutado en la JVM por lo que podemos considerarlo un “JVM language”. Además de mantener interoperabilidad con las librerías de Java existentes. Podría decirse que Kotlin es un “Java mejorado” en algunos aspectos. O al menos eso es lo que pretende, ya que toma muchos conceptos ya existentes, y con algunos cambios en la sintaxis que reducen la líneas de código en comparación a Java y nuevas funcionalidades. Este joven lenguaje está en expansión y pretende rivalizar con Java en otros ámbitos más allá del desarrollo para aplicaciones Android. 

Sinceramente creemos que si bien es pronto para afirmarlo, muchas señales indican que Kotlin continúa ganando popularidad y muchos frameworks originalmente creados para Java ya se están actualizando (o ya lo han hecho) para poder ser utilizados en este lenguaje. Sin ir muy lejos, Spring es uno de los frameworks más populares en Java y ya se encuentra adaptado para ser utilizado en Kotlin.

Si bien elegimos dar un lugar especial a Kotlin dentro de los competidores que amenazan a quitar a Java su lugar en el podio de los lenguajes de programación, también debemos destacar que existen otros que continuamente ganan terreno. Por ejemplo, Javascript. Aunque siendo rigurosos hablamos de Typescript para que los usuarios de Java no pierdan los nervios preguntándose cómo es posible la falta de tipado estricto.  También Python, que se vuelve atractivo entre otros motivos por permitir que sus equipos de desarrollo de frontend y backend programen en el mismo lenguaje. Inclusive Python es hoy el lenguaje que, debido al impulso de crecimiento que le ha dado ser uno de los lenguajes predilectos para análisis de datos y el creciente uso en ámbito de IA, ha desplazado a Java en el top 3 según el ranking TIOBE quedando en el segundo lugar y Java en el tercero.

Entonces, ¿qué demonios pasa con Java?

Aunque es entendible que estos lenguajes son más modernos, que puedan abarcar más usos o que su crecimiento y adopción por parte del mercado los vuelva más atractivos en comparación con Java, es quizás la capacidad de cada uno para adaptarse a las nuevas tendencias en el mundo IT lo que determina que un lenguaje quede realmente obsoleto o sea abandonado por la comunidad. El mundo IT hace tiempo se ha volcado a profundizar en el uso de tecnologías Cloud Native. A extender la utilización de infraestructura por código. A explotar los más modernos mecanismos de escalabilidad, seguridad, y distribución para garantizar las disponibilidad de nuestras aplicaciones en cualquier rincón del planeta y bajo toda circunstancia y necesidad de consumo. Es aquí donde nos parece que se jugará el verdadero futuro de Java para ver si puede mantenerse adaptado a estos cambios constantes.

Java se encuentra en constante adaptación y crecimiento. Lo hemos visto en las últimas conferencias en las que se presentan nuevas herramientas y funciones para que Java y los distintos Frameworks como Spring o Quarkus, simplifiquen la integración con los distintos servicios web y se integren fácilmente con las últimas funcionalidades Cloud. También Oracle, como propietario de la licencia de Java, anuncia que pronto tendremos novedades en cuanto a una nueva versión LTS que será Java 17 según el roadmap.

No puede negarse que Java no sea quizás el lenguaje más atractivo hoy en día para quien quiera comenzar una carrera profesional como desarrollador. O que pueda parecer anticuado. Es entendible acercándose a los 30 años desde su lanzamiento. O que quizás no tenga la polivalencia para abarcar varios ámbitos de desarrollo. Pero eso no es todo, ni lo más importante a la hora de elegir un lenguaje para desarrollar una aplicación. Java ha demostrado en todos estos años ser un lenguaje muy versátil, robusto, portable, y aunque actualmente pareciera estar más centrado en el backend de las aplicaciones, aún se mantiene vigente y se adapta a las últimas tecnologías. La inmensa comunidad de desarrolladores que siguen utilizándolo, hacen que sea más sencillo encontrar la solución a problemas que podemos enfrentar como desarrolladores. La inmensa comunidad que lo utiliza es un factor muy valioso a tener en cuenta.

Solo el tiempo dirá si una vez más los pronósticos que desplazan a Java son ciertos o falsos. Pero desde esta perspectiva pareciera ser que no sucederá de inmediato. A pesar de que otros lenguajes han ganado terreno en otros ámbitos y pretenden también disputar los usos en los que Java aun retiene su protagonismo, lo cierto es que aún Java se mantiene vigente y seguirá por un tiempo siendo un lenguaje ampliamente utilizado. Debemos prestar especial atención a Kotlin. Todos los desarrolladores que utilizan Java les aparece la necesidad de conocerlo y probarlo. Pero también puede representar una fuerza que tracciona para que Java (como ha hecho en el pasado) incorpore aspectos más modernos en su sintaxis y procesos y en el futuro, tengamos novedades de renovaciones en este lenguaje que continúa siendo un excelente opción de iniciación a la programación y que es capaz de llevar adelante las soluciones más complejas en el ámbito profesional.

Y vosotros, ¿qué opináis?