e4,即Eclipse 4.0及之後的版本,標誌着Eclipse作爲一個平臺革命性地提升。因爲Eclipse從3.0開始正式全面基於OSGi的緣故,可以說Eclipse比其他任何IDE的模塊化都做的更好。很多IDE都支持插件開發,但其本身很少能夠做到模塊化,一般都是本身是非模塊化的系統,加上一個支持模塊化的接口,從而允許第三方開發插件。只有Eclipse是由內而外完完全全的模塊化。e4不僅僅延續且發揚了模塊化,甚至還做到了完全的模型化,把最底層的UI和非UI模型全部開放出來,稱爲Application Model,而且減弱了傳統的對接口實現,抽象類繼承,以及extension points的依賴,取而代之的是依賴注入(dependency injection),又叫控制反轉(reverse of control),加入了大量的annotation,使得開發變得非常靈活,模塊之間耦合程度降低,模塊的lazy initialization得到了優化。
繼續展開說e4的好東西。
1、整個IDE的界面煥然一新
2、新增Quick Access功能支持全局搜索
3、取消了Eclipse 3.x中關於view和editor的區分,Eclipse 3.x中editor永遠都在中央位置,而且editor永遠不能和view並存於同一個stack裏面,換句話說打開的java文件和Eclipse的Console view永遠不能重疊在一起。e4就取消了這種本身就不必要的區分,不管view還是editor,都是part,是part就可以並存於partstack或者part sashcontainer裏面。
4、進一步取消了Eclipse 3.x中對於不同UI模型的區分,比如只有editor和少量的幾種view有dirty標誌和保存功能。在e4所有UI模型都可以使用MDirtyable接口。
5、支持css文件實現外觀,要不是e4實現了UI元素的徹底模型化,這是不可能實現的
其他優點還有很多,比如因爲程序員可以直接接觸到e4開放的核心模型,所以對基於Eclipse平臺開發的項目有更多的控制權,可以放開手腳,有多大本事就能利用這些模型和服務開發出多好的企業級應用產品來。
下面說說爲什麼筆者正在做的這個RCP項目使用e4技術2周之後準備暫時放棄e4,仍然使用Eclipse 3.x技術。
Eclipse Foundation和下屬的各個項目都是按Simultaneous Release的原則,定期地更新和發佈新版本。
Release name | Platform version | Main release | SR1 | SR2 | Links |
---|---|---|---|---|---|
Callisto | 3.2 | June 26, 2006 | N/A | N/A | Web Site |
Europa | 3.3 | June 27, 2007 | September 28, 2007 | February 29, 2008 | Web Site |
Ganymede | 3.4 | June 25, 2008 | September 24, 2008 | February 25, 2009 | Web Site |
Galileo | 3.5 | June 24, 2009 | September 25, 2009 | February 26, 2010 | Web Site |
Helios | 3.6 | June 23, 2010 | September 24, 2010 | February 25, 2011 | Web Site |
Indigo | 3.7 | June 22, 2011 | September 23, 2011 | February 24, 2012 | Web Site |
Juno | 4.2 | June 27, 2012 | September 28, 2012 | February 22, 2013 | Web Site |
Kepler (planned) | 4.3 | June 26, 2013 | September 27, 2013 | February 28, 2014 | Wiki |
e4是在Juno才發佈,而Juno都要到明年2月低才穩定。其實現在不能說不穩定,但筆者感覺Eclipse核心開發的那幫人把很多精力都花在了“向下兼容”,即如何在發佈e4的同時保證基於Eclipse 3.x開發的項目在Juno裏也能跑,即所謂的compatibility layer。現在e4最底層的東西都有了,這也意味着現在如果基於e4搞開發,就要從底層搞起,舉個簡單的例子,Eclipse 3.x中要實現一個package navigator,直接寫一個navigator類繼承CNF(Common Navigator Framework)就行了,1分鐘搞定,基本功能包括右擊菜單直接就有了。而在現在的e4,全部都要從模型開始做起。
這還不是最複雜的,因爲筆者的項目裏面需要一個diagram editor(類似下圖),這是要基於Eclipse的draw2D和GEF技術的。draw2d比較好辦,畢竟只是把模型圖形化,關鍵是GEF,需要通過對圖形的操作影響模型。GEF截止目前還沒有支持e4,可能要到明年夏天的Eclipse Kepler(4.3)版。沒辦法,只能放棄e4,使用已經成熟的Eclipse 3.x技術。等什麼時候e4框架更完善了,GEF等項目全面支持e4了,筆者非常有興趣用e4的這些新技術重寫一遍。