I meccanismi per supportare i plugin sono implementati utilizzando il framework OSGi. Da questo punto di vista, un plugin funziona come un insieme di OSGi. L'insieme e le classi associate specificano e implementano il processo per il caricamento della classe Java, la gestione dei prerequisiti e il ciclo di vita dell'insieme. Nella parte restante di questa sezione, i termini plugin e insieme verranno utilizzati in modo intercambiabile, a meno che non si esamini una determinata classe del framework.
La classe Plugin rappresenta un plugin in esecuzione nella piattaforma. Si tratta di un'ubicazione utile per centralizzare gli aspetti del ciclo di vita e la semantica globale di un plugin. Un plugin può implementare la funzione specifica per gli aspetti start e stop del relativo ciclo di vita. Ciascun metodo del ciclo di vita include un riferimento a un BundleContext che può fornire informazioni supplementari.
La parte start del ciclo di vita è particolarmente importante. È già stato illustrato come le informazioni su un plugin possano essere richiamate dal file manifest del plugin senza eseguire alcun codice del plugin. In genere, alcune azioni dell'utente nel workbench generano una catena di eventi che richiedono l'avvio di un plugin. Dal punto di vista dell'implementazione, un plugin non viene mai avviato fino a quando non deve essere caricata una classe contenuta nel plugin.
Il metodo start è utile per implementare l'inizializzazione e la registrazione del comportamento relativo a un plugin. Tuttavia, è importante realizzare che il plugin può essere avviato in molte circostanze diverse. Un'attività semplice come richiamare un'icona per decorare un oggetto può determinare il caricamento di una delle classi del plugin, avviando quindi il plugin stesso. Un'inizializzazione frenetica può determinare il caricamento del codice e dei dati del plugin molto prima del necessario. È importante quindi esaminare attentamente le attività di inizializzazione del plugin e considerare le alternative all'esecuzione dell'inizializzazione al momento dell'avvio.
La gestione del ciclo di vita è il punto in cui si incontrano la terminologia dell'"insieme" OSGi e la terminologia del "plugin" della piattaforma. Al momento dell'avvio del plugin, viene fornito un riferimento a un BundleContext, da cui possono essere richiamate le informazioni relativa al plugin. Il BundleContext può essere utilizzato anche per individuare altri insiemi/plugin nel sistema.
BundleContext.getBundles() può essere utilizzato per richiamare una matrice di tutti gli insiemi del sistema. I listener relativi a BundleEvent possono essere registrati in modo che il plugin utilizzato sia a conoscenza delle eventuali modifiche nello stato del ciclo di vita di un altro insieme. Per ulteriori informazioni, fare riferimento al javadoc relativo a BundleContext e BundleEvent.
Prima della versione 3.0, era stato fornito un registro di plugin (IPluginRegistry) per fornire informazioni simili. Ad esempio, il registro poteva essere interrogato per i descrittori del plugin di tutti i plugin del sistema. Questo registro è ora obsoleto e BundleContext deve essere utilizzato per questo scopo. Il registro della piattaforma viene ora utilizzato per informazioni sulle estensioni e i punti di estensione.
L'interfaccia BundleActivator definisce l'avvio e l'arresto implementati in Plugin. Nonostante la classe Plugin sia adatta per implementare questa funzione, uno sviluppatore di plugin ha la completa libertà di implementare l'interfaccia per BundleActivator, in qualsiasi classe appropriata alla struttura del plugin. In realtà, il plugin non deve implementare questa interfaccia se non ha specifiche necessità di gestione del ciclo di vita.
Tutti i plugin presentano un insieme OSGi gestito dal framework. L'Insieme rappresenta l'unità di modularità OSGi. Fondamentalmente, un insieme è solo un insieme di file (risorse e codice) installato nella piattaforma. Ciascun insieme dispone di un proprio caricatore classi Java e include il protocollo per l'avvio, l'arresto e la disinstallazione. Dal punto di vista della piattaforma Eclipse, l'Insieme è semplicemente una classe di implementazione. Gli sviluppatori del plugin non estendono la classe dell'insieme, ma utilizzano il Plugin o altre implementazioni BundleActivator per rappresentare il plugin.