Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

?id=fafb1d1e-3bfd-4b82-ab0d-9998d7cc9d62

Por qué Java sigue siendo el lenguaje número 1

Imagen ornamental

Este post es una traducción de "Don’t call it a comeback: Why Java is still champ" de Mike Melanson, publicado en el blog de The Readme Project de GitHub.

Independientemente del sistema de clasificación que se utilice, ya sea el índice TIOBE, el Índice de Popularidad de Lenguajes de Programación, las clasificaciones bianuales de lenguajes de RedMonk o el Estado del Octoverso anual de GitHub, Java siempre se ha encontrado entre los tres principales lenguajes desde poco después de su lanzamiento en 1995. Sin embargo, a lo largo del tiempo ha ocurrido que, si prestabas atención a los cotilleos de la comunidad de desarrolladores, se podría pensar que Java está en un período de gran declive. Incluso hay quien dijo que estaba en su lecho de muerte. Y si echas un vistazo más de cerca a algunos de estos números de popularidad se podría argumentar que Java ha cedido lentamente cuota de mercado a sus competidores lingüísticos, otra señal obvia de su desaparición inminente. Algunos defensores pueden argumentar que simplemente están saliendo continuamente más lenguajes, que llegan a mucha gente, y el pastel se hace más grande, aunque las piezas se hacen más pequeñas. Aún así: las apariencias importan.

Si bien Java puede haber tenido algunos contratiempos anteriormente en su vida, hoy en día el lenguaje y su gran ecosistema han acelerado el ritmo para satisfacer las necesidades del futuro en una variedad de formas. De hecho, nunca se ha ido a ningún lado: empresas como Amazon, Google, Netflix, Pinterest, Spotify, Square y Zoom emplean Java en sus enormes bases de código. Sin mencionar que gran parte de la infraestructura de datos a gran escala durante la última década ha sido impulsada por Java, y el lenguaje sirve como columna vertebral para Apache Hadoop, Kafka y Spark. Declaradlo muerto de nuevo todo lo que queráis, pero lo que vemos ahora con Java es un poco como un renacimiento; un rejuvenecimiento del lenguaje para aquellos casos de uso futuro que recientemente fue prudente argumentar que no podría cumplir.

Es decir, Java podría describirse con las palabras inmortales de LL Cool J: "No lo llames un regreso, he estado aquí durante años // Estoy marcando el camino a mis compañeros, asustando a los pringados".

Los años de descontento de Java

Java apareció por primera vez en escena en 1995, prometiendo la capacidad de "escribir una vez, ejecutar en cualquier lugar" (WORA), una característica que lo hizo destacar frente a los lenguajes dominantes de la época, dependientes de una plataforma, como C y C++. Poco después de su lanzamiento, encontró su camino en los navegadores Web con applets de Java, y los desarrolladores de repente tenían un lenguaje que atravesaba las líneas de batalla entre Apple y PC, así como también en la creciente World Wide Web. Mientras que 1995 también vio el lanzamiento de PHP, Ruby y JavaScript, ninguno experimentaría la popularidad inmediata de Java.

En solo dos años, Java logró ocupar el tercer lugar en popularidad , solo superado por C y C++. En 1998, superó a C++ y en 2001 superó a C en el puesto número uno. En el lapso de seis años, Java conquistó el mundo del desarrollo de software. Y aunque ese puesto se mantendría durante más de una década, no todo era miel sobre hojuelas en el mundo de Java.

Andrich van Wyk , arquitecto jefe de soluciones de EPI-USE Labs, recuerda una época en la que el desarrollo del lenguaje de programación Java (JPL) estaba estancado y aparentemente cuestionado, a pesar de su dominio. Según él, el punto más bajo llegó alrededor de 2009, cuando Java 6 ya llevaba casi tres años con nosotros y, sin embargo, Java 7 seguía estando todavía a dos años de distancia. Cuando finalmente llegó Java 7, van Wyk recuerda que fue "un lanzamiento relativamente mediocre para cinco años de desarrollo", caracterizando el momento como uno en el que "los desarrolladores estaban hambrientos de funciones de lenguaje más modernas, código menos detallado y nuevos paradigmas de programación".

La evidencia de estos deseos estaba por todas partes: el framework de Ruby on Rails estaba quizás en la cima de su ciclo inicial de hype, mientras que Node.js acababa de aparecer. Ambos ejemplificaban características como la brevedad del código, la creación rápida de prototipos y las bibliotecas para construir rápidamente modernas aplicaciones web. En otras palabras, eran muchas de las cosas que Java no era, al menos en ese momento.

"Todas estas cosas estarían disponibles más tarde en Java con versiones modernas y marcos como Spring Boot, pero tuvimos que esperar hasta 2014 y el lanzamiento de Java 8 para que comenzara ese renacimiento", recuerda van Wyk. "Esa (casi una) década entre Java 6 y 8 fue el problema".

Si alguna vez hubo un momento durante el cual se pudo hacer la casi declaración de muerte de Java, fue entonces. Por suerte para Java, las empresas y los desarrolladores se habían volcado con Java y estaba arraigado en muchas organizaciones. Incluso aunque muchos de sus usuarios estaban cada vez más insatisfechos y la innovación en el lenguaje se había estancado, Java aún ofrecía rendimiento junto con una gran cantidad de bibliotecas y herramientas. Tal vez nunca estuvo a la altura de la promesa de "escribir una vez, ejecutar en cualquier lugar", pero ofrece un lenguaje con memoria segura y de alto rendimiento, ideal para la infraestructura de Internet y las aplicaciones a gran escala.

Aún así, el lanzamiento de Java 8 y de Spring Boot en 2014 trajo un soplo de aire fresco al ecosistema de Java y dio inicio a un período de rejuvenecimiento. Spring Boot, el sucesor del popular marco Spring introducido una década antes, finalmente ayudó a reducir parte de la "verbosidad" por la que se conocía a Java, y Java 8 introdujo muchas funciones que los desarrolladores habían estado esperando ansiosamente, como la API de fecha y hora y las muy deseadas expresiones lambda.

Puntos de inflexión

Mientras van Wyk apunta a 2014 como un importante punto de inflexión para Java, Mike Milinkovich , director ejecutivo de la Fundación Eclipse, señala otros dos momentos clave. En primer lugar, la cadencia de lanzamiento de Java cambió en 2018 con el lanzamiento de Java SE 10, lo que garantiza que una nueva versión de Java estará disponible cada seis meses, en lugar de los años que la precedieron.

"Java ahora compite con muchas plataformas que evolucionan a un ritmo acelerado", dice el gerente de producto de Oracle, Dalibor Topić . "Por lo tanto, también tenía que comenzar a avanzar más rápido, minimizando el dolor de esperar nuevos lanzamientos para los usuarios y desarrolladores de Java y entregando cada nuevo lanzamiento de Java con el alto nivel de calidad acostumbrado".

Al comprometerse con una cadencia de lanzamiento regular, Java se unió a las filas de muchos lenguajes modernos. Ruby, .NET, Python y JavaScript emplean una cadencia de lanzamiento anual, mientras que Go ve una nueva versión cada seis meses y Rust lanza una nueva versión estable cada seis semanas. Con su cadencia de seis meses, las características de Java se pueden enviar antes y se pueden retrasar más fácilmente cuando no están listas, ya que la espera ya no sería indefinida. La innovación en el JPL mejoró inmediatamente, dice van Wyk.

"Java realmente alcanzó su ritmo con Java 9 y la mayor cadencia de lanzamiento alrededor de 2018", dice. "Los lanzamientos más pequeños pero mucho más frecuentes están funcionando realmente bien".

Al mismo tiempo, Milinkovich apunta a un cambio con Oracle Java Development Kit (JDK) que sacudió las cosas para los desarrolladores de Java y las empresas que ejecutan aplicaciones Java en producción o con fines comerciales. Anunciado por primera vez en 2017 y vigente en abril de 2019, Oracle exigió a los usuarios que compraran una suscripción anual para continuar recibiendo parches de seguridad para los productos de Oracle Java Platform, Standard Edition (Java SE), Oracle JDK 8 y 11. "Durante años y años, el soporte a largo plazo de Java fue efectivamente gratuito. Como empresa, puede ejecutar sus aplicaciones en Java y no tener que actualizar las versiones con frecuencia. Ese statu quo cambió, lo que obligó a los usuarios de Java a migrar cada seis meses o buscar una licencia de soporte comercial de Oracle u otros", explica Milinkovich.

En lugar de obstaculizar la innovación, el ecosistema de Java floreció. El cambio impulsó a numerosos proveedores de la nube, como Amazon, Microsoft, IBM, Alibaba Cloud y Huawei, a ofrecer como respuesta sus propias versiones del JDK, compatibles con OpenJDK y testeadas con el Kit de compatibilidad tecnológica (TCK). La primera de esas respuestas llegó con el lanzamiento de AdoptOpenJDK por parte del London Java User Group.

Martijn Verburg , líder del London Java User Group, dice que el grupo lanzó AdoptOpenJDK por primera vez porque no estaban seguros de los derechos de uso que tenían los desarrolladores bajo los cambios de Oracle en torno a OpenJDK. "Querían asegurarse de que hubiera un binario OpenJDK gratuito (como en la cerveza) y gratuito (como en uso) para los desarrolladores a perpetuidad", dice Verburg. AdoptOpenJDK fue un "proyecto de múltiples partes interesadas", explica Verburg, que finalmente "se trasladó a la Fundación Eclipse (como Adoptium) para consagrar ese acceso a un binario gratuito (Temurin) en una fundación de software".

Los cambios de OpenJDK, dice Milinkovich, "animaron a varias empresas a entrar en el juego de ser su propio proveedor de plataforma Java. El crecimiento en la cantidad de proveedores en el ecosistema ha sido útil para la diversidad y la sostenibilidad de Java, porque muchas partes se vieron obligadas a invertir en la producción de tiempos de ejecución de Java de alta calidad de lo que habrían hecho de otra manera".

Un impulso del ecosistema JVM

Mirando hacia atrás en el tiempo nuevamente, también podemos señalar a Kotlin y Scala, dos lenguajes que trabajan sobre la Java Virtual Machine (JVM) , como participantes en el llamado renacimiento de Java. La JVM ejecuta cualquier bytecode de Java, una parte clave de la promesa de Java de "escribir una vez, ejecutar en cualquier lugar". Tanto Scala como Kotlin están diseñados específicamente para compilarse en el código de bytes de Java y ejecutarse en la JVM. Scala apareció por primera vez en 2004, justo antes de la sacudida de innovación de Java, y Kotlin llegó en 2011, a la mitad de ese mismo período.

Kotlin y Scala podrían aprovechar la estabilidad y la ubicuidad de la JVM, al mismo tiempo que disfrutan de la libertad de hacer cosas a las que Java simplemente no se puede arriesgar. Al mismo tiempo, cualquier riesgo que se produzca para cualquiera de los lenguajes podría servir como prueba positiva de que la función funciona según lo previsto en la JVM y no hace que los sistemas se bloqueen. Para los desarrolladores de Java, otros lenguajes en la JVM ofrecen compatibilidad con Java y, al mismo tiempo, quizás abordan sus preocupaciones sobre los déficits de Java. Los lenguajes como Kotlin y Scala no solo son lenguajes independientes, con sus propios beneficios y casos de uso, sino que brindan una manera para que los desarrolladores se familiaricen con conceptos ajenos a Java que, en última instancia, pueden abrirse paso hasta el JPL.

"Tener otros lenguajes en la JVM ha sido una muy buena manera de ver qué ideas novedosas pueden ganar tracción en sus respectivas comunidades, sin tener que experimentar metiéndolas en Java antes", dice Topić. "En lugar de ello, podemos elegir las ideas ganadoras y trabajar abiertamente con colaboradores en el mundo académico, la industria y otros proyectos de código abierto para ajustar y refinar gradualmente esas ideas para que encajen realmente bien dentro de Java mismo, mostrándolas como funciones de lenguaje y biblioteca. que terminan sintiéndose 'nativos' de Java".

"A menudo hablamos de Kotlin como un patio de juegos de producción", dice Christina Lee , líder de equipo e ingeniera de software en Pinterest. "Kotlin no tiene tanta herencia a sus espaldas como muchos de los casos de uso de JVM, por lo que pueden moverse muy rápido en su lenguaje. Eso no es algo que tenga la opción de hacer en Java. Estos lenguajes derivados nos brindan la capacidad de probar todas estas funciones muy rápidamente y luego lo mejor de ellas se puede transmitir al lenguaje de programación Java".

Lee apunta a las nuevas funciones de Java, como los registros y las clases Field, de las que Kotlin ha tenido equivalentes durante bastante tiempo. Van Wyk también apunta a la coincidencia de patrones como una característica del lenguaje con la que está familiarizado desde Kotlin que se ha abierto camino en Java. "Es la ventaja de ser el último en moverse", dice van Wyk. "Es debido a que Java es el último en implementar estas características que puede elegir lo que quiere de una manera que brinda a los desarrolladores lo que necesitan sin que se disparen en el pie".

Van Wyk señala a Scala como el lenguaje que lo ayudó a aprender programación funcional inicialmente y le proporcionó una manera de iniciarse. "Llegó Java 8 y tenía programación funcional, y yo estaba como '¡Oye, ya sé cómo usar esto!'", dice. De manera similar, Kotlin le puso en contacto con las corrutinas, una característica popularizada por el lenguaje de programación Go. "Si no fuera por Kotlin, algunas de las próximas características de Java serían más desconcertantes", dice van Wyk.

En 2017, Google anunció que admitiría oficialmente Kotlin en Android , junto con Java, y desde entonces el lenguaje ha ganado mucho en popularidad. Lee dice que Kotlin ha sido desde entonces su lenguaje de elección y que no tiene planes de dar marcha atrás, especialmente porque Google mismo declaró que todo su propio desarrollo de Android sería "Kotlin primero" a partir de 2019.

Para Lee, Kotlin ofrece una forma de desarrollar para Android que evita algunas de las trampas de Java, que son particularmente peligrosas cuando se trata de desarrollar para dispositivos móviles. Por ejemplo, una NullPointerException es un error común al escribir Java que puede bloquear una aplicación, pero no necesariamente se puede encontrar hasta el tiempo de ejecución. Esto es problemático para el desarrollo móvil, dice Lee, porque a diferencia de una aplicación web, donde las correcciones de errores están disponibles instantáneamente para los clientes una vez implementadas, una tienda de aplicaciones puede tardar días o semanas en aprobar nuevas versiones. "Valoro mucho más la seguridad de un lenguaje de lo que lo haría si estuviese trabajando en cualquier otro ecosistema", dice Lee. "Java es un gran lenguaje, pero no nos brinda las mismas herramientas para escribir el código correcto que estas capas sobre la JVM, como Kotlin".

En lugar de ver a Kotlin y Java como un juego de suma cero, donde un aumento en la popularidad de uno significa una disminución del otro, Lee dice que ve los lenguajes como si existieran en simbiosis. Después de todo, literalmente pueden coexistir uno al lado del otro en la misma aplicación. De hecho, para los desarrolladores de Java que estén interesados en aprender Kotlin, simplemente pueden escribir algo en Java, pegarlo en un archivo de Kotlin y su IDE puede traducirlo automáticamente a Kotlin. "Eso es parte del motivo por el que Kotlin tiene tanto éxito, en mi opinión", dice Lee. "Existe esa transferibilidad".

Lee ofrece la comparación de la elección de Apple de pasar a Swift desde Objective C, donde requiere pasos adicionales para comunicarse entre los dos lenguajes. "No tienen esa historia de interoperabilidad. Es mucho más difícil mover las aplicaciones de iOS a Swift. En Pinterest, cuando empezamos a usar Kotlin, con tan solo agregar un archivo Kotlin al código existente, todo funcionaba. Puedes hacer llamadas entre lenguajes, y eso abre un gran camino hacia la adopción que de otra manera no sería tan fácil. Creo que el hecho de que estos lenguajes funcionen tan bien juntos los hace muy, muy cohesivos", dice Lee.

Kotlin, dice, ofrece un término medio perfecto. "Puede mantener toda su infraestructura existente y abordar algunos de los puntos débiles de la experiencia del usuario sin tirar todo por la borda. Cada vez hay menos razones para alejarse por completo de la JVM".

Java se impulsa hacia el futuro, no tan lento y además estable

Después de casi 30 años de Java, es de esperar que el lenguaje muestre algunos signos de desgaste, pero nada más lejos de la realidad. Java en 2022 no es un lenguaje en declive, sino un lenguaje que se prepara para el efervescente futuro del desarrollo de software. Cuando Java finalmente comenzó a innovar nuevamente a mediados de la década de 2010, ya se avecinaba la sombra del desarrollo nativo en la nube, y ahora es cada vez más la opción por defecto, especialmente para las empresas y el software que se ejecuta a escala. Mientras que otros lenguajes, como Go, se consideran diseñados con la nube en mente, a menudo se piensa que Java es grande y pesado, dice Ryan Morgan , vicepresidente de ingeniería de software de VMware.

"Siempre ha habido una sombra sobre Java, la gente piensa: 'Está inflado, es pesado, no es nativo de la nube, no está diseñado para la nube, no permite una densidad que podría desear en la nube pública', ", dice Morgan. "Se ha trabajado mucho para dispersar esos mitos".

Por su parte, VMware está trabajando para mejorar la naturaleza nativa en la nube de Java con el próximo lanzamiento de Spring Framework 6 y Spring Boot 3, que Morgan llama el "tercer acto" de Spring. Spring, construido con GraalVM , proporcionará "soporte nativo completo dentro de Spring, lo que significa que podrá tomar cualquier aplicación de Spring y compilarla en un binario nativo con una huella y un tiempo de inicio menores. Será realmente beneficioso para todo tipo de otras cargas de trabajo que podrías ver al límite".

Spring no está solo en este esfuerzo. Tanto Quarkus de Red Hat como el proyecto Micronaut están ayudando a impulsar a la plataforma a ese reino que antes se pensaba que no estaba al alcance de Java: hacia la computación en el borde (Edge Computing) y hacia arquitecturas de microservicios, lugares donde el tamaño pequeño y el tiempo de inicio rápido pueden ser clave. Del mismo modo, Project Loom tiene como objetivo llevar subprocesos ligeros a la plataforma Java mediante la implementación de subprocesos en la JVM, en lugar de en el kernel del sistema operativo. "Esto representa una mejora significativa en la capacidad de Java para admitir la concurrencia, lo que hace que la plataforma sea más relevante para muchas de las aplicaciones actuales a escala de la nube", dice Milinkovich. "Con Project Loom, escribir aplicaciones altamente simultáneas en Java será más simple para los desarrolladores y mucho más escalable que en la actualidad".

Para Milinkovich, son precisamente proyectos como Quarkus, Micronaut, Loom y Adoptium los que considera que llevarán Java a la próxima generación de desarrolladores.

"Java existe desde hace 25 años y creo que seguirá existiendo durante otros 25 años. Creo que está experimentando un renacimiento, tanto desde la perspectiva de la tecnología, como igualmente importante desde la perspectiva del ecosistema", dice Milinkovich. "Una de las cosas que los desarrolladores deben tener en cuenta es que las habilidades de Java tienen una gran demanda. Eso realmente ayudará a atraer el apoyo continuo de los desarrolladores, y creo que verá que Java se mantendrá entre los tres primeros lenguajes y plataformas amados en el futuro previsible".

Fecha de publicación:
campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP
Archivado en: Lenguajes y plataformas

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.