1. 程式人生 > >[轉]Eclipse插件開發之基礎篇(4) OSGi框架

[轉]Eclipse插件開發之基礎篇(4) OSGi框架

動作 update 執行 創建 class cti 指定 mpc 代碼

原文地址:http://www.cnblogs.com/liuzhuo/archive/2010/08/18/eclipse_plugin_1_2_1.html

  1. 什麽是OSGi框架

  OSGi(Open Service Gateway Initiative)框架是運行在JavaVM環境裏的服務平臺。框架提供的主要功能是對應用和組件的生命周期管理,系統可以在無需重啟的情況下,遠程操縱組件的安裝、啟動、停止。

  OSGi框架不僅用於Eclipse,從移動終端到車載系統,各個領域都在應用這個技術。

  2. OSGi和Eclipse的關系

  Eclipse采用OSGi框架來管理插件的安裝、開始、停止和生命周期。在Eclipse中采用的OSGi框架稱為Equinox。Equinox在Eclipse3.0時被使用,在3.3時,Equinox通過Equinox PDE,不僅可以用來開發插件,也可以用來制作其他OSGi框架上的組件。

  3. OSGi控制臺

  在Eclipse提啟動的時候加入-console參數,可以在Eclipse啟動的同時創建一個OSGi框架控制臺。

圖4-1,4-2 啟動OSGi控制臺

技術分享 技術分享

  構建於OSGi之上的各種應用被稱為OSGi Bundle。OSGi控制臺可以執行下表所示的操作。

表4-1 OSGi控制臺的命令

命令 說明
start 開始Bundle
stop 停止Bundle
install 安裝指定Bundle
uninstall 卸載指定Bundle
update 更新指定Bundle
active 列出被註冊並且處於活動狀態的Bundle
ss 列出所有被註冊的Bundle

  我們可以看一下執行Eclipse的動作後,Bundle的狀態變化。首先執行ss命令。在ss命令後加入一個參數[help],這樣可以列出所有名稱含有help的bundle。

代碼1

?
1 2 3 4 5 6 7 8 9 10 id State Bundle 78 RESOLVED org.eclipse.epp.mpc.help.ui_1.0.0.v20100611-0430 136 ACTIVE org.eclipse.help_3.5.0.v20100524 137 <<LAZY
>> org.eclipse.help.appserver_3.1.400.v20100427 138 <<LAZY>> org.eclipse.help.base_3.5.0.v201006080911 139 <<LAZY>> org.eclipse.help.ui_3.5.0.v20100517 140 <<LAZY>> org.eclipse.help.webapp_3.5.0.v20100507 178 <<LAZY>> org.eclipse.mylyn.help.ui_3.4.0.v20100608-0100-e3x 196 RESOLVED org.eclipse.mylyn.wikitext.help.ui_1.3.0.v20100608-0100-e3x 228 RESOLVED org.eclipse.rap.help_1.3.0.20100615-1734

  請註意其中狀態為lazy的行,這個狀態說明Bundle還沒有被加載入內存。在必要時將加載入內存。

  我們先打開Eclipse的幫助。然後再看一下Bundle的狀態。

代碼2

?
1 2 3 4 5 6 7 8 9 10 id State Bundle 78 RESOLVED org.eclipse.epp.mpc.help.ui_1.0.0.v20100611-0430 136 ACTIVE org.eclipse.help_3.5.0.v20100524 137 <<LAZY>> org.eclipse.help.appserver_3.1.400.v20100427 138 ACTIVE org.eclipse.help.base_3.5.0.v201006080911 139 ACTIVE org.eclipse.help.ui_3.5.0.v20100517 140 <<LAZY>> org.eclipse.help.webapp_3.5.0.v20100507 178 <<LAZY>> org.eclipse.mylyn.help.ui_3.4.0.v20100608-0100-e3x 196 RESOLVED org.eclipse.mylyn.wikitext.help.ui_1.3.0.v20100608-0100-e3x 228 RESOLVED org.eclipse.rap.help_1.3.0.20100615-1734

  我們看到了org.eclipse.help.base_3.5.0.v201006080911和 org.eclipse.help.ui_3.5.0.v20100517兩個Bundle從lazy狀態變成了活動狀態。

  從以上例子我們知道了,使用OSGi控制臺可以確認Eclipse插件的活動狀態,也可以用控制臺來控制插件的開始和停止。

[轉]Eclipse插件開發之基礎篇(4) OSGi框架