PHP與JSP比較

PHPphp

  PHP(Hypertext Preprocessor)是一種嵌入HTML頁面中的腳本語言。它大量地借用C和Perl語言的語法, 並結合PHP本身的特性,使Web開發者可以快速地寫出動態產生頁面。html

  PHP是徹底免費的開源產品,不用花錢,Apache和MYSQL也是用樣免費開源,在國外很是流行,PHP和MYSQL搭配使用,能夠很是快速的搭建一套不錯的動態網站系統,所以國外大多數主機系統都配有免費的APACHE+PHP+MYSQL。一般認爲這種搭配的執行效率比IIS+ASP+ACCESS要高,然後者的使用還必須另外交錢給微軟。java

  PHP的語法和Perl很類似,可是PHP所包含的函數卻遠遠多於Perl,PHP沒有命名空間,編程時候必須努力避免模塊的名稱衝突。一個開源的語言雖然須要簡單的語法和豐富的函數,但PHP內部結構的天生缺陷致使了PHP不適合於編寫比中小型業餘網站更大的網站。程序員

  PHP開發的成功案例:web

  MediaWiki — 著名的維基百科(Wiki)程序,如此龐大的條目竟然只用PHP+MYSQL就可以支持,真是難以想象。數據庫

  WordPress — 著名的Blog系統,功能上絲絕不輸於Movable Type,很多用戶都紛紛從Movable Type轉移到了WordPress。編程

  結論:PHP語法簡單,很是易學易用,很利於快速開發各類功能不一樣的定製網站,PHP由於結構上的缺陷,使的PHP在複雜的大型項目上的開發和維護都比較困難。設計模式

  ASP數組

   ASP(Active Server Pages)微軟的Windows IIS系統自帶的腳本語言,利用它能夠執行動態的Web服務應用程序。ASP的語法很是相似Visual BASIC,學過VB的人能夠很快上手,ASP也是這幾種腳本語言中最簡單易學的開發語言。但ASP也是這幾種語言中惟一的一個不能很好支持跨平臺的語言。安全

  由於ASP腳本語言很是簡單,所以其代碼也簡單易懂,結合HTML代碼,可快速地完成網站的應用程序。

  ASP在國內異常流行,由於國內大多使用的是盜版的Windows和盜版的SQLServer,而ASP+COM+SQLServer實際上也是一種不錯的搭配,其性能也不輸於PHP+MYSQL,特別是Windows系統和SQLServer都有圖形界面,比APACHE和MYSQL易於維護,所以對於不重視知識產權的國家來講也是一種不錯的選擇。

  不過,正由於ASP很簡單,因此單純使用ASP所能完成的功能也是有限的,好在COM(Component Object Model)技術拯救了ASP,微軟提供了COM/DCOM技術,極大拓寬了ASP的應用範圍,使得ASP幾乎具備無限可擴充性。

  結論:和PHP同樣,ASP簡單而易於維護,很適合小型網站應用,經過DCOM和MTS技術,ASP甚至還能夠完成小規模的企業應用,但ASP的致命缺點就是不支持跨平臺的系統,在大型項目開發和維護上很是困難。

  JSP

  JSP(JavaServer Pages)是Sun公司推出的一種動態網頁技術。JSP技術是以Java語言做爲腳本語言的,熟悉JAVA語言的人能夠很快上手。

  JSP自己雖然也是腳本語言,可是卻和PHP、ASP有着本質的區別。PHP和ASP都是由語言引擎解釋執行程序代碼,而JSP代碼卻被編譯成Servlet並由Java虛擬機執行,這種編譯操做僅在對JSP頁面的第一次請求時發生。所以廣泛認爲JSP的執行效率比PHP和ASP都高。

  JSP是一種服務器端的腳本語言,最大的好處就是開發效率較高,JSP可使用JavaBeans或者EJB(Enterprise JavaBeans)來執行應用程序所要求的更爲複雜的處理,可是這種網站架構由於其業務規則代碼與頁面代碼混爲一團,不利於維護,所以並不適應大型應用的要求,取而代之的是基於MVC的Web架構。MVC的核心思想是將應用分爲模型、視圖和控制器三部分。模型是指應用程序的數據,以及對這些數據的操做;視圖是指用戶界面;控制器負責用戶界面和程序數據之間的同步。經過MVC的Web架構,能夠弱化各個部分的耦合關係,並將業務邏輯處理與頁面以及數據分離開來,這樣當其中一個模塊的代碼發生改變時,並不影響其餘模塊的正常運行,因此基於MVC的Web架構更適應於大型應用開發的潮流。

  所以,很多國外的大型企業系統和商務系統都使用以上的MVC架構,可以支持高度複雜的基於Web的大型應用。

  結論:JSP對於網站開發來說不像PHP和ASP那樣易學易用,支持JAVA的主機也少於支持PHP的主機,這從必定程度上限制了Java技術在網站上的發展,不過在企業軟件應用上來說,MVC仍是擁有至關大的優點的,雖然其配置和部署相對其餘腳本語言來講要複雜一些,但對於跨平臺的中大型企業應用系統來說,基於JAVA技術的MVC架構幾乎成爲惟一的選擇。

如今市場上的oa基本上可歸結爲兩大陣營,即php陣營和java陣營。但對接觸oa不久的用戶來講,看到的每每只是它們的表相,只是明顯的價格差別,卻很難看出它們之間的實際差別。其實, PHP + MYSQL 不值錢不只僅侷限於oa軟件,而是總體上PHP + MYSQL開發的軟件都不如java開發的軟件值錢。爲何PHP + MYSQL 的OA爲何不值錢呢?首先得明白php和java之間的差別才行。

   一、系統的技術架構比較

   分層是將系統進行有效組織的方式,分而治之的思想是計算機領域中很是重要的思想。在好的分層思想引導下,便能實現「高內聚、低耦合」,也能將具體的問題割裂開來,易於控制、易於延展,更易於分配資源。PHP只能實現簡單的分佈式兩層或三層的架構,而JAVA在這方面就十分強大,能夠實現多層的網絡架構。運用MVC的設計模式,可以使oa系統具備更加高效、合理的系統架構。技術架構的落後,使運用php編寫的oa軟件系統先天不足,然後天又沒法補足其先天上的劣勢。使得系統在可拓展性、需求應變性上與JAVA編寫的oa軟件系統的差距愈來愈大。架構的差距,註定了php作的oa充其量是個小家碧玉,始終沒法和java這種你們閨秀同臺競技。

   二、數據庫訪問比較

   PHP可編譯成具備與許多數據庫相鏈接的函數。將本身編寫外圍的函數去間接存取數據庫。經過這樣的途徑當更換使用的數據庫時,能夠輕鬆地修改編碼以適應這樣的變化。但PHP提供的數據庫接口支持彼此不統一,好比對Oracle, MySQL,Sybase的接口,彼此都不同。因爲PHP對於不一樣的數據庫採用不一樣的數據庫訪問接口,因此數據庫訪問代碼的通用性不強。

   而Java經過JDBC來訪問數據庫,經過不一樣的數據庫廠商提供的數據庫驅動方便地訪問數據庫,訪問數據庫的接口比較統一。若是一樣是將開發的web應用從MYSQL數據數轉到ORACLE數據,PHP須要作大量的修改工做,並且比較繁瑣。但JAVA開發的便只須要不多的更改便能實現。

   數據庫訪問方式的差別,奠基了php開發出的oa和java開發出來的oa是馬車和火車的差距,前者只能亦步亦趨並且額度有限,後者倒是工業化的結晶,不只可以包容萬物並且速度上穩步提高。

   三、安全性對比

   在同是開源和跨平臺的java面前,php丟掉了不少的優點。在代碼的安全性上尤其突出。php的開發程序在別人拿到代碼後,能夠很容易的進行修改。而java開發的程序因爲沒法看到完整的源代碼,只能看到一些編譯好的類文件,因此安全性較高。加之系統架構的優點,在安全性上php和java是相去甚遠。

   若是非要將php和java在安全性上作個比較的話,同一個小偷光顧php那是隨便拿來隨便改,想拿什麼拿什麼,拿的高興還能大筆一輝某某到此一遊。而光顧java的時候,便會發現警察把守,內設自動報警裝置,即使突破重重阻擾後進入居室。那值錢的東西都放在加密後的保險櫃中,只能望洋興嘆、鎩羽而歸。

   四、前瞻性和拓展性

   從總體來講,php適用於中小型系統,而java適用於大型系統。Php可以將單一的事件作好,但卻不適合完成集成度較高的多項併發事件。爲何說php適合中小型系統而不適合作大系統呢?

   首先, php缺少多層結構支持。而對於大型的系統負荷站點,只能採用分佈計算。將數據庫、應用邏輯層和表示邏輯層彼此分開,並將同層的根據流量分開,組成二維數組。而php偏偏缺少這種支持。

   其次,PHP提供的數據庫接口不統一,要將多個不一樣的數據庫數據統一須要花費很大的力氣。而JAVA則沒有這種缺陷,可經過SUN Java的Java Class和EJB得到規模支持,經過EJB/CORBA以及衆多廠商的Application Server得到結構支持。如IBM的E-business,它的核心是採用JSP/Servlet的Web Sphere,是經過CGI來提供支持的。

   若是將Php比做將才,具有獨擋一方的能力。那麼java即是帥才,具備較好的前瞻性和拓展性,總體佈局和協同能力強。可以指揮千軍萬馬,最後逐鹿中原。

   五、開發成本比較

   既然php在諸多方面都不如java優異,那麼php開發出的oa產品何以與java產品競爭呢?在於Php陣營廣泛走的是低端路線,而java陣營走的是中高端路線。二者之間交*的區域較小。

   軟件價格的高低很大程度上和自身成本和功能相掛鉤。php的入門門檻較低,絕大多數學過c的程序員都很容易轉型爲php程序員,這使得php程序員的泛濫成災的同時,低成本的php軟件產品也層出不窮。以PHP最經典的組合PHP + MySQL + Apache爲例,因爲全部軟件都是開源免費的,因此投入並不高。

   而java開發須要特定的環境,成長爲一個合格的java程序員須要必定的時間,java程序員的成本也是php成本的幾倍。Java的web應用服務器免費的有Tomcat、JBoss等,而要想具備很好的商業化服務便必須選用Web Sphere和 Web logic。這其中投入的成本無形中便超是php成本的N倍。因此,java開發oa的成本要遠遠高於php開發出來的同類軟件產品。但也正因爲java開發的成本較高,很難實現抄襲和短時間內逾越的可能,也使得java用開發出的產品門檻更高。

   不怕不識貨,就怕貨比貨。Php開發出來的產品也能用,可是和java開出的同類產品是無法比較的。正由於php開發的產品總體性能和java開發的相去甚遠,因此php運用低成本的低價優點和同類的java產品抗爭,以價格落差來平衡購買者的心態。因此,PHP + MYSQL 的OA不值錢也就不足爲怪了 

第二種

比較PHP和JSP這兩個web開發技術,在目前的狀況是實際上是比較PHP和Java的Web開發。如下是我就幾個主要方面進行的比較: 

1、 語言比較 

Php是解釋執行的服務器腳本語言,首先php有簡單容易上手的特色。語法和c語言比較象,因此學過c語言的程序員能夠很快的熟悉php的開發。而java須要先學好java的語法和熟悉一些核心的類庫,懂得面向對象的程序設計方法。因此java不如php好學。 

Java首先要編譯成字節碼.class文件,而後在java虛擬機上解釋執行。Java的web開發首先最容易想到的就是JSP(如今已經到JSP2.0),原來的java的web開發都是用servlet來實現的,用servlet來開發須要程序員在java的源文件中嵌入大量的html代碼。因此後來就出現了JSP,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就特別適合於作大型的企業級的應用。 

2、 數據庫訪問比較 

Java經過JDBC來訪問數據庫,經過不一樣的數據庫廠商提供的數據庫驅動方便地訪問數據庫。訪問數據庫的接口比較統一。 

PHP對於不一樣的數據庫採用不一樣的數據庫訪問接口,因此數據庫訪問代碼的通用性不強。例如:用Java開發的web應用從MySQL數據庫轉到Oracle數據庫只須要作不多的修改。而PHP則須要作大量的修改工做。 

3、 系統設計架構比較 

採用Java的web開發技術,須要使用的是面向對象的系統設計方法,而PHP仍是採用面向過程的開發方法。因此用Java進行開發前期須要作大量的系統分析和設計的工做。 

4、 跨平臺性 

Java和PHP都有很好的跨平臺的特性。幾乎均可以在不做任何修改的狀況下運行在Linux或者Windows等不一樣的操做系統上。 

5、 開發成本比較 

PHP最經典的組合就是:PHP + MySQL + Apache。很是適合開發中小型的web應用,開發的速度比較快。並且全部的軟件都是開源免費的,能夠減小投入。 

Java的web應用服務器有免費Tomcat、JBoss等,若是須要更好的商業化的服務有:Web Sphere和 Web logic。 

6、 分佈式多層架構比較 

PHP只能實現簡單的分佈式兩層或三層的架構,而JAVA在這方面就比較強大,能夠實現多層的網絡架構。數據庫層(持久化層)、應用(業務)邏輯層、表示邏輯層彼此分開,並且如今不一樣的層都已經有一些成熟的開發框架的支持。例如Struts就是利用java的web開發技術實現了MVC的設計模式,而在業務邏輯層也有Spring框架,數據庫持久化層有Hibernate等框架。這些框架能夠方便開發者高效、合理、科學得架構多層的商業應用。 

下面簡要的說一下Struts,它實質上是在JSP Model2的基礎上實現的一個MVC(Model、View、Controler)框架。JSP Model2體系結構是一種聯合使用JSP 與Servlet 來提供動態內容的方法。在Struts框架中,模型由實現業務邏輯的JavaBean或EJB組件構成,控制器由Servlet實現的,視圖由一組JSP文件組成。採用Struts能夠明確角色的定義和開發者與網頁設計者的分工。並且項目越複雜,其優點越明顯。 

7、 源代碼安全 

PHP開發的程序的源代碼都是公開的,他人拿到php開發的程序後均可以進行修改。 

Java開發的程序,最後用戶拿到的是隻是一些編譯好的class類,沒法看到完整的源代碼,安全性高。 

8、性能比較 

有人作過試驗,對這兩種種語言分別作迴圈性能測試及存取Oracle數據庫測試。 

在循環性能測試中,JSP只用了使人吃驚的四秒鐘就結束了20000*20000的迴圈。而PHP測試的是2000*2000循環(少一個數量級),卻分別用了63秒。 

數據庫測試中,兩者分別對 Oracle 8 進行 1000 次 Insert,Update,Select和Delete: JSP 須要 13 秒,PHP 須要 69 秒。  

表格 1 PHP 與Java的比較 

       PHP JAVA 

可複用性 低 高 

開發速度 快 慢 

易維護性 差 優 

可移植性 優-Linux、Windows、Unix等 

安全性   低 高 

開發費用 低 高 

多層架構 差 優 

數據庫訪問 接口不統一 接口統一 

可擴展性 差 優 

面向對象 差 優   
綜上 PHP適合於快速開發,中小型應用系統,開發成本低,可以對變更的需求做出快速的反應。而Java適合於開發大型的應用系統,應用的前景比較廣闊,系統易維護、可複用性較好。還有,一樣功能的系統用Java開發的系統要比PHP開發的系統的價格要高
相關文章
相關標籤/搜索