l

2011年5月19日 星期四

還少一本書:Contributing to eclipse: Principles, Patterns, and Plug-ins

May 19 22:29~23:33

瞎忙了好幾的月,有好一陣子都沒時間靜下來好好讀本書,在可預見的下半年大概也好不到哪理去。沒讀新書就少了寫部落格的『料』,只好繼續把以前的『存款』拿出來花。找了一本以前唸書的時候所讀過的書,拿出來『微波 冷飯熱炒』一下也還不錯吃啦。

今天要炒的是 Contributing to eclipse: Principles, Patterns, and Plug-ins 這一本。有長期注意 Teddy 行蹤的鄉民們應該看過 Teddy 提到這本書好幾次了,前一陣子 Teddy 去參加 Scrum 經驗分享活動,也特別向圍觀的鄉民們推薦這一本書。尤其是想要成為 architect 的鄉民們,此書更是不可遺漏的秘笈。

雖然是 2003 年出版的『舊書』,但是這本書內容之豐富,絕對算是經典之作。先看一下作者是誰,哇賽... Erich Gamma and Kent Beck ... 兩位都是大師,就算看不懂內容,就衝著這兩位的名氣都應該要買一本回家供著。Teddy 敢大聲的說,要不是當年開發 Eclipse plug-ins 的經驗,再加上看過這本書,Teddy 的 architecture design 能力大概要少掉  1/3 ~ 1/2。

如果鄉民們恰巧有寫過 Eclipse plug-ins 的經驗,就應該可以體會到 Eclipse 設計偉大之處。幾乎所有的人都公認『整合』是一件很困難的事情,而 Eclipse 厲害之處,就是能夠把三教九流的 軟體全部給他整合到 Eclipse 平台之中。這樣的設計,趕快把他給偷...學過來,自用送禮兩相宜。日後無論是開發什麼軟體,都一輩子受用無窮。

講了這麼多廢話,到底這本書在講些什麼?以下是 Teddy 認為 Eclipse 幾個最基本也最重要的概念:
  • Plug-ins, extension, and extension point.
  • Menu and Action.
  • Marker and Marker Resolution.
  • Builder and Nature.
  • View and Editor.
  • Workspace and Resource
  • Java Core
為什麼這些概念重要... 嗯... 這樣說好了,一般的應用程式都會有 GUI,學會了 Eclipse 的 Menu, Action, View, Editor 觀念,日後開發應用程式(無論是 desktop or web 應用程式 )都有一定的幫助。

所有的應用程式都會有 model 這一層,學會 View 和 Editor,也就了解到 MVC 的概念,透過 data provider 提供資料給 UI 這一層來顯示。Marker 就好像『狗皮膏藥』一樣,讓你自己開發的 plug-ins 可以依據某些規則在 UI 上標記記號,用以提醒某種狀況。例如,在 Java Editor 中發生語法錯誤時貼一個小標籤在 Java Editor 左方。而 Marker Resolution 就是用來幫助使用者(自動或半自動)排除這些狀況的作法。

Builder 機制讓使用者(程式設計師)可以自行開發並外掛『處理資料的程式』。例如,你發明了一個超棒的演算法,可以找出 Java source code 的那一行會發生 bug,哪麼你就可以自己寫一個 Builder,掛到 Eclipse 裡面,當使用者存檔的時候,讓 Eclipse 自動呼叫你所寫的 Builder 去分析與處理 Java source code。如果你的 Builder 有支援 Marker 的功能,就可以自動貼一個 marker 在可能出問題的那一行上面。至於 Nature 的功能是用來幫專案貼上某種標籤,如此 Eclipse 才會知道,當不同的專案被開啟的時候,要呼叫哪些 Builders。例如,如果你的專案具有 Java 的 Nature,Eclipse 就不會去呼叫 CDT。

更棒的是,Eclipse 不只是設計來支援 Java 程式開發,只要針對不同的 Resource 建構自己的 AST (Abstract Syntax Tree),就可以在 Eclipse 上提供一個類似 Java 的開發環境。根據 Teddy 所知,有些 IC 設計公司,除了提供自己的 IC (硬體)之外,也在 Eclipse 上開發自己的 compiler ,editor 與 debugger,讓客戶可以有一個好用的整合環境來開發特殊的程式。

***

寫到這裡可能會有鄉民說,我們公司又不是要賣開發工具,學 Eclipse 有什麼用?其實 Eclipse 架構可以讓開發者做很多事,不是只能用來開發『開發工具』(這句有點饒口)。有興趣的人可以去看一下 Eclipse RCP (Rich Client Platform)。

最後提醒一下,建議先學好 design patterns 之後再來看這本書,不然可能會不太容易懂。最好能邊看邊些一些簡單的 Eclipse Plug-ins 來當作練習,以收事半功倍之效。

***

友藏內心獨白:學弟們,你們說學長講得對不對啊?

10 則留言:

  1. 聽起來好棒啊,好想看喔~

    回覆刪除
  2. To Mat,

    心動不如馬上行動...

    回覆刪除
  3. To Liar菊,

    學長不會害你滴。

    回覆刪除
  4. 結果去天瓏定,他們說這本書絕版了...

    回覆刪除
  5. 當初WiMAX計畫 我也偷偷用了一些概念來設計UI

    回覆刪除
  6. To Newtype:

    直接去 Amazon 買看看,說不定還有。另外,網路上說不定可以『找到』電子書...。

    To Spirit Du:

    用過都說讚吧!

    回覆刪除
  7. 今天看到的 :
    Please welcome Erich Gamma to the Visual Studio team!

    以後好東西要出在Visual Studio上囉,希望不會搞成像慢死人的Eclipse一樣

    回覆刪除
  8. 匿名:

    什麼,Erich Gamma 居然跑去 M$... 果然是有錢能使...推磨。

    回覆刪除
  9. 某噗浪上寫 :
    想到Rational Rose,就對大師比較沒有期待

    (真想按個讚!!!)

    回覆刪除