梁燕華
【摘要PHP、ASP和JSP是目前主要流行的動態(tài)網(wǎng)頁技術(shù)。主要討論JSP與ASP、PHP的區(qū)別,比較其性能、效率、安全等方面的差異,分析其應(yīng)用前景及發(fā)展方向。
【關(guān)鍵詞】ASP PHP JSP動態(tài)網(wǎng)頁
一、目前,最常用的三種動態(tài)網(wǎng)頁語言有ASP (Active ServerPages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor)。
ASP采用腳本語言VBScript (Java script)作為自己的開發(fā)語言。PHP是一種跨平臺的服務(wù)器端的嵌入式腳本語言。它大量地借用C,Java和Perl語言的語法,并耦合PHP自己的特性。使WEB開發(fā)者能夠快速地寫出動態(tài)產(chǎn)生頁面。它支持目前絕大多數(shù)數(shù)據(jù)庫。還有一點,PHP是完全免費的,不用花錢,你可以從PHP官方站點(http: //www.php.net)自由下載。而且你可以不受限制地獲得源碼,甚至可以從中加進你自己需要的特色。JSP是Sun公司推出的新一代網(wǎng)站開發(fā)語言,Sun公司借助自己在Java上的不凡造詣,將Java從Java應(yīng)用程序和Java Applet之外.又有新的碩果,就是JSP,JavaServer Page。JsP可以在Scrverlct和JavaBean的支持下,完成功能強大的站點程序。
三者都提供在HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。但JsP代碼被編譯成Servlet并由Java虛擬機解釋執(zhí)行,這種編譯操作僅在對JSP頁面的第一次請求時發(fā)生。在ASP、PHP、JSP環(huán)境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的HTML頁面只依賴于Web服務(wù)器,而ASP、PHP、JSP頁面需要附加的語言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到HTML代碼中,然后一起發(fā)送給瀏覽器。ASP、PHP、JsP三者都是面向Web服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。
二、從技術(shù)特點、應(yīng)用范圍、性能比較、前景分析進行比較。
1.從技術(shù)特點方面比較
ASP使用VBSc-ipt、JScript等簡單易懂的腳本語言,結(jié)合HTML代碼,即可快速地完成網(wǎng)站的應(yīng)用程序。無須compile編譯,容易編寫,可在服務(wù)器端直接執(zhí)行。使用普通的文本編輯器,如Windows的記事本,即可進行編輯設(shè)計。與瀏覽器無關(guān)(Browser In-clependence),客戶端只要使用可執(zhí)行HTML碼的瀏覽器,即可瀏覽Actbive Server Pages所設(shè)計的網(wǎng)頁內(nèi)容。Active ServerPages所使用的腳本語言(VBScript、Jscript)均在WEB服務(wù)器端執(zhí)行,客戶端的瀏覽器不需要能夠執(zhí)行這些腳本語言。Active Server Pages能與任何ActiveX scripting語言兼容。除了可使用VB Script或JScript語言來設(shè)計外,還通過plug-in的方式,使用由第三方所提供的其它腳本語言,譬如REXX、Perl、Tcl等。腳本引擎是處理腳本程序的COM(Component Object Model)對象。可使用服務(wù)器端的腳本來產(chǎn)生客戶端的腳本。ActiveX Server Componcnts(ActiveX服務(wù)器組件)具有無限可擴充性??梢允褂肰isual Basic、Java、Visual C++、COBOL等程序設(shè)計語言來編寫你所需要的ActiveX Server Compo-nent.
PHP可以編譯成具有與許多數(shù)據(jù)庫相連接的函數(shù)。PHP與MySQL是現(xiàn)在絕佳的群組合。你還可以自己編寫外圍的函數(shù)去間接存取數(shù)據(jù)庫。通過這樣的途徑當你更換使用的數(shù)據(jù)庫時,可以輕松地修改編碼以適應(yīng)這樣的變化。PHPLIB就是最常用的可以提供一般事務(wù)需要的一系列基庫。但PHP提供的數(shù)據(jù)庫接口支持彼此不統(tǒng)一,比如對Oracle,MySQL,Sybase的接口,彼此都不一樣。這也是PHP的一個弱點。
JS將內(nèi)容的產(chǎn)生和顯示進行分離使用JsP技術(shù),Web頁面開發(fā)人員可以使用HTML或者XML標識來設(shè)計和格式化最終頁面。使用JsP標識或者小腳本來產(chǎn)生頁面上的動態(tài)內(nèi)容。產(chǎn)牛內(nèi)容的邏輯被封裝在標識和JavaBeans群組件中,并且捆綁在小腳本中,所有的腳本在服務(wù)器端執(zhí)行。如果核心邏輯被封裝在標識和Beans中,那么其它人,如Web管理人員和頁面設(shè)計者,能夠編輯和使用JSP頁面,而不影響內(nèi)容的產(chǎn)生。在服務(wù)器端,JSP引擎解釋JSP標識,產(chǎn)生所請求的內(nèi)容(例如,通過存取JavaBeans群組件,使用JD-BC技術(shù)存取數(shù)據(jù)庫),并且將結(jié)果以HTML(或者XML)頁面的形式發(fā)送回瀏覽器。這有助于作者保護自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。強調(diào)可重用的群組件絕大多數(shù)JSP頁面依賴于可重用且跨平臺的組件(如:JavaBeans或者Enterprise JavaBeans)來執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理。開發(fā)人員能夠共享和交換執(zhí)行普通操作的組件,或者使得這些組件為更多的使用者或者用戶團體所使用?;诮M件的方法加速了總體開發(fā)過程,并且使得各種群組織在他們現(xiàn)有的技能和優(yōu)化結(jié)果的開發(fā)努力中得到平衡。
采用標識簡化頁面開發(fā)Web頁面開發(fā)人員不會都是熟悉腳本語言的程序設(shè)計人員。JavaServer Page技術(shù)封裝了許多功能,這些功能是在易用的、與JSP相關(guān)的XML標識中進行動態(tài)內(nèi)容產(chǎn)生所需要的。標準的JSP標識能夠存取和實例化JavaBeans組件,設(shè)定或者檢索群組件屬性,下載Applet,以及執(zhí)行用其它方法更難于編碼和耗時的功能。
通過開發(fā)定制化標識庫,JSP技術(shù)是可以擴展的。今后,第三方開發(fā)人員和其它人員可以為常用功能建立自己的標識庫。這使得Web頁面開發(fā)人員能夠使用熟悉的工具和如同標識一樣的執(zhí)行特定功能的構(gòu)件來工作。
JSP技術(shù)很容易整合到多種應(yīng)用體系結(jié)構(gòu)中,以利用現(xiàn)存的工具和技巧,并且擴展到能夠支持企業(yè)級的分布式應(yīng)用。作為采用Java技術(shù)家族的一部分,以及Java 2EE的一個成員,JSP技術(shù)能夠支持高度復(fù)雜的基于Web的應(yīng)用。
由于JSP頁面的內(nèi)置腳本語言是基于Java程序設(shè)計語言的,而且所有的JSP頁面都被編譯成為Java Servlet,JSP頁面就具有Java技術(shù)的所有好處,包括健壯的存儲管理和安全性。作為Java平臺的一部分,JsP擁有Java程序設(shè)計語言“一次編寫,各處執(zhí)行”的特點。隨著越來越多的供貨商將JsP支持加入到他們的產(chǎn)品中,您可以使用自己所選擇的服務(wù)器和工具,修改工具或服務(wù)器并不影響目前的應(yīng)用。
2、應(yīng)用范圍方面進行比較
ASP是Microsoft開發(fā)的動態(tài)網(wǎng)頁語言,也繼承了微軟產(chǎn)品的一貫傳統(tǒng),只能執(zhí)行于微軟的服務(wù)器產(chǎn)品,ns (Internet InformationServer)(windows NT)和PWS(Pcrsonal Web Scrvcr)(windows 98)上。U一mx下也有ChiliSoft的組件來支持ASP,但是ASP本身的功能有限,必須通過ASP+COM的群組合來擴充.Unix下的COM實現(xiàn)起來非常困難。
PHP3可在Windows。Unix,Linux的Web服務(wù)器上正常執(zhí)行。還支持ns,Apache等一般的Web服務(wù)器,用戶更換平臺時,無需變換PHP3代碼,可即拿即用。
JsP同PHP3類似,幾乎可以執(zhí)行于所有平臺。如Win NT,Linux,Unix。在NT下ns通過一個外加服務(wù)器,例如JRUN或者ServletExec.,就能支持JsP。知名的Web服務(wù)器Apache已經(jīng)能夠支持JsP。由于Apache廣泛應(yīng)用在NT、Unix和Linux上,因此JSP有更廣泛的執(zhí)行平臺。雖然現(xiàn)在NT操作系統(tǒng)占了很大的市場份額,但是在服務(wù)器方面Unix的優(yōu)勢仍然很大,而新崛起的Linux更是來勢不小。從一個平臺移植到另外一個平臺,JsP和JavaBean甚至不用重新編譯,因為Java字節(jié)碼都是標準的與平臺無關(guān)的。
3、性能方面進行比較
經(jīng)試驗,對這三種語言分別做回圈性能測試及存取Oracle數(shù)據(jù)庫測試。在循環(huán)性能測試中,JsP只用了令人吃驚的四秒鐘就結(jié)束了20000*20000的回圈。而ASP、PHP測試的是2000*2000循環(huán)(少一個數(shù)量級),卻分別用了63秒和84秒。(參考PHPLIB)。數(shù)據(jù)庫測試中,三者分別對Oracle 8進行1000次Insert,Update,Se-lect和Delcte: JSP需要13秒,PHP需要69秒,ASP則需要73秒。
三、前景分析
目前在國內(nèi)PHP與ASP應(yīng)用最為廣泛。而JSP由于是一種較新的技術(shù),國內(nèi)采用的較少。但在國外,JSP已經(jīng)是比較流行的一種技術(shù),尤其是電子商務(wù)類的網(wǎng)站,多采用JSP。采用PHP的網(wǎng)站如新浪網(wǎng)(sina)、中國人(Chinaren)等,但由于PHP本身存在的一些缺點,使得它不適合應(yīng)用于大型電子商務(wù)站點,而更適合一些小型的商業(yè)站點。首先,PHP缺乏規(guī)模支持。其次,缺乏多層結(jié)構(gòu)支持。對于大負荷站點,解決方法只有一個:分布計算。數(shù)據(jù)庫、應(yīng)用邏輯層、表示邏輯層彼此分開,而且同層也可以根據(jù)流量分開,群組成二維數(shù)組。而PHP則缺乏這種支持。還有上面提到過的一點,PHP提供的數(shù)據(jù)庫接口支持不統(tǒng)一,這就使得它不適合運用在電子商務(wù)中。
ASP和JSP則沒有以上缺陷,ASP可以通過Microsoft Win-dowsd的COM/DCOM獲得ActiveX規(guī)模支持,通過DCOM和Tran-scation Server獲得結(jié)構(gòu)支持:JsP可以通過SUN Java的Java Class和EJB獲得規(guī)模支持,通過EJB/CORBA以及眾多廠商的Applica-tion Server獲得結(jié)構(gòu)支持。
三者中,JsP應(yīng)該是未來發(fā)展的趨勢。世界上一些大的電子商務(wù)解決方案提供商都采用JSP/Servlet。比較fh名的如IBM的E-business,它的核心是采用JSP/Servlct的Web Sphc-c。它們都是通過CCI來提供支持的。但去年10月后它推出了Enfinity,一個采用JSP/Servlet的電子商務(wù)Application Server.而且聲言不再開發(fā)傳統(tǒng)軟件。
四、結(jié)束語
總之,ASP.PHP,JSP三者都有相當數(shù)量的支持者,由此也可以看出三者各有所長。雖然ASP和PHP各有優(yōu)缺點,目前在各種網(wǎng)站應(yīng)用中都分別占有一定的份額,尤其是在小型商業(yè)網(wǎng)站中、個人網(wǎng)站、中小學校園網(wǎng)中ASP、PHP的應(yīng)用非常廣。但JsP基于強大的JAVA語言,具有良好的伸縮性,在網(wǎng)絡(luò)數(shù)據(jù)庫應(yīng)用領(lǐng)域具有得天獨厚的優(yōu)勢,也被認為是未來最有發(fā)展前途的技術(shù),很多大型網(wǎng)站尤其是電子商務(wù)類或電子銀行的網(wǎng)站都使用JSP技術(shù)。