He de aceptar que en un momento determinado de mi vida, empecé a buscar alternativas a Java en el lado del servidor, bien sea a través de Node.js o el framework de Microsoft ASP.NET. Sin embargo, siempre hubo algo que no me dejaba “terminar” mi relación con la “vieja tecnología de Java”. Como desarrollador de aplicaciones móviles, he construido decenas de éstas en lenguaje Java y aunque muchas veces renegaba de tener que usarlo, resulta que a la hora de a verdad, éste ha logrado mantenerse al nivel y solucionar muchos de mis problemas.

Esto me llevó a tener cuestionamientos tales como… ¿Qué tan vieja es la tecnología Java? y lo más importante: ¿Llegará a ser totalmente eliminada de la faz de la tierra?

Estas preguntas surgieron en un momento de mi vida en el que los “front end” acaparan el mercado y la programación funcional con lenguajes de nuevas generaciones tales como Haskell, Rust, PureScript o Elm ganan adeptos en el día a día. Java, al lado de estos lenguajes, puede parecer feo, e incluso tortuoso debido al tipado o a la carencia de funcionalidades de última generación que otros lenguajes si poseen.

Sin embargo, a pesar de todos estos “contras” que se encuentran, para mi fue un shock leer el siguiente artículo en TIOBE, en el cual se evidencia que, a la fecha (Noviembre de 2018), Java sigue siendo el lenguaje más usado a nivel mundial ¡y sigue creciendo!. Hay estimaciones que revelan que hay en torno a 9 millones de desarrolladores Java en el mundo, y es una comunidad muy activa y vibrante que colabora y trabaja unida para dar cobijo y hacer crecer este potente lenguaje de programación. Hay muchas formas de participar en las acciones que lleva a cabo la comunidad Java.

Respaldo de Oracle

Oracle sigue comprometido con Java como demuestra el “roadmap” de desarrollo tan potente que tiene, Con Java 9, versión liberada recientemente, Oracle planea dotar de modularidad a la plataforma y además mejorar la seguridad y el rendimiento. Esto permitirá a Java escalar fácilmente de grandes sistemas de software a pequeños dispositivos, incluyendo los procesadores embebidos del Internet de las cosas.

JAVA no es solamente un lenguaje

Cuando hablamos de Java, no sólo se toma en cuenta el lenguaje en sí, sino todo el ecosistema que tiene a su alrededor, sólo por darte un ejemplo: en el mundo empresarial (aplicaciones de alta demanda y muy distribuidas como las que usan los bancos, los grandes corporativos y los gobiernos) el lenguaje predominante es Java, y eso es gracias que muchos de los frameworks y productos más poderosos están creados con Java.

Tal es el caso por ejemplo de los servidores de aplicaciones como IBM WebSphere, JBoss (RedHat que actualmente le pertenece a IBM), Weblogic (Oracle). Plataformas de creación de contenido como IBM Web Content Manager, Liferay DXP también están construidas sobre Java.

Mientras empresas como IBM, Oracle, Amazon y Google, sigan creando productos empresariales en Java, es muy difícil que otra plataforma se posicione a su nivel.

Ingeniero de Software vs Arquitecto

Es cierto, como Ingenieros de Software nos gustan los lenguajes nuevos y brillantes, pero… como Arquitectos de Soluciones vemos más allá del lenguaje:

  • Vemos quién da mejor soporte,
  • Quién tiene más madurez en herramientas,
  • Qué tan complejo es encontrar profesionales con conocimientos avanzados,
  • Qué tantas empresas pueden implementar sistemas en tal o cual lenguaje,
  • Cuánto nos costaría mantener nuestras aplicaciones,
  • Qué tan riesgoso es elegir tal o cual tecnología,
  • Quién va a pagar el costo de los errores de producción cuando se presenten.

Haciendo la suma de todos los puntos anteriores, la verdad es que la lista de dónde podemos elegir se limita a dos plataformas: .NET de Microsoft o Java de Oracle, no hay más.

Uno de los mandamientos más importantes de un buen Arquitecto de Software, es el siguiente: “Diseñarás la arquitectura de tu aplicación antes de iniciar con el código” y parfa ejemplificar voy a tomar las palabras de un grande:

I have two kinds of problems, the urgent and the important. The urgent are not important, and the important are never urgent.

Those things that are urgent are rarely of great importance, and those things that are important are seldom of great urgency.

– Dwight D. Eisenhower

La arquitectura de un sistema SIEMPRE ES IMPORTANTE.

Los otros lenguajes se pueden usar para proyectos de otra naturaleza, pero no para el mundo de aplicaciones empresariales, donde una mala decisión puede costar millones de dólares o una buena decisión puede ahorrarlos.

Dicho esto, espero haberte sacado de la duda de por qué se sigue usando Java en un mundo “tan JavaScript”. Con esto no queremos decir que nuestro amado Javascript no sea de utilidad para nada, sino que existen momentos en los cuales se debe usar y momentos en los cuales no, pero eso ya es material para otra entrada.

Gracias por llegar hasta aquí, nos vemos en el siguiente post.

System.out.println("Java is Love, Java is life");