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才是的電子商務軟體發展的最有力推動者,也將必然成為大勢所趨,是不可逆轉的,是不可被質疑的。身為程式設計師,無論PHP或Java,高度這個問題上,其實對於我們而言都一樣的。在這個高度上的戰爭其實是各大廠商之間的事情,和我們無關。但例如WEB方面。我還是要為自己的陣營搖旗吶喊!
推薦教學:PHP影片教學
#以上是0基礎學php還是java的詳細內容。更多資訊請關注PHP中文網其他相關文章!