Así que hasta ayer por la mañana no tenía ni idea de qué era OSGi. OSGi era solo una palabra de moda que seguía viendo surgir una y otra vez, por lo que finalmente dejé un tiempo para repasarlo.
En realidad, parece algo bastante interesante, así que me gustaría comenzar diciendo (para que conste) que no soy anti-OSGi en ningún aspecto, ni que esta es una pregunta de "ataque a OSGi".
Al final del día, parece que OSGi ha abordado, esencialmente, JSR 277 en Java Modularity, que reconoció que hay deficiencias con la JAR
especificación del archivo que pueden conducir a la resolución del espacio de nombres y problemas de carga de clases en ciertos casos extremos. OSGi también hace muchas otras cosas realmente interesantes, pero por lo que puedo asegurar, ese es su mayor atractivo (o uno de ellos).
Para mí, como desarrollador Java EE relativamente nuevo (hace unos años), es absolutamente alucinante que estemos en el año 2011 y que actualmente vivamos en la era de Java 7, y que estos problemas de carga de clases sigan presentes; particularmente en entornos empresariales donde un servidor de aplicaciones podría tener cientos de JAR, muchos de ellos dependiendo de diferentes versiones entre sí y todos ejecutándose (más o menos) al mismo tiempo.
Mi pregunta:
Por más interesado que esté en OSGi, y por mucho que quiera comenzar a aprender sobre él para ver dónde / si podría ser útil para mis proyectos, simplemente no tengo tiempo para sentarme y aprender algo tan grande, al menos ahora.
Entonces, ¿qué deben hacer los desarrolladores que no son OSGi cuando surgen estos problemas? ¿Qué soluciones Java (Oracle / Sun / JCP) existen actualmente, si las hay? ¿Por qué se cortó Jigsaw de J7? ¿Qué tan segura está la comunidad de que Jigsaw se implementará el próximo año en J8? ¿Es posible obtener Jigsaw para su proyecto aunque aún no forme parte de la plataforma Java?
Supongo que lo que pregunto aquí es una combinación de pánico, intriga y palmas. Ahora que finalmente entiendo qué es OSGi, simplemente no "entiendo" cómo algo como Jigsaw ha tardado más de 20 años en materializarse, y luego cómo podría haberse enlatado a partir de un lanzamiento. Simplemente parece fundamental.
Y, como desarrollador, también tengo curiosidad por saber cuáles son mis soluciones, sin OSGi.
Además, Nota : sé que esta no es una pregunta de tipo " programación pura ", pero antes de que algunos de ustedes pierdan la forma, quería decir (nuevamente, para que conste) que deliberadamente planteé esta pregunta ENTONCES. Eso es porque no tengo nada más que el mayor respeto por mis compañeros SOers y estoy buscando una respuesta a nivel arquitectónico de algunos de los "dioses de la TI" que veo acechando por aquí todos los días.
Pero, para aquellos de ustedes que insisten absolutamente en que una pregunta SO esté respaldada con algún segmento de código:
int x = 9;
(¡Gracias a cualquiera que pueda opinar sobre este OSGi / Jigsaw / classloader / namespace / JAR hell cosas!)