從 JAAS 想到 JCP,從 JCP 想到 PHP
阿恆
讀了一份有關透過 JAAS 來進行 user authentication 的文章,感覺到 Java 的社區為 Java 規劃了不少系統架構的規格,JAAS 便是其中一個例子,這些規格統一了各種系統元件 (例如面板引進的介面,既方便了應用程式的開發者不用擔心他日更換了不同公司開發的元件,程式要作出很大的修改;元件的開發者也很放心他們寫的東西很容易給其他應用程式使用。
以 JAAS 為例,它便規定了應用程式怎樣調用低層的 authentication modules,也定義了低層的 authentication module 必須提供甚麼 API 給高層的應用程式調用。
這些規格一般是由 Sun 統籌,或是由 Java 的社區組織 JCP 中的成員自行規劃出來,規格的目的只是定義介面,具體的 implementation 由其他開發人員或公司落實。為了使規格更具彈性,部分規格會分為數各層次 (level),開發人員可按需要和資源決定支援到甚麼 level,例如 Java 內容庫規格 (Java Content Repository) 便分為兩個 levels。
PHP 的世界在這方面卻顯得頗混亂了,每隔幾天便有人推出一套新的 development framework,包含了一大堆低層的元件給應用程式,雖然方便,但在一個 framework 中開發的應用程式卻不容易移植到另一個 framework,為了一個 framework 所寫的元件也不容易移植到另一個 framework,元件和應用程式之間缺乏統一的介面。
這個問題 Manuel Lemos 在他的一片討論怎樣選擇 PHP Frameworks 的文章裏也大聲疾呼過,他甚至認為者種混亂的現象是 PHP 難以打入企業市場的重要原因。
近年來我觀察到一些資深的 PHP 開發人員正在向這個方向努力,例如 Travis Swicegood 便嘗試把 JCR 移植到 PHP 成為 PHPCR,可惜沒有獲得多少注意。Zend 本來可以扮演 Sun 在 Java 的角色,可惜它只自顧開發 Zend Framework 來推銷 PHP5,卻沒有投放資源做制定規格的工作,令到 PHP 架構規格的戰國時代統一無期。