本站先前發布的《Perl、PHP、ASP、JSP技術比較 》一文中對比過PHP和Java的異同,簡而言之,PHP是一種解釋執行的腳本語言,語法和C語言類似,易學易用,不懂電腦的非專業人員稍經學習也能使用PHP.而Java要先編譯成Class文件,然後在Java虛擬機上執行,Java開發需要熟悉Java語法以及一些核心的架構,從而實現一種可復用的、跨平台的軟件,Java比PHP要難學的多。
PHP的主要語言開發者之一、Zend公司的創始人之一Andi Gutmans最近在blog中直言不諱地批評了Java語言。他指出,目前Java廠商試圖在JVM上提供動態語言實現的路子根本不對,Java已經輸掉了web開發語言的戰爭,PHP是事實上的標准和勝利者。
Gutmans的這篇文章在技術界引發了強烈爭議,很對人對此有不同的意見,我在這裡就闡述一下我對PHP和Java兩種語言的看法。
實際上,從技術架構來說,Java語言相比PHP有明顯的優勢,Java使用的是面向對象的系統設計方法,而PHP還是采用面向過程的開發方法。PHP只能實現簡單的分布式兩層或三層的架構,而JAVA可以實現多層架構。數據庫層(持久化層)、應用(業務)邏輯層、表示邏輯層彼此分開,而且現在不同的層都已經有一些成熟的開發框架的支持。例如Struts就是利用Java的web開發技術實現了MVC的設計模式,而在業務邏輯層也有Spring框架,數據庫持久化層有Hibernate等框架。這些框架可以方便開發者高效、合理、科學得架構多層的商業應用。從數學運算和數據庫訪問速度來講,Java的性能也優於PHP.實際上,對於跨平台的大型的企業應用系統來講,Java幾乎已經成為唯一的選擇(微軟.Net不支持跨平台),但是在於Web網站應用開發來講,Java卻面臨著被PHP邊緣化的危險,幾乎所有的虛擬主機都支持PHP+MySQL,而支持Java的卻少之又少,在資源上,網上有不計其數的PHP資源,很多著名的大型網站(例如Facebook、Mediawiki等)都是基於PHP的,而成功的Java網站卻寥寥無幾,這又是什麼原因呢?
Java的理念是“一次編寫,到處運行”,Java在應用框架底下的架構是無與倫比的,遠勝過其他任何語言,Java的框架利於大型的協同編程開發,系統易維護、可復用性較好。而PHP很容易自學,讓熱備能快速簡潔地編寫代碼,適合於快速開發,中小型應用系統,開發成本低。在調試、發布上,PHP也較Java簡單。
理念上的不同導致了Java和PHP在Web應用開發上顯示了不同的結果,盡管Java的數學計算和數據庫訪問都有優勢,架構也相當完美,但是PHP卻可以簡單輕松地支持高強度Web訪問,能夠快速開發應用,支持PHP的虛擬主機多如牛毛,使得用PHP開發一個網站比用Java開發一個網站要快得多,容易的多。Java所擁有的優點只適合傳統的以軟件項目為核心的開發模式,而PHP更適合於以客戶為核心的SaaS的開發模式,因此,PHP目前在Web網站開發的優勢完全是因為Web網站開發的特殊性而導致的,並非編程語言特性所決定。
因此,PHP在Web網站開發語言的戰爭中已經慢慢將Java拋在了後面,Java要想在Web網站開發上奮起直追,的確應該多聽聽Andi Gutmans的意見,徹底改變一下思路才行,否則兩者的差距只能是越來越遠。
另外,雖然在國際上LAMP(Linux+apache+MySQL+PHP)架構已經占領了統治地位,但是在中國國內還有一個怪胎,就是基於微軟的Windows Server+IIS+SqlServer+ASP/ASP.Net的架構,從理論上說,微軟的這一套架構也能實現不錯的性能,只可惜Windows和SqlServer價格不菲,整個架構在性能上比起LAMP不僅沒有什麼優勢,反而還有不少劣勢,因此微軟的這一套家伙在國際市場上吃不開。而國內使用微軟盜版則可以忽略成本,而ASP的易學易用性不遜於PHP,甚至連IT外行都能夠使用,因此在國內也有不小的市場。但是隨著中國在保護知識產權方面的日趨完善,免費的LAMP依舊是未來的趨勢。