Hoy recibimos una pregunta muy interesante de uno de nuestros webtrainees desde Youtube, sobre por qué Java aunque es un lenguaje que parece “antiguo”, sigue siendo uno de los que recomendamos aprender en Webtraining.Zone. Aquí está parte de la pregunta:
Necesito ayuda,…, nunca programé en Java, mas bien fui formado en frontend, me incliné fuertemente por la programación funcional: manejo Haskell, Rust, PureScript y Elm. Siempre me gusto la programación, pero…
Java siempre me ha parecido un lenguaje feo y tortuoso, lo siento mi idea no es ofender, el hecho de no tener inferencia de tipos, tener que crear clases para todo e incluso tener que manejar estado dentro de una clase me resulta raro, extraño o no natural.
Quiero saber por qué me parece terrible tener que trabajar con Java, y siempre que empiezo proyectos intento evadirlo, tal que argumento con las estadísticas StackOver Flow para demostrar que esta siendo relegado. Quiero que alguien pro como Alex me de su punto de vista.
Mil gracias.
Primero que nada quisiera comentarte que Java es un lenguaje que al ser un predecesor de todos los lenguajes que mencionas, definitivamente no tiene todas las características “modernas” para hacer desarrollos a los que estás tienes acceso con lenguajes como Rust.
Ahora bien Java no es funcional por lo tanto no podemos hacer cosas usando ese paradigma al estilo de Haskell, en todo caso Scala sería un competidor para éste (entonces ahí la comparativa tomaría otra vertiente).
Java no es sólo un lenguage
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), 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.
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.
Una decisión de millones
Ahora mismo, estoy involucrado en un proyecto de un gobierno de uno de los países más poderosos del mundo, y ahí por ejemplo este tipo de decisiones de arquitectura son decisiones que repercutirán por al menos 5 años.
Imagínate… 5 años es un tiempo muy largo en software, que cuando se tiene una buena base esos 5 años pueden ser muy productivos. O bien estos cinco años pueden ser de muchas pérdidas.
¿Y tu qué piensas sobre Java?
Te gustaría aprender otras cosas interesantes, qué tal sobre Los 10 mandamientos de un buen Ingeniero de Software.
Saludos cordiales.
pues a mi no me gusta tampoco el ecosistema de Java, lo siento
Que tal Luis,
Totalmente aceptable, lo bueno de nuestra área es que hay lenguajes y plataformas para todos los gustos ¿en qué tipo de ecosistema trabajas?
Saludos.
Yo estoy aprendiendo a programar en angular para el front end y empece con java y ahora me encuentro en la bolsa de trabajo te piden que hagas el backend por ejemplo en spring boot.Aquí dodne salta mi duda ok combino cualquier framework javascript con spring boot,ya sea angular,react o vue a que se debe que java sea la preferencia en backend por ejemplo he vista como empresa como facebook tiene su core en java si yo quiero un sistema de unos 80 millones de registros y hago mi core en java no seria lento a parte logicamente de servidor que otra cosa le puedo hacer para que funcione rapidamente esta pregunta me la hicieron en una entrevista laboral
Para aplicaciones que requieren alto rendimiento, hay varios mechanismos para hacerlas que funcionen bien, por ejemplo el hecho de poder configurar balanceadores de carga, o sistemas de caché; la mayoría de estos sistemas son configurables y Java usualmente proveé todo un ecosistema para trabajar con los mismos, es por ello que Java sigue teniendo una muy buena demanda en sistemas empresariales. Saludos.