1. 程式人生 > >Web開發中PHP與JAVA對比(轉載)

Web開發中PHP與JAVA對比(轉載)

    在市場上的電子商務軟體基本上可歸結為兩大陣營,即PHP陣營和Java陣營。但對接觸電子商務不久的使用者來說,看到的往往只是它們的表相,只是明顯的價格差異,卻很難看出它們之間的實際差異。其實,PHP+ MySQL高效的開發、品質優良的特性,已經讓風靡大學校園的Java變的越來越難堪。而作為PHP+ MySQL為什麼在歷史的程序中,後來居上,獨領風騷呢?為什麼基於Java架構的的電子商務除了高額的開發成本,而變的前途暗淡呢?首先得明白PHP和 Java之間的差異才行。
1、 出身
    Java本來的設計初衷是為了家用消費電子產品開發一個分散式程式碼系統。
    PHP就是為了網際網路的應用而生的。
2、系統的技術架構比較

    分層是將系統進行有效組織的方式,分而治之的思想是計算機領域中非常重要的思想。在好的分層思想引導下,便能實現“高內聚、低耦合”,也能將具體的問題割裂開來,易於控制、易於延展,更易於分配資源。從PHP5版本之後,PHP對於系統架構方面也有了質的飛躍。ShopNC 採用PHP語言開發,可以完美的實現多層架構分佈。運用MVC的設計模式,可使電子商務軟體具有更加高效、合理的系統架構。使得系統在可拓展性、需求應變性上與Java編寫的電子商務軟體系統的毫不遜色。
    Gutmans 在前年發表過一篇文章,其中也闡述了多核環境中多執行緒(JVM)與多程序(LAMP)的比較。其中就提到了多核系統非常適合LAMP架構的多程序方式。隨著晶片業現在把主要精力都放在了多核而不是超執行緒技術上,JVM這樣的多執行緒環境的優點在今天的硬體上將無法充分發揮。而多程序方式將提供更多穩定性和可靠性。
    這一回合,PHP旗開得勝。
3、資料庫訪問比較

    PHP可編譯成具有與許多資料庫相連線的函式。將自己編寫外圍的函式去間接存取資料庫。通過這樣的途徑當更換使用的資料庫時,可以輕鬆地修改編碼以適應這樣的變化。同時現在的PHP提供了資料庫統一介面PDO,對Oracle,MySQL,SQL2000等不同資料庫的訪問都可以通過橋來完成,而不用考慮資料庫介面方面問題。同時為了更好支援MYSQL資料庫,PHP還推出了MySQLi的資料庫連線,更加高效,安全。而Java是通過JDBC來訪問資料庫,通過不同的資料庫廠商提供的資料庫驅動訪問資料庫。而沒有特別的針對性優化。如果同樣是將開發的web應用從MYSQL資料數轉到ORACLE資料,PHP通過PDO的介面,幾乎不用做程式方面的修改(ShopNC中已經通過自主研發的封裝資料庫層,已經可以很好的完成對多種資料庫的支援,甚至無需通過PDO)。而Java開發的需要一定的的更改才能實現。資料庫訪問方式的差異,奠定了PHP開發出的電子商務軟體和Java開發出來的電子商務軟體是2個時代的差距,Java是傳統的一代,PHP卻是新科技發展的成果,PHP不僅能夠包容萬物而且速度上穩步提升,效率比Java強悍的多。這一回合,Java稍遜風騷。
4、安全性對比

    開源是安全的最大優勢,LIUNX 就是一個非常成功的佐證。PHP的開發程式在別人拿到程式碼後,可以很容易的進行修改。而Java開發的程式由於無法看到完整的原始碼,只能看到一些編譯好的類檔案.class,所以底層架構的諸多隱患都無法提前預知,一旦發生災難性的錯誤,後果必將及其嚴重。而PHP如果想要加密程式碼,也可以使用Zend 公司的權威產品zend guard 進行加密,以保證產品的智慧財產權。如果非要將PHP和Java在安全性上做個比較的話,只能說伯仲之間,如果出差距,也是由開發程式設計師的水平來決定的。這一回合,兩者依舊平分秋色。
5、網際網路應用方向上的前瞻性和拓展性
    從整體來說,PHP適用於網際網路應用,而Java語言設計之初,並不是以WEB為中心,而是以通用服務為中心。PHP能夠將網際網路的應用發揮到淋漓盡致,Java在通過標準的或者非標準的一些框架在迎合WEB應用的需求。
    為什麼說PHP適合網際網路的應用呢?
    首先,PHP對於大型系統負載方面,可以採用分散式部署。將資料庫、應用邏輯層和表示邏輯層彼此分開,並將同層的根據流量分開。PHP在這個方面做的非常優異。
    其次,PHP提供的資料庫介面眾多且還有統一的介面,要將多個不同的資料庫資料統一,不需要花費很大的力氣。而Java也可以通過Class和EJB 獲得規模支援,通過EJB/CORBA以及眾多廠商的ApplicationServer獲得結構支援。而與即有老的Java或者.NET 應用程式通訊方面,PHP可以通過即有的API介面進行通訊。至於資料的通訊所使用的資料無非也都是XML,JSON等。
    如果將PHP比作網際網路中的最佳表現獎,具備獨擋一方的能力。那麼Java應該獲得的是最沒有創新獎,就如同歐洲中世紀武士,唯有沉重的框架,笨重的效率。
    難怪連當年的SUN也在其J2EE方案上支援了JRuby及Jython。而IBM Websphere意識到J2EE在WEB方面的不適應而開啟了Project Zero專案。 結果呢? Project Zero 的首席架構師也是很無奈的公開承認“Java現在可以認為只是一種系統語言而不適合構建Web應用”。
    其實Java已經在企業級E化和關鍵業務應用中根深葉茂,但是在Web應用上,Java語言市場份額急劇下降,頹勢盡顯。
    所以這一回合,Java輸的啞口無言。
6、產品化程度
    用Java做開發,幾乎沒有一個程式設計師會從底層寫起,因為都是即有封裝的類。這其實是導致Java很難產品化的一個重要原因。因為幾乎所有的程式設計師可以做的都是比較淺層的應用開發。而就Java的類而言,放到網際網路上,那只有一個沉重可以形容。而唯一讓Java一直宣稱的跨平臺的優越性,其實那也是對於初學程式者的一種宣傳,對於資深程式設計師那就是一個笑話,一條雞肋。經歷了很多大專案的資深開發者都知道,開發伊始,程式需要跑在什麼平臺上,都是確定的了。越是大型專案,越是確定的明確,而且輕易不會考慮平臺的移植。即便需要在其他平臺架設新服務,也是在新平臺上進行增項的開發,與即有產品之間也可以通過Webservice解決。而資料庫是無所謂的。我想不會有人用ACCESS來做大型商業程式的開發吧!
    隨著大多數業務應用程式包括CRM、ERP、報表、文件管理等等也都轉向了Web,放眼望去,PHP的產品,琳琅滿目,在網際網路應用方面,可以負責的說,涵蓋率在99%以上。雖然眾多產品的質量也是參差不齊,但是每個方向及領域都是有那麼一些代表產品的。能舉出範例的有Wordpress, Drupal, mediaWiki, osCommerce, SugarCRM,Discuz, QeePHP,ShopNC等等。
    產品化程度是直接佐證了工業化程度的一個重要資料。不能工業化的工具,其實其本身是有著非常大的悲哀的。
    這一回合,Java輸的體無完膚。
7、開發及後續維護成本比較
    既然PHP在網際網路應用諸多方面都強於Java,那麼Java開發出的電子商務產品何以與PHP產品競爭呢?這在於Java陣營普遍走的是政府路線,而PHP陣營走的是全民路線。Java在網際網路方面靠的是大學老師的言傳身教,才得以在網際網路世界狺狺狂嘯,而PHP是靠得是自身品質而得民心,所以才一路讚歌。
    軟體價格的高低很大程度上和自身成本和功能相掛鉤。PHP的入門門檻較低,但是任何方面成為高手,都是萬里挑一。絕大多數學過c的程式設計師都很容易轉型為PHP程式設計師,這使得PHP程式設計師如同國球一樣普及,同樣更是高手如雲,高質量的PHP軟體產品也層出不窮。
    伺服器成本方面,PHP最經典的組合PHP+ MySQL + Apache,Java也是經常與MySQL + Tomcat、JBoss等軟體配合。所有軟體都是開源免費的,所以伺服器端的投入都並不高。
    而Java程式設計師的學習成本卻是PHP成本的幾倍,原因也很晴朗,本身Java就不是專門給WEB開發用的。所以,Java開發電子商務的成本要遠遠高於 PHP開發出來的同類軟體產品。但也正由於Java開發的成本較高,所以往往也是做一個同樣的產品,達到同樣的效果,Java需要付出比PHP開發多出N 倍的時間及經濟成本。直接的造成了巨大的時間及成本浪費。
    最後一回合,Java在WEB之戰中,輸的乾乾淨淨。
    通過以上資料也可以讓讀者非常清楚的意識到,採購了Java類的電子商務商品,你將來後續的維護期帶來多麼昂貴的經濟成本,及付出多少寶貴的時間。商機是稍縱即逝的,如果商業上的運作永遠需要在等待漫長的技術實現後才可以施展,那恐怕真的是黃花菜都涼了。
    不怕不識貨,就怕貨比貨。PHP開發出來的產品應用普及,口碑良好,但是Java開發出來的產品,很難形成規模,直接導致產品化的少,專案型別的多。正因為PHP開發的產品整體效能經歷了萬千使用者的檢驗與完善。Java與之相比則相去甚遠,所以Java只有走政府路線,以價格落差來平衡採購方的心態,也就不足為奇了。
    總結所有一切,PHP才是的電子商務軟體發展的最有力推動者,也將必然成為大勢所趨,是不可逆轉的,是不可被質疑的。