首頁 > 專家說

php和jsp有什么不同

來源:新能源網(wǎng)
時間:2024-08-17 12:01:53
熱度:

php和jsp有什么不同【專家解說】:現(xiàn)在市場上的oa基本上可歸結(jié)為兩大陣營,即php陣營和java陣營。但對接觸oa不久的用戶來說,看到的往往只是它們的表相,只是明顯的價格差異,

【專家解說】:現(xiàn)在市場上的oa基本上可歸結(jié)為兩大陣營,即php陣營和java陣營。但對接觸oa不久的用戶來說,看到的往往只是它們的表相,只是明顯的價格差異,卻很難看出它們之間的實際差異。其實, PHP + MYSQL 不值錢不僅僅局限于oa軟件,而是整體上PHP + MYSQL開發(fā)的軟件都不如java開發(fā)的軟件值錢。為什么PHP + MYSQL 的OA為什么不值錢呢?首先得明白php和java之間的差異才行。

1、系統(tǒng)的技術(shù)架構(gòu)比較

分層是將系統(tǒng)進(jìn)行有效組織的方式,分而治之的思想是計算機領(lǐng)域中非常重要的思想。在好的分層思想引導(dǎo)下,便能實現(xiàn)“高內(nèi)聚、低耦合”,也能將具體的問題割裂開來,易于控制、易于延展,更易于分配資源。PHP只能實現(xiàn)簡單的分布式兩層或三層的架構(gòu),而JAVA在這方面就十分強大,可以實現(xiàn)多層的網(wǎng)絡(luò)架構(gòu)。運用MVC的設(shè)計模式,可使oa系統(tǒng)具有更加高效、合理的系統(tǒng)架構(gòu)。技術(shù)架構(gòu)的落后,使運用php編寫的oa軟件系統(tǒng)先天不足,而后天又無法補足其先天上的劣勢。使得系統(tǒng)在可拓展性、需求應(yīng)變性上與JAVA編寫的oa軟件系統(tǒng)的差距越來越大。架構(gòu)的差距,注定了php做的oa充其量是個小家碧玉,始終無法和java這種大家閨秀同臺競技。

2、數(shù)據(jù)庫訪問比較

PHP可編譯成具有與許多數(shù)據(jù)庫相連接的函數(shù)。將自己編寫外圍的函數(shù)去間接存取數(shù)據(jù)庫。通過這樣的途徑當(dāng)更換使用的數(shù)據(jù)庫時,可以輕松地修改編碼以適應(yīng)這樣的變化。但PHP提供的數(shù)據(jù)庫接口支持彼此不統(tǒng)一,比如對Oracle, MySQL,Sybase的接口,彼此都不一樣。由于PHP對于不同的數(shù)據(jù)庫采用不同的數(shù)據(jù)庫訪問接口,所以數(shù)據(jù)庫訪問代碼的通用性不強。

而Java通過JDBC來訪問數(shù)據(jù)庫,通過不同的數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫驅(qū)動方便地訪問數(shù)據(jù)庫,訪問數(shù)據(jù)庫的接口比較統(tǒng)一。如果同樣是將開發(fā)的web應(yīng)用從MYSQL數(shù)據(jù)數(shù)轉(zhuǎn)到ORACLE數(shù)據(jù),PHP需要做大量的修改工作,而且比較繁瑣。但JAVA開發(fā)的便只需要很少的更改便能實現(xiàn)。

數(shù)據(jù)庫訪問方式的差異,奠定了php開發(fā)出的oa和java開發(fā)出來的oa是馬車和火車的差距,前者只能亦步亦趨而且額度有限,后者卻是工業(yè)化的結(jié)晶,不僅能夠包容萬物而且速度上穩(wěn)步提升。

3、安全性對比

在同是開源和跨平臺的java面前,php丟掉了很多的優(yōu)勢。在代碼的安全性上尤為突出。php的開發(fā)程序在別人拿到代碼后,可以很容易的進(jìn)行修改。而java開發(fā)的程序由于無法看到完整的源代碼,只能看到一些編譯好的類文件,所以安全性較高。加之系統(tǒng)架構(gòu)的優(yōu)勢,在安全性上php和java是相去甚遠(yuǎn)。

如果非要將php和java在安全性上做個比較的話,同一個小偷光顧php那是隨便拿來隨便改,想拿什么拿什么,拿的高興還能大筆一輝某某到此一游。而光顧java的時候,便會發(fā)現(xiàn)警察把守,內(nèi)設(shè)自動報警裝置,即便突破重重阻擾后進(jìn)入居室。那值錢的東西都放在加密后的保險柜中,只能望洋興嘆、鎩羽而歸。

4、前瞻性和拓展性

從整體來說,php適用于中小型系統(tǒng),而java適用于大型系統(tǒng)。Php能夠?qū)我坏氖录龊?,但卻不適合完成集成度較高的多項并發(fā)事件。為什么說php適合中小型系統(tǒng)而不適合做大系統(tǒng)呢?

首先, php缺乏多層結(jié)構(gòu)支持。而對于大型的系統(tǒng)負(fù)荷站點,只能采用分布計算。將數(shù)據(jù)庫、應(yīng)用邏輯層和表示邏輯層彼此分開,并將同層的根據(jù)流量分開,組成二維數(shù)組。而php恰恰缺乏這種支持。

其次,PHP提供的數(shù)據(jù)庫接口不統(tǒng)一,要將多個不同的數(shù)據(jù)庫數(shù)據(jù)統(tǒng)一需要花費很大的力氣。而JAVA則沒有這種缺陷,可通過SUN Java的Java Class和EJB獲得規(guī)模支持,通過EJB/CORBA以及眾多廠商的Application Server獲得結(jié)構(gòu)支持。如IBM的E-business,它的核心是采用JSP/Servlet的Web Sphere,是通過CGI來提供支持的。

如果將Php比作將才,具備獨擋一方的能力。那么java便是帥才,具有較好的前瞻性和拓展性,整體布局和協(xié)同能力強。能夠指揮千軍萬馬,最后逐鹿中原。

5、開發(fā)成本比較

既然php在諸多方面都不如java優(yōu)異,那么php開發(fā)出的oa產(chǎn)品何以與java產(chǎn)品競爭呢?在于Php陣營普遍走的是低端路線,而java陣營走的是中高端路線。兩者之間交*的區(qū)域較小。

軟件價格的高低很大程度上和自身成本和功能相掛鉤。php的入門門檻較低,絕大多數(shù)學(xué)過c的程序員都很容易轉(zhuǎn)型為php程序員,這使得php程序員的泛濫成災(zāi)的同時,低成本的php軟件產(chǎn)品也層出不窮。以PHP最經(jīng)典的組合PHP + MySQL + Apache為例,由于所有軟件都是開源免費的,所以投入并不高。

而java開發(fā)需要特定的環(huán)境,成長為一個合格的java程序員需要一定的時間,java程序員的成本也是php成本的幾倍。Java的web應(yīng)用服務(wù)器免費的有Tomcat、JBoss等,而要想具有很好的商業(yè)化服務(wù)便必須選用Web Sphere和 Web logic。這其中投入的成本無形中便超是php成本的N倍。所以,java開發(fā)oa的成本要遠(yuǎn)遠(yuǎn)高于php開發(fā)出來的同類軟件產(chǎn)品。但也正由于java開發(fā)的成本較高,很難實現(xiàn)抄襲和短期內(nèi)逾越的可能,也使得java用開發(fā)出的產(chǎn)品門檻更高。

不怕不識貨,就怕貨比貨。Php開發(fā)出來的產(chǎn)品也能用,但是和java開出的同類產(chǎn)品是沒法比較的。正因為php開發(fā)的產(chǎn)品整體性能和java開發(fā)的相去甚遠(yuǎn),所以php運用低成本的低價優(yōu)勢和同類的java產(chǎn)品抗?fàn)?,以價格落差來平衡購買者的心態(tài)。所以,PHP + MYSQL 的OA不值錢也就不足為怪了

第二種

比較PHP和JSP這兩個web開發(fā)技術(shù),在目前的情況是其實是比較PHP和Java的Web開發(fā)。以下是我就幾個主要方面進(jìn)行的比較:

一、 語言比較

Php是解釋執(zhí)行的服務(wù)器腳本語言,首先php有簡單容易上手的特點。語法和c語言比較象,所以學(xué)過c語言的程序員可以很快的熟悉php的開發(fā)。而java需要先學(xué)好java的語法和熟悉一些核心的類庫,懂得面向?qū)ο蟮某绦蛟O(shè)計方法。所以java不如php好學(xué)。

Java首先要編譯成字節(jié)碼.class文件,然后在java虛擬機上解釋執(zhí)行。Java的web開發(fā)首先最容易想到的就是JSP(現(xiàn)在已經(jīng)到JSP2.0),原來的java的web開發(fā)都是用servlet來實現(xiàn)的,用servlet來開發(fā)需要程序員在java的源文件中嵌入大量的html代碼。所以后來就出現(xiàn)了JSP,JSP可以方便的嵌入到html文件當(dāng)中,其實jsp文件在服務(wù)器上執(zhí)行的時候首先會被應(yīng)用服務(wù)器轉(zhuǎn)換成servlet,然后再編譯執(zhí)行。Jsp可以通過servlet和JavaBean的支持產(chǎn)生強大的功能。JavaBean 是一種可復(fù)用的、跨平臺的軟件組件。使用javabean可以方便的實現(xiàn)java代碼和html的分離,能夠增強系統(tǒng)的功能和軟件的復(fù)用性。

Java的web開發(fā)屬于SUN公司定義的J2EE其中的規(guī)范。而且在J2EE中包括了java的web開發(fā)的所有方面,如:JSP、Servlet、JDBC、JNDI、JAVABEAN、EJB等等。J2EE就特別適合于做大型的企業(yè)級的應(yīng)用。

二、 數(shù)據(jù)庫訪問比較

Java通過JDBC來訪問數(shù)據(jù)庫,通過不同的數(shù)據(jù)庫廠商提供的數(shù)據(jù)庫驅(qū)動方便地訪問數(shù)據(jù)庫。訪問數(shù)據(jù)庫的接口比較統(tǒng)一。

PHP對于不同的數(shù)據(jù)庫采用不同的數(shù)據(jù)庫訪問接口,所以數(shù)據(jù)庫訪問代碼的通用性不強。例如:用Java開發(fā)的web應(yīng)用從MySQL數(shù)據(jù)庫轉(zhuǎn)到Oracle數(shù)據(jù)庫只需要做很少的修改。而PHP則需要做大量的修改工作。

三、 系統(tǒng)設(shè)計架構(gòu)比較

采用Java的web開發(fā)技術(shù),需要使用的是面向?qū)ο蟮南到y(tǒng)設(shè)計方法,而PHP還是采用面向過程的開發(fā)方法。所以用Java進(jìn)行開發(fā)前期需要做大量的系統(tǒng)分析和設(shè)計的工作。

四、 跨平臺性

Java和PHP都有很好的跨平臺的特性。幾乎都可以在不作任何修改的情況下運行在Linux或者Windows等不同的操作系統(tǒng)上。

五、 開發(fā)成本比較

PHP最經(jīng)典的組合就是:PHP + MySQL + Apache。非常適合開發(fā)中小型的web應(yīng)用,開發(fā)的速度比較快。而且所有的軟件都是開源免費的,可以減少投入。

Java的web應(yīng)用服務(wù)器有免費Tomcat、JBoss等,如果需要更好的商業(yè)化的服務(wù)有:Web Sphere和 Web logic。

六、 分布式多層架構(gòu)比較

PHP只能實現(xiàn)簡單的分布式兩層或三層的架構(gòu),而JAVA在這方面就比較強大,可以實現(xiàn)多層的網(wǎng)絡(luò)架構(gòu)。數(shù)據(jù)庫層(持久化層)、應(yīng)用(業(yè)務(wù))邏輯層、表示邏輯層彼此分開,而且現(xiàn)在不同的層都已經(jīng)有一些成熟的開發(fā)框架的支持。例如Struts就是利用java的web開發(fā)技術(shù)實現(xiàn)了MVC的設(shè)計模式,而在業(yè)務(wù)邏輯層也有Spring框架,數(shù)據(jù)庫持久化層有Hibernate等框架。這些框架可以方便開發(fā)者高效、合理、科學(xué)得架構(gòu)多層的商業(yè)應(yīng)用。

下面簡要的說一下Struts,它實質(zhì)上是在JSP Model2的基礎(chǔ)上實現(xiàn)的一個MVC(Model、View、Controler)框架。JSP Model2體系結(jié)構(gòu)是一種聯(lián)合使用JSP 與Servlet 來提供動態(tài)內(nèi)容的方法。在Struts框架中,模型由實現(xiàn)業(yè)務(wù)邏輯的JavaBean或EJB組件構(gòu)成,控制器由Servlet實現(xiàn)的,視圖由一組JSP文件組成。采用Struts可以明確角色的定義和開發(fā)者與網(wǎng)頁設(shè)計者的分工。而且項目越復(fù)雜,其優(yōu)勢越明顯。

七、 源代碼安全

PHP開發(fā)的程序的源代碼都是公開的,他人拿到php開發(fā)的程序后都可以進(jìn)行修改。

Java開發(fā)的程序,最后用戶拿到的是只是一些編譯好的class類,無法看到完整的源代碼,安全性高。

八、性能比較

有人做過試驗,對這兩種種語言分別做回圈性能測試及存取Oracle數(shù)據(jù)庫測試。

在循環(huán)性能測試中,JSP只用了令人吃驚的四秒鐘就結(jié)束了20000*20000的回圈。而PHP測試的是2000*2000循環(huán)(少一個數(shù)量級),卻分別用了63秒。

數(shù)據(jù)庫測試中,二者分別對 Oracle 8 進(jìn)行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒。

表格 1 PHP 與Java的比較

PHP JAVA

可復(fù)用性 低 高

開發(fā)速度 快 慢

易維護(hù)性 差 優(yōu)

可移植性 優(yōu)-Linux、Windows、Unix等

安全性 低 高

開發(fā)費用 低 高

多層架構(gòu) 差 優(yōu)

數(shù)據(jù)庫訪問 接口不統(tǒng)一 接口統(tǒng)一

可擴展性 差 優(yōu)

面向?qū)ο?差 優(yōu)
綜上 PHP適合于快速開發(fā),中小型應(yīng)用系統(tǒng),開發(fā)成本低,能夠?qū)ψ儎拥男枨笞鞒隹焖俚姆磻?yīng)。而Java適合于開發(fā)大型的應(yīng)用系統(tǒng),應(yīng)用的前景比較廣闊,系統(tǒng)易維護(hù)、可復(fù)用性較好。還有,同樣功能的系統(tǒng)用Java開發(fā)的系統(tǒng)要比PHP開發(fā)的系統(tǒng)的價格要高