Então, na manhã de ontem, eu não tinha ideia do que OSGi era. OSGi era apenas uma palavra da moda que eu sempre via surgindo indefinidamente, então finalmente reservei um tempo para retocá-la.
Na verdade, parece uma coisa muito legal, então eu gostaria de começar declarando (para registro) que eu não sou anti-OSGi em nenhum aspecto, nem é uma questão "contra OSGi".
No final do dia, parece que a OSGi abordou - essencialmente - a JSR 277 na Modularidade Java, que reconheceu que há falhas na JAR
especificação do arquivo que podem levar à resolução de namespace e problemas de carregamento de classe em certos casos esquivos. OSGi também faz muitas outras coisas muito legais, mas pelo que posso verificar, esse é o seu maior atrativo (ou um deles).
Para mim - como um desenvolvedor Java EE relativamente novo (há alguns anos), é absolutamente estonteante que estejamos no ano de 2011 e atualmente vivemos na era do Java 7, e que esses problemas de carregamento de classe ainda estejam presentes; particularmente em ambientes corporativos onde um servidor de aplicativo pode ter centenas de JARs nele, com muitos deles dependendo de diferentes versões um do outro e todos em execução (mais ou menos) simultaneamente.
Minha pergunta:
Por mais interessado que eu esteja em OSGi, e por mais que queira começar a aprender sobre ele para ver onde / se ele poderia ser útil para meus projetos, simplesmente não tenho tempo para sentar e aprender algo tão grande, pelo menos agora.
Então, o que os desenvolvedores não OSGi devem fazer quando esses problemas surgirem? Quais soluções Java (Oracle / Sun / JCP) existem atualmente, se houver? Por que o Jigsaw foi cortado do J7? Qual é a certeza da comunidade de que o Jigsaw será implementado no próximo ano no J8? É possível obter o Jigsaw para o seu projeto mesmo que ele ainda não faça parte da plataforma Java?
Acho que o que estou perguntando aqui é uma combinação de pânico, intriga e palma da mão. Agora que finalmente entendi o que é OSGi, simplesmente não "entendo" como algo como o Jigsaw levou mais de 20 anos para se concretizar e como isso poderia ter sido eliminado de um lançamento. Parece fundamental.
E, como desenvolvedor, também estou curioso para saber quais são minhas soluções, sem OSGi.
Além disso, Observação : sei que esta não é uma pergunta do tipo " programação pura ", mas antes que alguns de vocês fiquem com o nariz torto, gostaria de declarar (novamente, para registro) que deliberadamente coloquei esta questão TÃO. Isso porque não tenho nada além do máximo respeito pelos meus colegas SOers e estou procurando uma resposta de nível arquitetônico de alguns dos "Deuses da TI" que vejo espreitando por aqui todos os dias.
Mas, para aqueles de vocês que absolutamente insistem que uma pergunta SO seja apoiada por algum segmento de código:
int x = 9;
(Obrigado a todos que puderem opinar sobre essas coisas OSGi / Jigsaw / classloader / namespace / JAR!)