以开源精神看Php和Jsp/Java

板桥里人 jdon.com 2002/3/24

开源是开放源代码Open Source的简称,开源的精神是自由.Java已经受到开源力量的欢迎.特别是微软的.net推出后,开源领域需要一套与之抗衡的系统,Java无疑是首选,Jakarta.apache.org专门的java开源开发组织.

PHP诞生于开源世界中,是开源力量使之迅速普及,但是Jsp/java出现后,就开始越来越不同了.

首先,如果把Jsp等同于PHP,认为只不过多了一种脚本工具的选择,那就大错特错了.

首先我们来看PHP,"PHP已经是一种没有前途的嵌入式脚本语言了",它应该只适合小型站点的开发和使用.虽然目前PHP项目还排列在SourceForge.net排行榜前列,但是大量的Jsp/Java开源项目正在不断涌现.

同时我也注意到,SourceForge.net排行榜中的这些PHP项目是如此复杂,不堪更改,我只能下载使用他们,当做一件艺术品欣赏他们.我觉得这已经开始背离开源的精神宗旨-自由,一个软件应该让其他人自由的更改,尤其当一个系统变得复杂时,无疑Java/jsp是最能胜任的.

从系统架构上看,PHP属于下列传统的架构:

而Jsp虽然也经过上述传统的过程,但是Jsp是在发展的,现在Jsp是如下架构

Jsp只是多层系统中负责前台显示的模板语言了.

下图是显示一个多层的Jsp/servlet/Java的系统:


应用系统是一个多层结构的,中间层的JSP通过其它的对象或者Enterprise JavaBean来访问后台资源。EJB服务器和EJB提供访问访问资源的方法,支持事务,支持安全管理(后两者是EJB和Javabeans的区别)。
在JSP中使用JavaBean和用Enterprise JavaBean是有区别的。使用JavaBean的时候,通常只是使用简单的类来包装数据信息。JavaBean通过简单的get或者set方法来存取JavaBean的属性值。允许用jsp:usebean标签来动态的设定属性值。用Enterprise JavaBean的话,过程比较复杂一些,首先要初始化上下文,然后通过名字根据名字服务找到所需要的EJB,创建一个实例之后,就可以使用了。

我个人认为,复杂及高安全性的系统就需要使用EJB,因为EJB是一个容器,目前调试不是很方便,等大量EJB工具出来后,再使用它也不迟到,目前先掌握Javabeans已经足够对付中小型系统(访问量不是很大).

开源系统中的EJB是Jboss,Jboss和tomcat可以很好的协同工作,Jboss现在开始频繁出现在sourceforge,net的排行榜上了.

有种MVC(Model-View-Control) 模型,在这个模型中,Jsp只担任View工作,完全就是html了,控制view的功能封装在Servlet中.

可见上图中,将request和reponse分开了.但我在中小系统的实践中,我倾向与将request和reponse合并,将view的控制功能还是封装在Jsp中,这样主要是为了快.但开发大型系统,就不能贪图开始之快了.如果你要研究MVC,可以下载Jakarta.apache.org的Struts来研究.

由上可见,除非PHP直接来调用Javabeans(Ejb),否则PHP实际已经在架构上落后了.

另外,从维护协同工作上看,PHP将大量代码混同在HTML之中,增加系统复杂性,使得网页设计人员无法自由的修改PHP,这当然是违反自由的宗旨,而Jsp通过Javabeans Ejb 等中间层的使用,大大纯洁了Jsp代码,Jsp基本就是Html,网页设计人员可以任何时候自由的更改Jsp,最好的Jsp系统是在Jsp中很少看到Java代码.

我揣测,以后PHP程序员,一部分能接受新的概念,升级跃居到Java程序员,主要以面向对象概念从事大量中间件开发,另外一部分,将无法赶上发展的潮流,"沦落"为一个 Jsp(Php)程序员,进行html Javascript代码开发及简单的view控制功能的jsp开发.

相关文章:

Java实用系统开发指南

软件最大的追求是什么?

初学者如何开发出一个高质量的J2EE系统?

数据库时代的终结

状态对象:数据库的替代者

Java/J2EE中文问题终极解决之道

更多语言平台比较讨论...

更多PHP讨论