El 27 de enero de 2010 se completó la compra de Sun Microsystems por parte de Oracle y, con ella, la de toda la tecnología de la compañía de Menlo Park: MySQL, los servidores SPARC, Solaris, OpenOffice, el mítico Proyecto Darkstar y, por supuesto, el lenguaje de programación y la plataforma Java.
Por: David Bonilla. Artículo originalmente publicado en La Bonilista| Foto: Markus Spiske
Para mí, la adquisición fue un auténtico drama. Con la operación no solo desaparecía una empresa sino también una forma de hacer las cosas. La apuesta por el open source para desarrollar software corporativo y las camisetas de Sun eran sustituidas por los trajes y las licencias propietarias de Oracle.
Poco a poco me fui alejando de Java. Ahora, cuando programo lo hago en JavaScript. He seguido la evolución de Java en la distancia, con una mezcla de melancolía y añoranza por “los buenos tiempos” que nunca volverán y creo que esa distancia quizás me ha impedido ver la realidad de una Comunidad y tecnología que parecen haber dejado la vanguardia en el desarrollo de software que ocupaban antes de la compra, pero ¿ha sido realmente así? ¿Está mejor o peor que antes? ¿Cuál es el estado de Java en 2019?
Sería absurdo que intentara hacer un análisis serio y objetivo del estado de Java hoy en día -no solo por mis escasos conocimientos actuales de la plataforma sino, sobre todo, por mis propios sesgos- así que ni siquiera lo intenté. En cambio, pedí a cuatro amigos a los que respeto inmensamente como programadores que me dieran de forma independiente su opinión. Una muestra poco diversa y escasa para intentar encontrar el zeitgeist de la Comunidad Java -si es que el mismo existía- pero disponible en pleno agosto 🙂
Alex representaría el punto de vista del técnico que usa Java en grandes proyectos para grandes corporaciones, Jeroclo el del programador estartapil, Micael aportaría la visión académica y Modesto la del outsider puntonetero que no usa Java en su día a día. Les mandé a los cuatro un mail con las mismas preguntas y asunto: “La Bonilista os necesita”. Esto fue lo que contestaron.
¿Es Java PEOR hoy como plataforma/tecnología que en 2010?
Todos coinciden en que hoy Java es una plataforma mucho más rica que hace 9 años. En 2010 “llevaban cuatro años sin sacar una release, ahora sacan nuevas versiones cada 6 meses, lo que ha dinamizado el lenguaje y crea un mejor ciclo de feedback” afirma Jeroclo, algo que también apuntan Alex y Micael como fundamental para su evolución.
Modesto recalca que no cree que se deba hablar de que la tecnología sea mejor o peor, sino diferente: “En 2010, Java era básicamente el lenguaje y ahora es mucho más”, recordando que “aquel año, Android (basado en Java) igualó para luego destronar a Symbian (Nokia) en cuota de mercado de smartphones y, hoy en día, tiene más del 80%. Aunque ya existían lenguajes alternativos que se ejecutaban en la máquina virtual de Java -como Groovy, Clojure y Scala- su uso era totalmente marginal”. Esa panoplia de lenguajes y tecnologías que han ensanchado la plataforma Java han llamado la atención de los cuatro, especialmente Kotlin que, para Alex, “es una auténtica gozada”.
Jeroclo considera importante destacar que la máquina virtual de Java ha sido la plataforma sobre la que se ha implementado muchas de las herramientas de Big Data (Hadoop, Spark, Storm, Cassandra…) a lo largo de estos años y, también, que la plataforma ha sabido adaptarse al cambio de paradigma que supuso el desarrollo de microservicios usando contenedores. Esto ha mejorado aún más con la aparición de GraalVM, que permite crear aplicaciones nativas en ejecutables pequeños y ligeros -que no dependen de tener una JVM instalada- y que arrancan muy muy rápido. El propio Jeroclo dio una charla sobre los secretos de GraalVM en el pasado Codemouchion.
En definitiva, en 2019 hay pocas plataformas tecnológicas que puedan igualar a Java en la cantidad, calidad e importancia de proyectos desarrollados alrededor de la misma.
¿Cuál es el estado de la Comunidad?
Todos coinciden también en que la liberación del código (en 2010 todavía había partes de código propietario) del JDK -el entorno que permite compilar y ejecutar código Java- y de la especificación JEE ha potenciado la Comunidad, permitiendo que cualquiera pueda crear una distribución del JDK, y esta se ha organizado para hacerlo -de forma completamente independiente de Oracle- alrededor del proyecto AdoptOpenJDK que proporciona binarios estables, seguros y actualizados para todas las plataformas. De hecho, Alex escribió hace tiempo un artículo explicando por qué las grandes empresas están dejando de usar la distribución de Oracle.
Respecto al aspecto más ludico-festivo -eventos, meetups, blogs y demás- los cuatro coinciden en que varios factores hacen que la Comunidad parezca menos activa que otras, aunque eso no tenga porque ser necesariamente verdad.
Micael señala algo que yo también percibo, cada vez se diluyen más las Comunidades-Silo, segmentadas por lenguajes o tecnologías: “en general, somos más políglotas. Antes un desarrollador web podía programar mayoritariamente en Java y simplemente cacharrear con JavaScript, ahora ya no”. También cree que los desarrolladores de JavaScript/Node o Python “hacen más ruido, asisten a más meetups, publican más proyectos en GitHub y crean más librerías en los repositorios de paquetes”. Para Jero, eso no significa necesariamente una mayor influencia o actividad, “las startups son las empresas tecnológicas que más ruido hacen en medios. Por su propia naturaleza, tienen la necesidad de sacar un MVP lo más rapidamente posible y eso les empuja a usar frameworks y herramientas que hacen mucho scaffolding o ‘magia’ aunque a la larga puedan suponer un lastre -¿qué más da eso cuando no sabes si seguirás existiendo dentro de 6 meses?- lo que lleva a muchos a creer que lo que hay que usar son esas tecnologías y que Java es una opción válida sólo para grandes proyectos”.
Modesto ve desde fuera “una comunidad muy madura, que genera material muy variado aunque no tan ‘glamourosa’ como otras. Pero eso no tiene porque ser un problema sino hasta un punto a favor. Aunque encuentras librerías para hacer prácticamente cualquier cosa que necesites, no se suelen ver 200 proyectos intentando resolver el mismo problema, no hay tanta dispersión de esfuerzos”.
Para luchar contra ese ruido y recuperar el glamour, Jero cree que “el trabajo de evangelización de Oracle no está siendo muy bueno y se echa bastante de menos. Su foco es el corporate y no presta demasiada atención a la base de desarrolladores”.
¿Cómo se vislumbra el futuro de Java a corto y largo plazo?
Alex cree que Java es demasiado grande como para caer, “tiene que venir algo muy potente para sacar a Java del mercado, ya que estamos hablando de años y años de inversión y sistemas enormes funcionando en producción. Cambiar de plataforma significaría reescribirlo todo. O aparece otra plataforma con las mismas garantías de fiabilidad y compatibilidad que, además, aporte una ventaja competitiva signiticativa o las empresas no tendrán ninguna razón para cambia de tecnología”.
Micael coincide en que esa simbiosis con la industria informática tradicional está en el ADN de Java, “el lenguaje no evoluciona tan deprisa como otros, pero eso no es ni malo ni bueno, sólo su marca de identidad. Es una plataforma estable”, sin embargo, cree que se están dando pasos para recuperar el favor de los desarrolladores: “Se escucha a la Comunidad cuando esta demanda mejoras. Ahora mismo están mejorando las expresiones switch, lo que concluirá con pattern matching”. Jeroclo también piensa que “el lenguaje y la JVM están en un proceso de renovación como nunca habían tenido. Junto con GraalVM, proyectos como Loom o Valhalla están llevando a la plataforma más allá. Puede que quede lejos de las virguerías que hace Scala, y que nunca implemente funcionalidades propias de lenguajes dinámicos como Ruby o JS, pero poco a poco mejorará su verbosidad. El único rival serio que veo a Java como lenguaje es Kotlin.”
Modesto comparte la visión de Jeroclo y cree que en el futuro “Java como lenguaje va a ir perdiendo cuota a favor de otras alternativas de la JVM como Kotlin, Scala e incluso Clojure. Aunque la JVM está envejeciendo muy bien, a Java le están saliendo firmes competidores que, en mi opinión, harán que el uso de Java como lenguaje se quede para nostálgicos y para entornos enterprise. Los tiempos en los que en las empresas en las que se programa en Java, solo se programa en Java, terminaron hace tiempo”.
Y, por último, algo en lo que coinciden todos es en señalar que el futuro de Java como plataforma depende de que siga manteniendo dos grandes apoyos: el de Google y el de la Universidad. Micael indica que “muy pocos docentes discuten que Java siga siendo uno de los lenguajes de programación principales a impartir en la carrera porque su modelo de orientación a objetos es completo a la vez que sencillo y porque se puede implementar cualquier tipo de aplicación con él”. Jeroclo apunta que “si la demanda de Oracle a Google sobre el tema de las patentes del API de Java acaba en condena para Google, será una mala noticia para Java y el mundo del desarrollo en general”. Eso podría desencadenar una serie de acontecimientos de alcance desconocido. “Creo que sólo peligraría el futuro de Java en caso de que Android abandonara la JVM a favor de otra tecnología”, señala Modesto.
Lo único que parece seguro es que, hoy por hoy, Java sólo es una opción más de las muchas herramientas con las que contamos para desarrollar software, pero también que sería estúpido ignorarla o prejuzgarla. La tecnología ha trascendido a Sun y a Oracle. Ahora es mucho más.