好吧~分析比較一下當前互連網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通用開發規範一堆,業務產品及的規範幾乎沒有一般散沙,沒有事實上的標準。
睡覺,待續。。。。。。