Java Web Application的最新技術比較與體會
作者:bwwlpnn
關於用Java 來實現Web Application的最新技術,我想不妨從Open Source 的 Portal 實現 -- Jetspeed (http://jakarta.apache.org/jetspeed/site/index.html) -- 作為一個起點。
* Jetspeed 的技術核心是 Turbine 和 Velocity
* Jetspeed 本身不是一個Web Application Server, 不能獨自運行,而是以.WAR檔案的形式 deploy 到某一個Web Application Server 上才能運行。Tomcat是Jetspeed的開發平台,理論上Jetspeed能運行在任何支援Servlet 2.2/2.3的Web Application Server上。我已經能夠把Jetspeed 運行在WebLogic 6.1 sp2 上了,當然要做一些必要的配置。
* Jetspeed 只是開發 Web Application 的一個前端(front end)的framework,是建立在Servlet的基礎上的。EJB是開發 n-tier applications 的後端(back end)的framework. 兩者可以很好地結合在一起來應用。
* Turbine vs. Struts: 兩者都實現了MVC中的view 和 controller的要求。只不過Turbine 在 view 的實現上主要採用了 Velocity, Turbine能支援JSP,但是支援的不好,且不推薦使用JSP (詳見下文);Struts 在 view 的實現上只採用JSP。如果要實現controller, 兩者不能同時使用。即在一個Web Application中只能用Turbine或Struts兩者之一來實現controller. 當然,對於view的實現,兩者應該可以同時使用。
* Velocity vs. JSP: 兩者都是實現同一功能的template languages. JSP 是 Sun 的標準,Velocity是 Open Source 開發的系統。網上有幾篇詳盡的文章 (http://jakarta.apache.org/velocity/ymtd/ymtd.html) 比較兩者的異同,由於是Open Source寫的,當然偏向Velocity嘍。不過我詳細讀過一遍,文章寫得有理有據,全都是developer的經驗,並沒有推銷Velocity之嫌。每篇文章後都有一句:You make the decision. 在Open Source 看來,JSP 是 Sun 開發的一個"不好用"的產品。"不好用"主要體現在: 難於Debug; 沒有必要地把簡單問題複雜化, 如JSP的先編譯再運行;不能防止使用者將Java code 嵌入JSP, 從而破壞MVC的設計. 並且Sun 將JSP冠之以"Standard",有“脅天子以令諸侯”之嫌。當然,Struts和Tag Lib將Java code 從JSP中剝離,挽救了JSP。Sun為了保住JSP這個"Sun proprietary product", 只好求助於Struts這棵"救命草".
* 如果不用於Jetspeed portlet的開發,Turbine也是一個很好的開發Web Application的Framework. 全世界30多個developers 經過3 年的開發,將Web Application開發中有共性的問題提出並加以解決。從這個角度看,Turbine 比 Struts 涵蓋的範圍要多得多。關於Turbine能做什麼,可以參考:http://jakarta.apache.org/turbine/turbine-2/services.html ,這個URL列舉了Turbine 27個 services, 其中Castor Service 能做 object to relational mapping (OR mapping)。在這些Services之間,和Turbine 與 Web Application 之間都是松耦合(decoupling)的,可以方便地使用。從大的角度看,Turbine 能做:
As a servlet framework with Turbine as the controller.
As a framework of useful code in your application.
As a Object-Relational Tool.
* 掌握Turbine/Velocity要花一些時間,但是從開發Java based Web Application的長遠角度來看,花些時間還是值得的。畢竟吸取全世界30多個developers 經過3 年的開發的經驗比自己re-invite the wheel強。
先寫到這,以後我有什麼體會,會繼續和大家分享