El ecosistema Java
Existen muchas empresas, organizaciones y grupos de personas, llamados "comunidades" que aportan al enriquecimiento y desarrollo de las tecnologías Java. Todos estos entes conforman lo que se conoce como "el ecosistema Java".
Este ecosistema nos da muchas opciones, por lo que muchas veces nos veremos obligados a tener que elegir.
Librerías y la Java API (Aplication Program Interface)
Java no es sólo un lenguaje. Es una plataforma de desarrollo de software. Sus distribuciones contienen múltiples librerías y herramientas.
Cuando se programa en Java no se inicia desde cero. Se utilizan paquetes de clases, creados previamente conocidos como librerías. Java viene con muchas librerías incluidas que se conocen como el "API Java". El API Java tiene facilidades para; la programación concurrente, manejo de redes y programación distribuida, seguridad, interfaz gráfica y mucho más.
Antes de programar una funcionalidad es bueno investigar si ya existe una librería que la implemente. Es sorprendente la cantidad y calidad de librerías gratuitas que hay para Java.
Framework o Marco de Trabajo
Un Framework es un conjunto de librerías y herramientas que nos ayudan a crear software. La elección del Framework dependerá del tipo, tamaño y requerimientos de aplicación a desarrollar. Los frameworks suelen estar especializados en resolver los problemas de un tipo específico de aplicaciones.
Spring Framework está especializado en aplicaciones empresariales Web. Libgdx es un framework especializado para el desarrollo de juegos en la Web y en teléfonos inteligentes.
También es una opción válida no usar ningún framework. Esto suele ser cierto si la aplicación es muy pequeña o tan específica que no hay framework que se adapte bien.
El costo de elegir la tecnología equivocada
Una vez, hace mucho tiempo, desarrollé un sistema de transmisión de datos entre aplicaciones Mainframe y aplicaciones Web Windows. Yo elegí usar una librería recomendada por Microsoft. Este sistema de transmisión era usado por muchas aplicaciones web de un gran banco.
Tiempo después de que las aplicaciones estaban en producción, se descubrió un defecto en esta librería. La librería tomaba cada vez más memoria haciendo que el servidor Web IIS cayera, afectando a más de mil usuarios de nuestra aplicación y otras.
Mi empresa tenía contratado el soporte de Microsoft. La respuesta del soporte de Microsoft fue que la librería había sido discontinuada y que no se prestaba ningún tipo de soporte.
Tuvimos que rehacer la librería y modificar muchas aplicaciones. Incluso para una aplicación muy costosa de modificar se instruyó a mantenimiento para que reiniciarán el servidor todas las noches.
A partir de ese día empezó mi interés en quién es quién en la industria, los estándares y las interfaces abiertas. Fue una forma dura de aprender el valor del código abierto (Open Source).
¿Quién es quién en el ecosistema Java?
Hemos mencionado a Apache Software Foundation ASF, que creó Tomcat. ASF es una organización, sin fines de lucro, que desarrolla software de código abierto para el bien público. Parece utópico, pero en mi experiencia, no conozco organización más altruista.
Muchos de los proyectos ASF, son piezas fundamentales del ecosistema Java, como; Tomcat, Maven, Ant, Axis2, Xerces2 y más.
En una segunda categoría, tenemos empresas con fines de lucro comprometidas con estándares y códigos abiertos. A estas empresas, la comunidad de programadores, les reconoce cierta ética, aunque a veces es puesta en duda.
Por último tenemos el lado oscuro. Empresas que en su historia y repetidas veces no han tenido dudas en perjudicar a la comunidad, clientes y competidores por intereses propios. En este grupo destacan Oracle y Microsoft.
BEA WebLogic era una empresa que competía con Oracle. Oracle la compró, subió el coste de licencias de todos los clientes de BEA WebLogic y les informó que debían migrar a los productos Oracle ya que sino perderían el soporte.
Después de adquirir SUN, Oracle demandó a Google por el uso de Java en Android. Para alegría de la comunidad Java Oracle perdió el juicio. Se entendía que esta demanda ponía en peligro el uso de java en más de un billón de dispositivos.