C'est généralement quelque chose que vous devrez vous exposer, alors oui, cela dépendra de la langue dans laquelle votre système est écrit (bien qu'il soit souvent possible d'écrire des wrappers pour d'autres langages aussi).
Si, par exemple, vous aviez un programme écrit en C, pour Windows, les plugins seraient écrits pour votre programme en tant que DLL. Lors de l'exécution, vous devez charger manuellement ces DLL et leur exposer une interface. Par exemple, les DLL peuvent exposer une fonction gimme_the_interface()
pouvant accepter une structure remplie de pointeurs de fonction. Ces pointeurs de fonction permettraient à la DLL de faire des appels, d'enregistrer des rappels, etc.
Si vous étiez en C++, vous utiliseriez le système DLL, sauf que vous passeriez probablement un pointeur d'objet au lieu d'un struct, et l'objet serait implémenter une interface qui fournissait des fonctionnalités (accomplissant la même chose que la structure, mais moins moche). Pour Java, vous chargiez des fichiers de classe à la demande au lieu de DLL, mais l'idée de base serait la même.
Dans tous les cas, vous devrez définir une interface standard entre votre code et les plugins, afin que vous puissiez initialiser les plugins, et que les plugins puissent interagir avec vous.
P.S. Si vous souhaitez voir un bon exemple de système de plugins C++, consultez le foobar2000 SDK. Je ne l'ai pas utilisé depuis longtemps, mais c'était vraiment bien fait. Je suppose que c'est toujours le cas.
Oui, je crains que ce serait une réponse comme ça. Pourtant, l'avantage est que cela signifie que vous avez un contrôle total sur ce que les plugins peuvent faire, je suppose. – kaybenleroll