Tengo la intención de desarrollar un sistema totalmente basado en módulos. La base del sistema debe tener soporte para averiguar sobre complementos, iniciarlos y poder proporcionar formas para que esos módulos se comuniquen. Idealmente, uno debería ser capaz de poner nuevos módulos y tirar de los módulos no utilizados a voluntad, y los módulos deberían poder usar la funcionalidad de los demás si está disponible.¿Cómo debo comenzar a desarrollar un sistema basado en módulos o complementos?
Este sistema debe usarse como base para sistemas de simulación donde muchas cosas pasan en diferentes módulos, y otros módulos pueden querer hacer algo basado en eso.
El sistema que pretendo desarrollar va a ser en Java. De la forma en que lo veo, tengo la intención de tener una carpeta con una subcarpeta para cada módulo que incluya un XML que describa el módulo con información como el nombre, tal vez qué eventos podría generar, cosas así. Supongo que podría necesitar escribir un ClassLoader personalizado para resolver este problema.
La cuestión es que no sé si mi idea realmente contiene agua y, por supuesto, tengo la intención de construir un prototipo funcional. Sin embargo, nunca antes había trabajado en un sistema realmente modular, y no estoy seguro de cuál es la mejor manera de abordar este problema.
¿Dónde debería empezar? ¿Existen problemas y dificultades comunes que se encuentran al desarrollar este tipo de sistema? ¿Cómo puedo hacer que los módulos hablen entre ellos manteniendo el aislamiento (es decir, quita un módulo y que otro módulo que lo estaba usando se mantenga en forma)? ¿Hay alguna guía, especificaciones o artículos que pueda leer que me puedan dar algunas ideas sobre dónde empezar? Sería mejor si estuvieran basados en Java, pero esto no es un requisito, ya que lo que estoy buscando ahora son ideas, no código.
Se agradece cualquier comentario.
Muchas gracias por la dirección proporcionada. Fue una respuesta muy rápida y fue suficiente para comenzar. ¡Gracias de nuevo! –