Perl、PHP、ASP、JSP技術比較

本文將對目前最常用的四種動態網頁語言Perl(Practical Extraction and Report Language)、PHP(Hypertext Preprocessor)、ASP(Active Server Pages)、JSP(JavaServer Pages)進行一些技術性的比較

  Perl

  Perl(Practical Extraction and Report Language)是一種很古老的腳本語言。最初的Web應用大多是用Perl編寫的,Perl很像C語言,使用非常靈活,對於文件操作和處理具有和C語言一樣的方便快捷。

  也正是因爲Perl的靈活性和“過度”的冗餘語法,也因此導致許多Perl程序的代碼令人難以閱讀和維護,因此使用的人在逐漸減少,並且目前有被Python替代的可能。

  另外Perl對於CPU的消耗似乎較高,效率似乎有一些不足。

  Perl開發的成功案例:

  Movable Type — 世界上使用最多的Blog系統之一,功能強大的足以和一個CMS系統相比擬。

  Awstats — 非常經典的日誌系統,速度極快,功能也非常強大。

  結論:Perl在部分應用中能發揮很大優勢,但其維護性差使得其普及變得很困難。

  PHP

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

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

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

  PHP開發的成功案例:

  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架構幾乎成爲唯一的選擇。

 

 

 

ASP PHP JSP 比較

 簡 介 :

  ASP全名Active Server Pages,是一個WEB
服務器端的開發環境,利用它可以產生和執行動態的、互動的、高性能的WEB服務應用程序。ASP採用腳本語言VBScript(Java script)作爲自己的開發語言。

  PHP是一種跨平臺的服務器端的嵌入式腳本語言。它大量地借用C,Java和Perl語言的語法, 並耦合PHP自己的特性,使WEB開發者能夠快速地寫出動態產生頁面。它支持目前絕大多數數據庫。還有一點,PHP是完全免費的,不用花錢,你可以從PHP官方站點(http: //www.php.net)自由下載。而且你可以不受限制地獲得源碼,甚至可以從中加進你自己需要的特色。

  JSP是Sun公司推出的新一代網站開發語言,Sun公司藉助自己在Java上的不凡造詣,將Java從Java應用程序和Java
Applet之外,又有新的碩果,就是JSP,Java Server Page。JSP可以在Serverlet和JavaBean的支持下,完成功能強大的站點程序。

  三者都提供在 HTML代碼中混合某種程序代碼、由語言引擎解釋執行程序代碼的能力。但JSP代碼被編譯成 Servlet並由Java虛擬機解釋執行,這種編譯操作僅在對JSP頁面的第一次請求時發生。在ASP 、PHP、JSP環境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的 HTML頁面只依賴於Web服務器,而ASP 、PHP、JSP頁面需要附加的語言引擎分析和執行程序代碼。程序代碼的執行結果被重新嵌入到HTML代碼中,然後一起發送給瀏覽器。ASP 、PHP、JSP三者都是面向Web服務器的技術,客戶端瀏覽器不需要任何附加的
軟件支持。

  
技術特點

  ASP:

  1. 使用VBScript 、 JScript等簡單易懂的腳本語言,結合HTML代碼,即可快速地完成網站的應用程序。

  2. 無須compile編譯,容易編寫,可在服務器端直接執行。

  3. 使用普通的文本編輯器,如Windows的記事本,即可進行編輯設計。

  4. 與瀏覽器無關(Browser Independence), 客戶端只要使用可執行HTML碼的瀏覽器,即可瀏覽Active Server Pages所設計的網頁內容。Active ServerPages 所使用的腳本語言(VBScript 、 Jscript)均在WEB服務器端執行,客戶端的瀏覽器不需要能夠執行這些腳本語言。

  5.Active Server Pages能與任何ActiveX scripting語言兼容。除了可使用VB Script或JScript語言來設計外,還通過plug-in的方式,使用由第三方所提供的其它腳本語言,譬如REXX 、Perl 、Tcl等。腳本引擎是處理腳本程序的COM(Component Object Model) 對象。

  6. 可使用服務器端的腳本來產生客戶端的腳本。

  7. ActiveX Server Components(ActiveX 服務器組件 )具有無限可擴充性。可以使用Visual Basic 、Java 、Visual C++ 、COBOL等程序設計語言來編寫你所需要的ActiveX Server Component 。

  PHP:

  1. 數據庫連接 

  PHP可以編譯成具有與許多數據庫相連接的函數。PHP與MySQL是現在絕佳的組合。你還可以自己編寫外圍的函數去間接存取數據庫。通過這樣的途徑當你更換使用的數據庫時,可以輕鬆地更改編碼以適應這樣的變化。PHPLIB就是最常用的可以提供一般事務需要的一系列基庫。但PHP提供的數據庫接口支持彼此不統一,比如對Oracle, MySQL,Sybase的接口,彼此都不一樣。這也是PHP的一個弱點。

  2. 面向對象編程 

  PHP提供了類和對象。基於web的編程工作非常需要面向對象編程能力。PHP支持構造器、提取類等。

  JSP:

  1. 將內容的產生和顯示進行分離

  使用JSP技術,Web頁面開發人員可以使用HTML或者XML標識來設計和格式化最終頁面。使用JSP標識或者小腳本來產生頁面上的動態內容。產生內容的邏輯被封裝在標識和JavaBeans羣組件中,並且捆綁在小腳本中,所有的腳本在服務器端執行。如果核心邏輯被封裝在標識和Beans中,那麼其它人,如Web管理人員和頁面設計者,能夠編輯和使用JSP頁面,而不影響內容的產生。在服務器端,JSP引擎解釋JSP標識,產生所請求的內容(例如,通過存取JavaBeans羣組件,使用JDBC技術存取數據庫),並且將結果以HTML(或者XML)頁面的形式發送回瀏覽器。這有助於作者保護自己的代碼,而又保證任何基於HTML的Web瀏覽器的完全可用性。

  2. 強調可重用的羣組件

  絕大多數JSP頁面依賴於可重用且跨平臺的組件(如:JavaBeans或者Enterprise JavaBeans)來執行應用程序所要求的更爲複雜的處理。開發人員能夠共享和交換執行普通操作的組件,或者使得這些組件爲更多的使用者或者用戶團體所使用。基於組件的方法加速了總體開發過程,並且使得各種羣組織在他們現有的技能和優化結果的開發努力中得到平衡。

  3. 採用標識簡化頁面開發

  Web頁面開發人員不會都是熟悉腳本語言的程序設計人員。JavaServer Page技術封裝了許多功能,這些功能是在易用的、與JSP相關的XML標識中進行動態內容產生所需要的。標準的JSP標識能夠存取和實例化 JavaBeans組件,設定或者檢索羣組件屬性,下載Applet,以及執行用其它方法更難於編碼和耗時的功能。

  通過開發定製化標識庫,JSP技術是可以擴展的。今後,第三方開發人員和其它人員可以爲常用功能建立自己的標識庫。這使得Web頁面開發人員能夠使用熟悉的工具和如同標識一樣的執行特定功能的構件來工作。

  JSP技術很容易整合到多種應用體系結構中,以利用現存的工具和技巧,並且擴展到能夠支持企業級的分佈式應用。作爲採用Java技術家族的一部分,以及Java 2EE的一個成員,JSP技術能夠支持高度複雜的基於Web的應用。

  由於JSP頁面的內置腳本語言是基於Java程序設計語言的,而且所有的JSP頁面都被編譯成爲Java Servlet,JSP頁面就具有Java技術的所有好處,包括健壯的
存儲管理和安全性。

  作爲Java平臺的一部分,JSP擁有Java程序設計語言“一次編寫,各處執行”的特點。隨着越來越多的供貨商將JSP支持加入到他們的產品中,您可以使用自己所選擇的服務器和工具,修改工具或服務器並不影響目前的應用。

  應用範圍

  ASP是Microsoft開發的動態網頁語言,也繼承了微軟產品的一貫傳統,只能執行於微軟的服務器產品,IIS(Internet Information Server) (windows NT)和PWS(Personal Web Server)(windows 9上。Unix下也有ChiliSoft的組件來支持ASP,但是ASP本身的功能有限,必須通過ASP+COM的羣組合來擴充,Unix下的COM實現起來非常困難。

  PHP3可在Windows,Unix,Linux的Web服務器上正常執行,還支持IIS,Apache等一般的Web服務器,用戶更換平臺時,無需變換PHP3代碼,可即拿即用。

  JSP同PHP3類似,幾乎可以執行於所有平臺。如Win NT,Linux,Unix。在NT下IIS通過一個外加服務器,例如JRUN或者ServletExec,就能支持JSP。知名的Web服務器Apache已經能夠支持JSP。由於Apache廣泛應用在NT、Unix和Linux上,因此JSP有更廣泛的執行平臺。雖然現在NT
操作系統佔了很大的市場份額,但是在服務器方面Unix的優勢仍然很大,而新崛起的Linux更是來勢不小。從一個平臺移植到另外一個平臺,JSP和JavaBean甚至不用重新編譯,因爲Java字節碼都是標準的與平臺無關的。

  
性能比較

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

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

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

  
前景分析   

  目前在國內PHP與ASP應用最爲廣泛。而JSP由於是一種較新的技術,國內採用的較少。但在國外,JSP已經是比較流行的一種技術,尤其是電子商務類的網站,多采用JSP。

  採用PHP的網站如新浪網(sina)、中國人(Chinaren)等,但由於PHP本身存在的一些缺點,使得它不適合應用於大型電子商務站點,而更適合一些小型的商業站點。首先,PHP缺乏規模支持。其次,缺乏多層結構支持。對於大負荷站點,解決方法只有一個:分佈計算。數據庫、應用邏輯層、表示邏輯層彼此分開,而且同層也可以根據流量分開,羣組成二維數組。而PHP則缺乏這種支持。還有上面提到過的一點,PHP提供的數據庫接口支持不統一,這就使得它不適合運用在電子商務中。

  ASP和JSP則沒有以上缺陷,ASP可以通過Microsoft Windowsd的COM/DCOM獲得ActiveX規模支持,通過DCOM和Transcation Server獲得結構支持;JSP可以通過
SUN Java的Java Class和EJB獲得規模支持,通過EJB/CORBA以及衆多廠商的Application Server獲得結構支持。

  三者中,JSP應該是未來發展的趨勢。世界上一些大的電子商務解決方案提供商都採用JSP/Servlet。比較出名的如IBM的E-business,它的核心是採用JSP/Servlet的Web Sphere。它們都是通過CGI來提供支持的。但去年10月後它推出了Enfinity,一個採用JSP/Servlet的電子商務Application Server,而且聲言不再開發傳統軟件。

  總之,ASP,PHP,JSP三者都有相當數量的支持者,由此也可以看出三者各有所長。正在學習或使用動態頁面的朋友可根據三者的特點選擇一種適合自己的語言。

  評論一:

  PHP的強大在於靈活,支持所有的數據庫,所有的系統,除了可以安裝在APACHE中而且可以安裝在IIS裏。並且APACHE天生就是一對好搭檔,甚至可以編譯在一起。

  PHP程序可以編譯後運行也可以不編譯運行,編譯後除了保護了源代碼外還可以起到大大提速作用,都可以跨平臺直接使用。支持WIN API,DLL,JAVA等等。

  PHP的代碼非常書寫簡單易懂。

  ASP現在已經被微軟所拋棄,改爲全新的ASP.NET,新的ASP.net也非常強大,可以和微軟的C#、VB.NET等搭配擴充功能,具有.net所賦予的優點。但還是不能跨平臺。微軟的強大在於編程工具的強大,傻瓜式的編程工具和編程思想非常適合軟件剛剛起步的地區,因此在國內擁有極多的支持者。ASP在國內的應用最廣泛,這在國際上PHP占主導地位的情況剛好相反。

  JSP是後推出的腳本語言,由於大家常常把JAVA和JSP當成一會事所以在國內JSP的隊伍正在迅速擴張,另外也是由於JSP的後臺也比較硬,經常有廠家的宣傳因此對於那些不滿ASP卻又消息閉塞的人提供了選擇的餘地。JSP能夠支持JAVA也是獲得衆多支持的原因之一。

  樓主帖子中給出的ORACLE的數據調用對比把PHP和ASP放到了後面這樣未免太偏,ASP由於WIN系統的緣故當然會慢,這個傻子都知道。而在WIN系統中PHP訪問ORACLE肯定要比同在WIN系統中的JSP要快得多,並且PHP還要區分是否爲編譯運行,如果同在在UNXI系統中那麼PHP肯定也要比JSP快的多。

  PHP在大型網站的應用已經非常明顯,很多國內大型的門戶網站都用PHP,而用JSP的則要花費大量的財力來打造性能,否則就非常可憐了。目前我還沒有見過那個用JSP的網站能比ASP.NET快多少的,更不用說和PHP比了。

  當然搞電子商務這樣的東東,需要的其實並不是那個語言而是工具的好壞,在這方面背靠大樹當然好乘涼了,如果是我就會選擇現ASP.NET次而考慮JSP,因爲如果在微軟的系統上跑,JSP絕對是實際上最慢的。等哪天PHP的工具能趕上微軟的VS那麼我會毫不猶豫的採用PHP。採用好的IDE編程工具可以進行高效的編程,但ASP.net和JSP往往只起到了處理一些WEB信息的工作,真正的主角則是背後的C#等和JAVA。說白了他們只是冰山上的一角,還是背後的主角好。而PHP對JAVA的支持其實甚至超過JSP,只是PHP對於初學者確實沒有微軟他們親,畢竟開源世界尷尬並不是初學者能夠理解的。

  很多初學者搞不懂JS和JSP的區別,以爲ASP和PHP中有時要調用JS就感覺JSP非常棒,其實JSP也一樣要藉助JS來完成一些特殊的功能,說白了JSP和JS根本就是兩回事,這也等於是JS爲JSP打了免費廣告。

  其它就不多說了,任何一個程序員如果只會一兩門語言也不能算是合格的程序員,要學會不同的程序用不同語言,這樣才高效。

  評論二:

  JSP慢主要是受JVM的牽制所致(JAVA的強大與JVM也互成因果),JSP的迅速普及與JAVA陣營的強大不無關係,同時也跟你說的JS誤解有一定關係。ASP依賴無處不在的M$系統還在繼續發揮餘熱,ASP.NET技術先進但要真正普及起來尚需時日,關鍵是一般小型Web應用上ASP已經可以勉強應付,在企業級應用上由於JAVA佔了一定先機,所以目前還不足於稱雄。

  而PHP受到大力吹捧的靈活與速度同時也逐漸構成PHP5以及後續版本發展的壁壘。PHP要想獲得更大的發展,必須重視其商業價值,而主要的商業價值在於企業級應用上。PHP5擴展了更好的類支持,這只是它小心翼翼朝這個方向邁出的第一步,估計以後還會在這方面做出更多的嘗試,之所以它比較保守,是因爲它在靠近JAVA或ASP.NET的同時人們擔心它會喪失靈活與速度上面的優勢,如果在這方面處理失敗,它不僅無法從其他陣營裏面拉到人,反而自身的人馬會逐漸流失。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章