1,系統技術架構對比
分層是壹種有效組織系統的方式,分而治之的思想是計算機領域非常重要的思想。在良好的分層思維指導下,可以做到“高內聚、低耦合”,將具體問題分離出來,便於控制、擴展和分配資源。PHP只能實現簡單的分布式兩層或者三層架構,而JAVA在這方面非常強大,可以實現多層網絡架構。使用MVC設計模式可以使oa系統有壹個更高效、更合理的系統架構。落後的技術架構使得php編寫的oa軟件系統先天不足,後天無法彌補其先天劣勢。該系統與JAVA編寫的oa軟件系統在擴展性和需求適應性上的差距越來越大。架構上的差距註定了php做出來的oa充其量是個小家碧玉,永遠比不上java這樣的好人家。
2、數據庫訪問比較
PHP可以用連接到很多數據庫的函數來編譯。我會自己寫外圍函數來間接訪問數據庫。這樣,當所使用的數據庫改變時,可以容易地修改編碼以適應這樣的改變。但是PHP提供的數據庫接口支持各不相同,比如對Oracle、MySQL、Sybase的接口就各不相同。由於PHP對不同的數據庫使用不同的數據庫訪問接口,所以數據庫訪問代碼的通用性不強。
Java通過JDBC訪問數據庫,通過不同數據庫廠商提供的數據庫驅動程序訪問數據庫比較方便,訪問數據庫的界面也比較統壹。如果開發的web應用也是從MYSQL數據轉換成ORACLE數據,PHP需要做大量的修改工作,而且比較繁瑣。但是JAVA開發出來的東西,只需要很少的改動就可以實現。
數據庫訪問方式的不同,確立了php開發的oa和java開發的oa是車廂和火車的差距。前者只能跟風,配額有限,後者是工業化的結晶,既能容納壹切又能穩步提高速度。
3.安全性比較
在既開源又跨平臺的java面前,php失去了很多優勢。尤其是在代碼的安全性方面。php的開發程序在別人拿到代碼後可以很容易的修改。而java開發的程序因為看不到完整的源代碼,只能看到壹些編譯好的類文件,所以安全性很高。再加上系統架構的優勢,php和java在安全性上相差甚遠。
如果非要對比php和java的安全性,同壹個小偷光顧php,就是想拿什麽就拿什麽,隨便改改,還能帶著很大的快感逛壹輝。當妳遊覽爪哇時,妳會發現有警察在守衛它,而且裏面有自動報警裝置,即使妳突破了許多障礙進入房間。值錢的東西都放在加密的保險櫃裏,只能望洋興嘆,衣錦還鄉。
4.前瞻性和發展性
總的來說,php適合中小型系統,java適合大型系統。Php可以做好單個事件,但不適合完成多個高集成度的並發事件。為什麽php適合中小型系統而不適合大型系統?
首先,php缺乏多層結構支持。對於大型系統負載站點,只能使用分布式計算。數據庫、應用邏輯層和表現邏輯層相互分離,同壹層的流量分離形成二維數組。而php恰恰缺少這種支持。
其次,PHP提供的數據庫接口並不統壹,要統壹多個不同的數據庫數據需要付出很大的努力。而JAVA則沒有這樣的缺陷。可以通過SUNJava的JavaClass和EJB獲得規模支持,通過眾多廠商的EJB/CORBA和ApplicationServer獲得結構支持。比如IBM的電子商務,其核心是使用JSP/Servlet的WebSphere,支持CGI。
如果把Php比作壹個將軍,妳就有了獨當壹面的能力。然後java是個帥才,有很好的預見性和擴展性,整體布局和協同性很強。能統率千軍萬馬,最終逐鹿中原。
5.開發成本比較
既然php在很多方面不如java,那麽php開發的oa產品為什麽會和java產品競爭就是Php陣營壹般走低端路線,而java陣營走高端路線。兩者的交集面積很小。
軟件的價格很大程度上與其自身的成本和功能掛鉤。php的入門門檻較低,大部分學過C的程序員都可以輕松轉型成為php程序員,這使得php程序員泛濫,而低成本的php軟件產品層出不窮。以PHP最經典的組合PHP+MySQL+Apache為例。因為所有軟件都是開源免費的,投入不高。
java開發需要特定的環境,成長為壹名合格的java程序員需要壹定的時間,而Java程序員的成本是php的數倍。Java的web應用服務器都是免費的,比如Tomcat和JBoss,WebSphere和Weblogic壹定要選有好的商業服務。這項投資的成本實際上是php的n倍。所以用java開發oa的成本要遠遠高於用php開發的同類軟件產品。但由於java開發成本高,難以實現抄襲和短期超越的可能,也使得用java開發的產品門檻更高。
不怕不識貨,就怕貨比三家。Php開發的產品也可以用,但是比不上java開發的同類產品。正是因為php開發的產品整體性能與java相差甚遠,所以php利用低成本低價格的優勢來對抗同類java產品,用價格差距平衡購買者的心態。所以PHP+MYSQL的OA不值錢也不奇怪。
第二種類型
比較PHP和JSP這兩種web開發技術,其實就是比較PHP和Java在目前情況下的Web開發。以下是我在幾個主要方面的對比:
第壹,語言對比
Php是壹種解釋執行的服務器腳本語言。首先,php簡單易用。語法類似於C語言,所以學過C語言的程序員可以很快熟悉php的開發。java需要學習Java的語法,熟悉壹些核心類庫,知道面向對象的編程方法。所以java不像php那麽好學。
Java必須首先被編譯成字節碼。類文件,然後在Java虛擬機上解釋和執行。java web開發首先想到的就是JSP(現在的JSP2.0)。最初的java web開發是通過servlet實現的,需要程序員在java源文件中嵌入大量的html代碼。所以後來出現了jsp,可以很容易的嵌入到html文件中。實際上,JSP文件在服務器上執行時,首先被應用服務器轉換成servlet,然後編譯執行。Jsp可以通過servlet和JavaBean的支持產生強大的功能。JavaBean是壹個可重用和跨平臺的軟件組件。使用javabean可以很容易地實現java代碼和html的分離,增強系統的功能和軟件的可重用性。
Java的Web開發屬於SUN公司定義的J2EE規範。而且,J2EE包含了java web開發的方方面面,比如JSP、Servlet、JDBC、JNDI、JAVABEAN、EJB等等。J2EE特別適合大型企業應用。
二、數據庫訪問比較
Java通過JDBC訪問數據庫,通過不同數據庫廠商提供的數據庫驅動程序訪問數據庫很方便。訪問數據庫的界面相對統壹。
PHP對不同的數據庫使用不同的數據庫訪問接口,所以數據庫訪問代碼不具有通用性。比如壹個用Java開發的web應用,從MySQL數據庫轉移到Oracle數據庫時,只需要很少的修改。另壹方面,PHP需要大量的修改。
三、系統設計架構比較
使用Java的web開發技術需要面向對象的系統設計方法,而PHP仍然采用面向過程的開發方法。所以用Java開發的前期需要做大量的系統分析和設計工作。
第四,跨平臺
Java和PHP都有很好的跨平臺特性。幾乎所有的都可以在Linux或Windows等不同操作系統上運行,無需任何修改。
動詞 (verb的縮寫)開發成本比較
PHP最經典的組合是PHP+MySQL+Apache。非常適合開發中小型web應用,開發速度比較快。而且所有的軟件都是開源免費的,可以減少投資。
Java的web應用服務器有免費的Tomcat、JBoss等。如果需要更好的商業服務,還有WebSphere和Weblogic。
不及物動詞分布式多層體系結構的比較
PHP只能實現簡單的分布式兩層或三層架構,而JAVA在這方面更強大,可以實現多層網絡架構。數據庫層(持久層)、應用(業務)邏輯層和表現邏輯層是相互分離的,現在不同的層已經得到壹些成熟的開發框架的支持。比如Struts利用java的web開發技術實現MVC設計模式,業務邏輯層也有Spring框架,數據庫持久層也有Hibernate框架。這些框架可以方便開發者高效、合理、科學地構建多層業務應用。
先簡單說壹下Struts,它本質上是壹個基於JSPModel2的MVC(模型、視圖、控制器)框架。JSPModel2架構是壹種通過結合使用JSP和Servlet來提供動態內容的方法。在Struts框架中,模型由實現業務邏輯的JavaBean或EJB組件組成,控制器由Servlet實現,視圖由壹組JSP文件組成。Struts可以用來定義開發人員和web設計人員之間的角色和分工。而且項目越復雜,優勢越明顯。
七。源代碼安全性
php開發的程序源代碼是公開的,別人拿到PHP開發的程序後可以修改。
Java開發程序,最終用戶得到的只是壹些編譯好的類類,看不到完整的源代碼,安全性高。
八。性能比較
有人做過實驗,分別測試這兩種語言的循環性能和對Oracle數據庫的訪問。
在循環性能測試中,JSP以驚人的4秒結束了20000 * 20000的循環。PHP測試了2000 * 2000個周期(少了壹個數量級),但分別用了63秒。
在數據庫測試中,他們分別插入、更新、選擇和刪除:JSP Oracle8進行1000次:JSP需要13秒,PHP需要69秒。
表1 PHP和Java的比較
PHPJAVA
低重用性和高重用性
發展速度
可維護性差
優秀的可移植性——Linux,Windows,Unix等。
安全性低,安全性高。
開發成本低,成本高。
多層架構優化不佳
數據庫訪問接口不統壹。
擴展性差
面向對象的差分優化
綜上所述,PHP適合中小型應用系統的快速開發,開發成本低,對變化的需求響應快。Java適合開發大型應用系統,應用前景廣闊,易於維護,復用性好。還有,用Java開發的同樣功能的系統,價格比用PHP開發的要高。