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强。
先写到这,以后我有什么体会,会继续和大家分享