我們去餐廳的時候,很常會點套餐。套餐省略了一一挑選的麻煩;對不了解菜色的人而言,套餐會從前菜到點心配好好的;通常也有一些折扣或是附餐。雖然失去了單點的自由度,但還是有很多人都會選用套餐。
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 潛力很大。
其他如 Trails、Project 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:Appfuse, RIFE, JBossSeam, Grails, Trails, ProjectAble, Struts, Spring, Hibernate, EJB, EJB3
Blogged with Flock