好吧~分析比较一下当前互联网JavaWeb不敌php等其他平台的原因~当然先收集信息
php 选择两个典型的产品 wordpress 、 discuz! 作为研究对象。
首先是wordpress,其作为所谓的快速建站平台为何成功?个人了解如下:
1:界面主题模板化,就是说界面美工可以依据wordpress的扩展规范设计出各种skin。
2:功能扩展插件化,与界面扩展类似,只不过是指功能上能够通过特定规则进行扩展。就现在来看也主要是与界面有关的插件。
3:易用性,尚未考证。
4:完备的文档、教材、例子。
5:社区与使用人数。(好吧这个是废话)
6:持久持续地更新维护。(这个也是废话)
Java平台的开发者首先关注啥?当然是 功能扩展插件化咯,看看插件机制是怎样的。
。。。(研究中。。)。。。
wordpress的插件 主要就两类 Action 与 Filter。啥?跟servlet容器Filter /strutsmvc框架一个概念? no no 。。。其实,其功能跟原始或者说简单。 其实更像 javaweb中的 Taglib 也就是核心标签库(但愿我没解释错)。
所谓Action 相当于在php页面中 增加一个 hook扩展点(wordpress中叫做 action tag),并去关联一个或多个具体的 php函数。且这个函数并不能直接返回参数到扩展点位置,一般都是在hook勾连的函数中echo 也就是jsp中的out.print()。 wordpress内部使用do_action("tagname",arg...) 在php中增加扩展点,add_action("tagname",function) 在扩展点被执行前往扩展点上注册函数。当页面解析执行到do_action时,其创建的tagname所注册的函数一次被执行。而filter的与action的区别仅在于,fiter上勾连的扩展函数的返回值 可以返回到扩展点被执行时的位置,以方便扩展点位置的控制。
这个就是被wordpress簇拥者广泛推荐,引以为豪的插件机制的核心。。。对于java平台,我们是否可以找出无数的替代实现?Taglib 是很类似,为何反而没有变成绝大部分开发者的首选?私以为Taglib门槛太高:需要两种代码语法同时工作、实现机制不够直白、且扩展不具备嵌套能力;此外感觉实现目标奇怪:Taglib很多都是语法控制内容并没有实际业务意义。第二点,wordpress因为固化了界面框架,其action tag是固定的一组,这让二次开发人员有很高的参考框架和”共同语言“。而Javaweb开发时不同的项目会用不同的Taglib实现,实现形式各式各样,导致javaweb开发员很少能够在产品业务级别”团结在一起“。这类似于JavaBean规范,也就是所谓的潜在约定规范。Java通用开发规范一堆,业务产品及的规范几乎没有一般散沙,没有事实上的标准。
睡觉,待续。。。。。。