上一篇:
Eclipse RCP詳解(03):SWT的相關(guān)概念以及一個(gè)連連看游戲的實(shí)現(xiàn) 最近又去圖書城逛了一圈,想看看有沒有什么意外的驚喜,特別是想看看有沒有Eclipse RCP方面寫得比較深入的圖書。然而結(jié)果是非常令人失望的。在整個(gè)計(jì)算機(jī)圖書區(qū),找不到一本和Eclipse有關(guān)的,更別談RCP了。Java GUI編程的書不是沒有,然而都是講Swing和JavaFX的,似乎Eclipse RCP這個(gè)技術(shù)從來就不存在。
我前前后后也讀過幾本Eclipse的書,這些書基本上都是在亞馬遜上買的。我另外一些關(guān)于Eclipse的知識(shí)則是來源于Eclipse官方網(wǎng)站上面的英文資料。下面,我把這些學(xué)習(xí)資料列出來,并適當(dāng)做一些點(diǎn)評(píng),和大家分享。
一、最權(quán)威的資料:Eclipse的官方文檔
http://www.eclipse.org/documentation/ 由于Eclipse RCP程序是一種特殊的Plug-in程序,所以參考資料都在Platform Plug-in Developer Guide這一節(jié)。包括SWT、JFace、Workbench等的API手冊(cè)都在這里。從這里學(xué)習(xí)RCP有一個(gè)優(yōu)點(diǎn),那就是可以看到各個(gè)版本API的變化,比如哪些API是Deprecated的。從API的變化可以看出Eclipse編程哲學(xué)的變化。比如說,文檔中介紹怎么為Workbench添加菜單、工具欄的章節(jié),在3.X版本的文檔中,既包含了Actions,又包含了Commands。而到了4.X版本中,就只介紹Commands了。從這里學(xué)習(xí)RCP也有一個(gè)缺點(diǎn),那就是這里的講解很簡(jiǎn)略,雖然API手冊(cè)很全面,但是卻很難找到學(xué)習(xí)的入口點(diǎn)。
二、Eclipse Wiki中的RCP頁面
http://wiki.eclipse.org/Rich_Client_Platform 這里好東西也不少啊。有好幾個(gè)專家寫的不同版本的Eclipse RCP tutorial,還有好幾屆EclipseCon上面關(guān)于RCP高級(jí)編程方面的報(bào)告,提供PDF下載。想知道Eclipse 4中RCP編程的模型發(fā)生了什么變化,讀一讀Eclipse 4 RCP tutorials就一目了然了。
三、一本非常好的英文書

我這里給的圖片是直接從亞馬遜網(wǎng)站上拉下來的,大家可千萬別相信上面在線試讀字樣,在我的博客中這是不可能的。
不過我可以告訴大家一個(gè)秘密,那就是這本書的PDF都可以從CSDN上面下載到。
另外再告訴大家一個(gè)非常重要的秘密啊,那就是:
這本書的中文翻譯非常垃圾,簡(jiǎn)直就是一坨屎,所以大家還是看英文版吧。
這本書的三個(gè)作者都非常牛逼,Jeff McAffer是Eclipse RCP和OSGi的領(lǐng)導(dǎo)者之一,Chris Aniszczyk是Eclipse插件開發(fā)環(huán)境的領(lǐng)導(dǎo)者之一,所以他們寫的東西肯定是對(duì)Eclipse RCP介紹非常透徹的。另外一個(gè)作者Jean-Michel Lemieux曾經(jīng)是Jazz項(xiàng)目的首席架構(gòu)師和主要開發(fā)者,現(xiàn)在是Eclipse項(xiàng)目的貢獻(xiàn)者之一,他的優(yōu)勢(shì)就是對(duì)大規(guī)模的企業(yè)級(jí)開發(fā)非常有心得。
我從這本書中學(xué)到不少,該書第二版對(duì)應(yīng)的Eclipse版本是3.5。唯一有點(diǎn)美中不足的是,該書使用的英語略顯晦澀,即使我自認(rèn)為英語很好,也只能慢慢地啃。
四、我讀過的最早一本中文Eclipse圖書

我讀這本書的時(shí)候Eclipse還是3.2。現(xiàn)在這本書已經(jīng)沒有賣的了,即使是在亞馬遜。權(quán)當(dāng)紀(jì)念吧。不過該書的PDF在網(wǎng)上是一找一大把。
五、我讀的最新一本Eclipse中文圖書

這本書的作者實(shí)力也很雄厚。這本書讀起來也很順。但是我覺得他包含的有用的信息量不夠。在這本書的前面約三分之二的篇幅是講SWT和JFace的,講得非常好,是個(gè)不錯(cuò)的參考。但是中間只有一點(diǎn)點(diǎn)內(nèi)容講RCP,很簡(jiǎn)短,比官方文檔中的介紹還短,一點(diǎn)也不深入。最后一部分講Spring,只有兩章,讀起來也很順,但是我認(rèn)為雖然作者的企業(yè)級(jí)開發(fā)實(shí)力很雄厚,但是在客戶端編程時(shí)直接使用Spring訪問數(shù)據(jù)似乎有點(diǎn)搞錯(cuò)了方向。正確的做法應(yīng)該參考我推薦的那本英文書,在客戶端,只需要一個(gè)Session用來和服務(wù)器通訊即可。Spring,還是留給服務(wù)器端用吧。就是想用依賴注入也不需要Spring了,因?yàn)镋clipse 4自己提供這個(gè)功能了。當(dāng)然,這本書中的示例,使用Spring DM寫OSGi bundle,然后放到Eclipse中用,還是蠻有啟發(fā)性的。
六、我讀的另外一個(gè)牛人的兩本牛書


它們的作者都叫周志明,是個(gè)牛人。后面一本看起來和Eclipse關(guān)系不大,我在這里列出來就是為了證明它們的作者很牛。這兩本書其實(shí)都和Eclipse RCP關(guān)系不大,但是讀一下還是很有用的。比如在前面一本書中,前兩章對(duì)OSGi的介紹深入淺出,讀完這兩章后就明白原來一個(gè)bundle最重要的是它的SymbolicName和Version,其它的數(shù)據(jù)都是給人讀的,也明白了我們不僅可以依賴一個(gè)plugin,而且可以單獨(dú)導(dǎo)入一個(gè)bundle的某個(gè)package,更可以把一個(gè)package分開放到N個(gè)bundle中,每個(gè)bundle實(shí)現(xiàn)這個(gè)package的一部分。再比如作者介紹到每一個(gè)bundle都有自己的類加載器,當(dāng)然plugin有例外,fragment plugin就沒有自己的類加載器,而是和host plugin共用一個(gè)類加載器,理解這一點(diǎn)后再理解i18n問題就簡(jiǎn)單了,因?yàn)閕18n的本質(zhì)就是加載別的plugin里面的message資源。理解了類加載器的概念也更容易理解怎么從別的plugin里面加載資源,比如圖片。
總結(jié):雖然目前國內(nèi)圖書市場(chǎng)有幾本關(guān)于Eclipse RCP的圖書,但是它們對(duì)RCP的介紹不夠深入。我的這一系列博文定位是不一樣的。比如我就拋開SWT各個(gè)控件的具體用法不講,只關(guān)注于如果要實(shí)現(xiàn)某一類功能,RCP程序應(yīng)該用到哪些部件。重點(diǎn)放在探討RCP的部件,如WorkbenchWindow、Menu、ToolBar、Editor上。所以我的文章雖然簡(jiǎn)短,但是其深度是超過了上面那些圖書的。另外,我這里還有一個(gè)優(yōu)點(diǎn)就是有趣的實(shí)例和漂亮的截圖。
下一篇:
Eclipse RCP詳解(05):JFace和結(jié)構(gòu)化數(shù)據(jù)