OSGi
OSGi est une spécification de l'OSGi Alliance pour la définition d'applications Java modulaires pouvant être mises à jour durant leur exécution. OSGi est particulierement adapté au dévellopement et au déploiement d'applications à plugins et des applications sensibles au contexte (Context-awareness). Contrairement à la JVM standalone, OSGi contrôle les versions des dépendances entre les différents modules (appelés bundles)de l'application. OSGi introduit aussi le paradigme des architectures orientées service dans la programmation Java. Les services dans OSGi permet ainsi le couplage faible, la liaison retardée, la substitution dynamique, la sensibilité aux contexte. Cependant, l'API OSGi reste difficile d'utilisation : il est recommandé d'utiliser des modèles de composants logiciels comme Declarative Services (aka SCR), Blueprint ou iPOJO pour le développment des applications. Les principales plateformes open-source sont Apache Felix, Eclipse Equinox (qui est intégré à l'IDE Eclipse) et Knopflerfish