初學 Eclipse RCP
??? 作者:Flyingis
??? 以前一直做WebGIS方面的工作,對桌面關心甚少。桌面開發讓人第一個想到的是VB6的快速開發,以及VC++平臺中對效率的追求,VB.NET似乎找不到一個合適的定位。自己以后想逐步轉向桌面,畢竟桌面才是GIS的天下,在效率、可擴展性、開發速度以及平臺可持續發展中權衡,讓我選擇了Eclipse RCP。
??? 說向桌面轉型而選擇Eclipse RCP有些片面,因為桌面開發僅僅是Eclipse RCP開發的一個子集,用Eclipse RCP進行Web開發同樣可以。Eclipse RCP是一個基礎應用平臺,在這個平臺上,我們可以方便的擴展自己的應用、快速開發自己的程序、統一應用程序的界面等等,按照官方的話來說,Eclipse RCP開發的特點在于:
??? 1.組件式的架構:所有的業務功能都可以設計為可以重用的插件,插件之間的相互訪問與重組,就構成了系統的業務模塊。其中最典型的應用,就是通過插件來增強Eclipse Java IDE的功能。
??? 2.將程序關注的重點集中在業務領域:Eclipse RCP本身就基于Eclipse插件體系結構,基于這個統一的架構,程序員可以很方便的開發出自己的客戶端應用,將主要精力放在業務邏輯的實現。
??? 3.適應需求的變化:Eclipse就是由插件搭建而成的,通過增減插件,我們可以很容易的實現業務功能的變更。為Eclipse加入中文包就是最好的例子,通過.link文件對中文包文件的引用,可以實現Eclipse的中文本地化,當我們需要將語言恢復為英文時,只需刪除對應的.link文家即可。
??? Eclipse體系的核心是插件,3.0版本以后Eclipse開始采用OSGI作為其插件體系結構實現的基礎,OSGI是一套開放的標準,這樣可以增強網絡范圍內的互操作性,每個Eclipse插件就是一個OSGI的模塊。OSGI模塊中最重要的是Bundle和Service,Bundle是插件管理器,Service是這個模塊可以暴露對外的服務對象。每個Bundle擁有自己的ClassLoader以及context,通過context可進行服務的注冊、卸載等。啟動時Eclipse核心會檢查所有的插件并注冊,但是直到被調用,該插件才會被實例化,這個過程就是懶加載。
??? 在OSGI之上的是Runtime,它提供了Application模型和擴展機制。
??? 和OSGI框架和JVMs一樣,Eclipse Runtime需要知道做什么。運行Eclipse,首先需要構建一個Application,它和Java程序中的main方法類似,Runtime啟動后,程序需要找到指定的Application,Application通過擴展來定義,該擴展指定一個類(擴展點)作為主程序的入口。Application必須實現IplatformRunable接口,由此接口提供的run方法接管Eclipse平臺的控制權,當Application結束時,Eclipse平臺也會退出。
??? Products運行于Application之上,它主要提供典型應用程序的基本界面的實現,例如閃屏、windows圖標等。一個Eclipse安裝中可能存在多個Application和Product,但是在同一時刻只能運行一個Application和一個Product。
??? 各種插件添加到Eclipse RCP是通過擴展來實現的,擴展的創建必須遵循擴展點(Extension Point)定義的規范進行明確的聲明,我們可以使用Eclipse提供的現成的擴展點,還可以定義新的擴展點,并在此基礎上進行擴展。Eclipse平臺上常見的擴展點有:actionSets、editor、popUpMenu、views、perspectives、propertyPages等等。
??? 關于Eclipse中的插件類型:
??? Eclipse是各種插件的集合,但總體而言,插件開發有兩種提供方式,一種是插件集構建的應用,擁有自己的程序入口,如Eclipse平臺在Windows下通過點擊eclipse.exe可以進入。另一種是以擴展的方式提供的插件集,它們通常不是完整的,也沒有自己的程序入口,僅用以加入到已存在的平臺中進行輔助性的開發,如GEF、EMF、CDT等。
??? 參考資料:
??? 《Eclipse Rich Client Platform:Designing,Coding,and Packaging JavaTM Applications》
??? 《程序員》2006年5月刊
??? http://www.eclipseworld.org/
??? 以前一直做WebGIS方面的工作,對桌面關心甚少。桌面開發讓人第一個想到的是VB6的快速開發,以及VC++平臺中對效率的追求,VB.NET似乎找不到一個合適的定位。自己以后想逐步轉向桌面,畢竟桌面才是GIS的天下,在效率、可擴展性、開發速度以及平臺可持續發展中權衡,讓我選擇了Eclipse RCP。
??? 說向桌面轉型而選擇Eclipse RCP有些片面,因為桌面開發僅僅是Eclipse RCP開發的一個子集,用Eclipse RCP進行Web開發同樣可以。Eclipse RCP是一個基礎應用平臺,在這個平臺上,我們可以方便的擴展自己的應用、快速開發自己的程序、統一應用程序的界面等等,按照官方的話來說,Eclipse RCP開發的特點在于:
??? 1.組件式的架構:所有的業務功能都可以設計為可以重用的插件,插件之間的相互訪問與重組,就構成了系統的業務模塊。其中最典型的應用,就是通過插件來增強Eclipse Java IDE的功能。
??? 2.將程序關注的重點集中在業務領域:Eclipse RCP本身就基于Eclipse插件體系結構,基于這個統一的架構,程序員可以很方便的開發出自己的客戶端應用,將主要精力放在業務邏輯的實現。
??? 3.適應需求的變化:Eclipse就是由插件搭建而成的,通過增減插件,我們可以很容易的實現業務功能的變更。為Eclipse加入中文包就是最好的例子,通過.link文件對中文包文件的引用,可以實現Eclipse的中文本地化,當我們需要將語言恢復為英文時,只需刪除對應的.link文家即可。
??? Eclipse體系的核心是插件,3.0版本以后Eclipse開始采用OSGI作為其插件體系結構實現的基礎,OSGI是一套開放的標準,這樣可以增強網絡范圍內的互操作性,每個Eclipse插件就是一個OSGI的模塊。OSGI模塊中最重要的是Bundle和Service,Bundle是插件管理器,Service是這個模塊可以暴露對外的服務對象。每個Bundle擁有自己的ClassLoader以及context,通過context可進行服務的注冊、卸載等。啟動時Eclipse核心會檢查所有的插件并注冊,但是直到被調用,該插件才會被實例化,這個過程就是懶加載。
??? 在OSGI之上的是Runtime,它提供了Application模型和擴展機制。
??? 和OSGI框架和JVMs一樣,Eclipse Runtime需要知道做什么。運行Eclipse,首先需要構建一個Application,它和Java程序中的main方法類似,Runtime啟動后,程序需要找到指定的Application,Application通過擴展來定義,該擴展指定一個類(擴展點)作為主程序的入口。Application必須實現IplatformRunable接口,由此接口提供的run方法接管Eclipse平臺的控制權,當Application結束時,Eclipse平臺也會退出。
??? Products運行于Application之上,它主要提供典型應用程序的基本界面的實現,例如閃屏、windows圖標等。一個Eclipse安裝中可能存在多個Application和Product,但是在同一時刻只能運行一個Application和一個Product。
??? 各種插件添加到Eclipse RCP是通過擴展來實現的,擴展的創建必須遵循擴展點(Extension Point)定義的規范進行明確的聲明,我們可以使用Eclipse提供的現成的擴展點,還可以定義新的擴展點,并在此基礎上進行擴展。Eclipse平臺上常見的擴展點有:actionSets、editor、popUpMenu、views、perspectives、propertyPages等等。
??? 關于Eclipse中的插件類型:
??? Eclipse是各種插件的集合,但總體而言,插件開發有兩種提供方式,一種是插件集構建的應用,擁有自己的程序入口,如Eclipse平臺在Windows下通過點擊eclipse.exe可以進入。另一種是以擴展的方式提供的插件集,它們通常不是完整的,也沒有自己的程序入口,僅用以加入到已存在的平臺中進行輔助性的開發,如GEF、EMF、CDT等。
??? 參考資料:
??? 《Eclipse Rich Client Platform:Designing,Coding,and Packaging JavaTM Applications》
??? 《程序員》2006年5月刊
??? http://www.eclipseworld.org/
posted on 2006-12-13 19:22 Flyingis 閱讀(3500) 評論(1) 編輯 收藏 所屬分類: Eclipse Plugin