Home > Architecture, Buzzwords, Commentary, Design, 評論, 趨勢, Framework, Java, Programming, Technologies, Trends, 技術 > Full Stack Framework 的流行 – 從單點變套餐

Full Stack Framework 的流行 – 從單點變套餐

October 11, 2006 (Wednesday) Leave a comment Go to comments

我們去餐廳的時候,很常會點套餐。套餐省略了一一挑選的麻煩;對不了解菜色的人而言,套餐會從前菜到點心配好好的;通常也有一些折扣或是附餐。雖然失去了單點的自由度,但還是有很多人都會選用套餐。

Java,尤其是用在 web development 上,有各式各樣的 framework 跟技術。如果要一一選用跟搭配起來,往往是一種痛苦。畢竟能享受從挑選零件再組出一台跑車的人是極少數的人。每個元件都要弄懂也是一種很大的學習負擔。自從 Ruby on Rails 問世以來,很多人都喜歡上它的簡化跟整套 full stack 的 framework。或許是接受到 Ruby on Rails 的刺激,Java community 有很多類似的想法出現,如果你覺得慢慢把 Struts、Spring、Hibernate 等等全都學會再組裝起來很難的話,或許選用一個 full stack framework 也可以達到類似的效果。

以下點名一部份的 full stack framework,有些其實在 Ruby on Rails 之前已經出現了:

AppFuse:或許他不該叫 framework,它是一個把 Struts, Spring, Hibernate 等等 framework 預先組裝好的環境。其組裝的方式可以作為學習對象。Presentation Tier 可以選用 Struts/WebWork/JSF/Tapestry/SpringMVC;Persistence Tier 可以選用 Hibernate/iBATIS。AppFuse 已經在蠻成熟的一個階段了,我本身也在實際的 project 上運用過它,節省了不少開發時間。缺點是所用的 framework 也許不是在最新的版本。

JBoss Seam:這是 Hibernate 的作者 Gavin King 的力作。我個人非常喜歡這個 framework,原因不在它使用了 JSF+EJB3 這些 JCP 的標準,說真的如果不好用標準早是華而不實的東西。我喜歡它是因為大量運用了 annotation 減少了要開發的 code,而且那些 annotation 看得出來是在多次的經驗中提煉出來的,非常切合開發者真正的需求。而 JSF 跟 EJB3 的無間結合讓所要開發的 number of class 大量減少。如果沒有任何負擔的情況之下,我覺得 JBoss Seam 是最佳選擇。只是它目前還有些許的不成熟。

RIFE:一個很成熟的 framework,不過它的概念有點特立獨行,也沒有用到一些主流的 framework。看過它的 demo 我覺得它的想法有達到目的,但因為離主流有點差距,能得到的資源較少。它也可以跟 Spring 等等做整合。

Grails:由 groovy 為主軸的 full stack framework,目前還在很早期的階段。不過 groovy 這種 scripting language 的簡便,讓 Java 也有機會跟 Ruby on Rails 一拼。後端是以 Spring+Hibernate 為基礎。我覺得這個 framework 潛力很大。

其他如 TrailsProject Able 等等因為我沒有太多的研究,不一一詳列,事實上一定還有很多我沒看過或是已經忘記名字的 framework 存在。所能看到的是 full stack framework 的興起,如果是你要追求快速開發,也許要改為注意 full stack framework 的動向,而不單單是個別 framework。在以上的 framework 裡,幾乎都用到了 Spring,也就是說 Spring 這種 middle tier 的 framework 佔有重要的角色。當然 JBoss Seam 是用了 EJB3,不過功能上類似。而 middle tier 的能力就決定了 full stack framework 整合的能力。所以未來 Spring 或是 EJB3 的角色會更重要而使用更廣泛。

如果你還在煩惱用哪些 framework 作為你的 baseline,在學習怎麼把不用 tier 的 framework 組裝在一起的話,那麼何不看看以上幾個 full stack framework 呢?或許你單點的菜色其實跟套餐差不多,而套餐還送你附餐飲料呢!

technorati tags:, , , , , , , , , ,

Blogged with Flock

Advertisements
  1. dyhung
    October 11, 2006 (Wednesday) at 12:59

    我喜歡吃套餐,每次為了環境總要花上一堆不對襯的時間在做雜事,那種感覺還真無耐。

    但套餐的壞處就是很容易迷失,這也不懂、那也不懂,搞到最後,套餐點好了,卻不知道從何吃起才美味。我覺得套餐還是要吃,但吃之前最好能先懂裡面的所有餐點,如果有送玩具那就更好啦,:p。

  2. October 27, 2006 (Friday) at 9:36

    登揚大一語道破,最近就聽到一些看著套餐不會動手吃、或是人家問他吃了什麼說不出個所以來的人。當然不能要求每個人都能懂很仔細的部份,但真的是書到用時方恨少,有機會的話多看些書。

    至於送玩具,以我現在用 JBoss Seam 的感覺,玩具送的真不少,我想會有人為了玩具而去排隊的!

  3. 丁丁
    December 7, 2006 (Thursday) at 16:58

    最近花了些時間了解 Jboss Seam framework,把它提供的 tutorial 實際操練了一次,個人覺得它絕對具備成為 killer web framework 的候選資格,幾個吸引我特色簡單說明如下:
    * Component-based:整合併簡化了 JavaServerFace 技術,讓複雜難開發的 JSF 重新充滿魅力。
    * Object-Relational Mapping:內建整合 EJB 3.0 或 POJO + Hibernate 的 O/R Mapping,大部分的整合應用是令人耳目一新的。
    * Stateful Components:完全為了解決目前 web app 開發痛苦而設計的機制,加入了 Conversation,Business process 等 scope 的完善管理,之後要作 Wizard 或審核類的功能易如反掌。
    * Manage “flow”:提供 jBPM workflow 及 pageflow 的良好整合,讓 flow 的相關開發簡單了,也讓開發後的系統的彈性變高了。
    * Bijection (IoC):現代的 framework 都要 IoC 一下,Seam 提供一套自己的 IoC 機制,強調動態的 components 與 context 雙向 injection。
    * AJAX:目前已經提供了 ICEfaces 及 Ajax4JSF 的整合,我只能說謝謝你 Gavin King!
    * Easy testing:Seam 提供良好的 unit 及 integration testing 的方式,是開發者的好朋友。

    目前發現的問題:
    * 沒有 Spring:我想現在沒有,以後大概也不會有,Gavin 對 Spring team 一向不大友善,也許還有其它的考量,不過有些工作沒有 Spring 做起來還是可能比較麻煩,急的話自己 DIY 吧!
    * JSF 會不會是絆腳石:JSF 在 Seam 的整合下已經讓開發者好親近多了,但若是深入的使用,會不會還是得了解複雜的 JSF 內部原理?如果是那真是絆腳石。
    * Contextual Components 的命名管理:這是 Seam 很棒的一個核心設計,有點擔心的是比較複雜的系統,components 可能很多,加上 Seam build-in 的 components,到時候管理可能會是一個問題,沒處理好可能變成 defects 的根源,不過這個 IDE 可提供蠻好的協助才對。
    * Seam 可能易學難精:如同 Hibernate,要上手並不困難,但很多深入的特性及微調的方式很多,在 container 幫我們的世界,有些規則若不是很明顯的,很容易變成開發或維護的死角。

    不過基本上它是一個很棒的 framework,很多設計的想法和實作的技巧都很值得學習,更重要的是這些功能都能有效解決目前 web app 開發上的困境,替開發者帶來一種 Spring 的氣息,哈~

  4. December 10, 2006 (Sunday) at 17:39

    謝謝您的心得分享,的確 JBoss Seam 絕對不會有 Spring。但話說回來,Spring 的兩大核心 Dependency Injection 跟 AOP,在 Seam 中是做得到的。DI 的部份,其實在 EJB3 的 spec 中已經有了,Seam 更強化了 Inject / Outject 等部份。而 AOP 的部份,不意外的是由 JBoss-AOP 來補足。當然沒辦法像 Spring 一樣有包山包海的介接功能,但至少也把 Spring 的核心滿足了。
    真要挑毛病的話,我覺得 EJB3 跟 JSF 上手需要一點時間,比起 Spring 看不完的範例真是差遠了呀!

  1. December 2, 2007 (Sunday) at 9:16

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: