鐵鼓吏
其實哪個好,關(guān)鍵在於寫程序的人的功力好壞,所以沒有誰好誰不好! 但還是有些使用需求的選擇來決定使用那種工具語言。如果你想要找資源豐富、唾手可得的現(xiàn)成軟件,那 PHP 便可以選擇,且建構(gòu)環(huán)境也可較容易得到支援,開發(fā)也較容易迅速。 如果你的需求可能是需要應(yīng)付C10K問題(即「在同時連接到服務(wù)器的客戶端數(shù)量超過10000 個的環(huán)境中,即便硬件性能足夠, 依然無法正常提供服務(wù)」),那 JSP 便是不錯的選擇! PHP 或 JSP 都是從 C 語言發(fā)展出來的,所以語法大同小異,最大差別在后端的服務(wù)器環(huán)境,而速度快慢也不是簡単區(qū)分出來,主要還得看應(yīng)用的模式。 所以簡言之,在客戶端有近 10K 人次同時對系統(tǒng)作處理請求時,使用 PHP 一定無法應(yīng)付!但客戶端沒那么多人次(數(shù)十或數(shù)百)同時對系統(tǒng)作處理請求,其實 PHP 效率不會輸給 JSP。 PHP 與 JSP 也可以依不同應(yīng)用而搭配使用,不見得只能選其一,我個人特別喜愛把 JSP 用來開發(fā) API 使用,但 Web UI 則以 PHP 為主。能夠善用工具者,才是真正的大贏家!
馬林溪
PHP PHP(HypertextPreprocessor)是一種嵌入HTML頁面中的腳本語言。它大量地借用C和Perl語言的語法, 并結(jié)合PHP自己的特性,使Web開發(fā)者能夠快速地寫出動態(tài)產(chǎn)生頁面?! HP是完全免費的開源產(chǎn)品,不用花錢,Apache和MYSQL也是用樣免費開源,在國外非常流行,PHP和MYSQL搭配使用,可以非??焖俚拇罱ㄒ惶撞诲e的動態(tài)網(wǎng)站系統(tǒng),因此國外大多數(shù)主機系統(tǒng)都配有免費的APACHE+PHP+MYSQL。通常認為這種搭配的執(zhí)行效率比IIS+ASP+ACCESS要高,而后者的使用還必須另外交錢給微軟?! HP的語法和Perl很相似,但是PHP所包含的函數(shù)卻遠遠多于Perl,PHP沒有命名空間,編程時候必須努力避免模塊的名稱沖突。一個開源的語言雖然需要簡單的語法和豐富的函數(shù),但PHP內(nèi)部結(jié)構(gòu)的天生缺陷導(dǎo)致了PHP不適合于編寫比中小型業(yè)余網(wǎng)站更大的網(wǎng)站。JSP(JavaServerPages)是Sun公司推出的一種動態(tài)網(wǎng)頁技術(shù)。JSP技術(shù)是以Java語言作為腳本語言的,熟悉JAVA語言的人可以很快上手?! SP本身雖然也是腳本語言,但是卻和PHP、ASP有著本質(zhì)的區(qū)別。PHP和ASP都是由語言引擎解釋執(zhí)行程序代碼,而JSP代碼卻被編譯成Servlet并由Java虛擬機執(zhí)行,這種編譯操作僅在對JSP頁面的第一次請求時發(fā)生。因此普遍認為JSP的執(zhí)行效率比PHP和ASP都高。 JSP是一種服務(wù)器端的腳本語言,最大的好處就是開發(fā)效率較高,JSP可以使用JavaBeans或者EJB(EnterpriseJavaBeans)來執(zhí)行應(yīng)用程序所要求的更為復(fù)雜的處理,但是這種網(wǎng)站架構(gòu)因為其業(yè)務(wù)規(guī)則代碼與頁面代碼混為一團,不利于維護,因此并不適應(yīng)大型應(yīng)用的要求,取而代之的是基于MVC的Web架構(gòu)。MVC的核心思想是將應(yīng)用分為模型、視圖和控制器三部分。模型是指應(yīng)用程序的數(shù)據(jù),以及對這些數(shù)據(jù)的操作;視圖是指用戶界面;控制器負責(zé)用戶界面和程序數(shù)據(jù)之間的同步。通過MVC的Web架構(gòu),可以弱化各個部分的耦合關(guān)系,并將業(yè)務(wù)邏輯處理與頁面以及數(shù)據(jù)分離開來,這樣當其中一個模塊的代碼發(fā)生改變時,并不影響其他模塊的正常運行,所以基于MVC的Web架構(gòu)更適應(yīng)于大型應(yīng)用開發(fā)的潮流?! ∫虼?,不少國外的大型企業(yè)系統(tǒng)和商務(wù)系統(tǒng)都使用以上的MVC架構(gòu),能夠支持高度復(fù)雜的基于Web的大型應(yīng)用?! 〗Y(jié)論:JSP對于網(wǎng)站開發(fā)來講不像PHP那樣易學(xué)易用,支持JAVA的主機也少于支持PHP的主機,這從一定程度上限制了Java技術(shù)在網(wǎng)站上的發(fā)展,不過在企業(yè)軟件應(yīng)用上來講,MVC還是擁有相當大的優(yōu)勢的,雖然其配置和部署相對其他腳本語言來說要復(fù)雜一些,但對于跨平臺的中大型企業(yè)應(yīng)用系統(tǒng)來講,基于JAVA技術(shù)的MVC架構(gòu)幾乎成為唯一的選擇。
靈峰嘉木
jsp這是個很大的整套解決方案,常用來代指view層的jsp【允許其他的頁面展示,甚至不是jsp】,Model的hibernate,ibatis,Controller層面的struts,spring【這兩個可不僅僅是controller,這兩個可以統(tǒng)籌全局】這一套整體。php嘛,分的就不那么清楚,他追求的是簡單快捷,做個人應(yīng)用和一些簡單的商業(yè)應(yīng)用非常棒,這是jsp+struts/sping+hibernate/ibatis無法匹敵的,但是企業(yè)級綜合應(yīng)用,php能不能做都是個問題。總結(jié)一下:基本應(yīng)用,幾乎一樣;高級應(yīng)用,各有專攻。
伊龍紋
php目前的市場份額不是很好,但是在上漲且很慢,相對于JSP/ASP而言他就是太簡單了,就是沒有接觸過編程的人很快也會上手,這是他最大的優(yōu)點。缺點,安全性能方面,jsp的安全性最高,性能比較:有人做過試驗,對這三種語言分別做回圈性能測試及存取 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,Select和Delete: 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 Windowsd的COM/DCOM獲得ActiveX規(guī)模支持,通過DCOM和Transcation Server獲得結(jié)構(gòu)支持;JSP可以通過SUN Java的Java Class和EJB獲得規(guī)模支持,通過EJB/CORBA以及眾多廠商的Application Server獲得結(jié)構(gòu)支持。三者中,JSP應(yīng)該是未來發(fā)展的趨勢。世界上一些大的電子商務(wù)解決方案提供商都采用JSP/Servlet。比較出名的如 IBM的E-business,它的核心是采用JSP/Servlet的Web Sphere。它們都是通過CGI來提供支持的。但去年10月后它推出了Enfinity,一個采用JSP/Servlet的電子商務(wù) Application Server,而且聲言不再開發(fā)傳統(tǒng)軟件
搜神傳
關(guān)于ASP ASP 由于其簡單功能實用等方面受到廣大朋友的喜歡,再加上MS的強有力支持,可以說是時下作站點最為流行的語言之一,他借助MS的Com+ 技術(shù),幾乎可以實現(xiàn)在C/S 能夠?qū)崿F(xiàn)的所有功能,可以說確實具有相當?shù)母偁幜?。ASP的代碼實現(xiàn)也很簡單,MS 提供的InterDev 在RAD 的基礎(chǔ)上,使ASP 的開發(fā)一夜之間火遍了大江南北。但是他的缺點是,由于MS 長久以來的霸道作風(fēng),他只能運行在MS的平臺上,因此在關(guān)鍵性的應(yīng)用上使人難以輕易接受。 關(guān)于JSP JSP 是Sun公司推出的新一代站點開發(fā)語言,他完全解決了目前ASP,PHP的一個通病--腳本級執(zhí)行(現(xiàn)在PHP4 也已經(jīng)在Zend 的支持下,實現(xiàn)編譯運行).Sun 公司借助自己在Java 上的不凡造詣,將Java 從Java 應(yīng)用程序 和 Java Applet 之外,又有新的碩果,就是Jsp--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能強大的站點程序。 據(jù)我所知,JSP基于Java,因此Java程序員可以輕松開始編碼。ASP只是一個一般的引擎,具有支持多種語言的能力,不過默認的并且是最常用的還是VBScript。mod_perl與Perl一樣強大,只是更快一些。 對于ASP、JSP、PHP等,到底哪種語言更好?不同的人有不同的看法。不過有一點我們必須要明確的:對于ASP、JSP等,你是否清楚購買它們會有多昂貴以及它們需要多么昂貴和強大的硬件。如果你有什么中立的觀點(比如說沒有被SUN和Microsoft的百萬美金所影響),請順便通知我。 關(guān)于PHP PHP 是秉承Linux 的GNU 風(fēng)格,借助與源碼公開,使他迅速成為世界上目前應(yīng)用最為廣泛的站點制作語言之一。借助與C++的形式,引用類的概念,使得代碼的可重復(fù)性應(yīng)用便的異常簡單。加上他和Linux,Apache 和MySql 的緊密配合,關(guān)鍵性的應(yīng)用也沒有問題(有名的Sina就 是采用Php)。同時,PHP第四代Zend(PHP4)的核心引擎正式版也已經(jīng)發(fā)布了,整個程序的核心得到了大幅度的改進,讓PHP程序的執(zhí)行速度變得更快。PHP在最佳化之后的效率,已比傳統(tǒng)CGI或者ASP等程序有了更好的表現(xiàn)。而且正因為PHP是免費的,因此任何人都可以訪問PHP WEB站點,下載完整的源代碼。更重要的是:用PHP編寫的代碼執(zhí)行起來會更快,能實現(xiàn)同樣功能的PHP代碼,不用改變就可以在不同的WEB服務(wù)器上、不同的操作系統(tǒng)下運行。就憑這一點,你就已經(jīng)有足夠的理由選擇PHP。
夙孽
ASP全名Active Server Pages,是一個WEB服務(wù)器端的開發(fā)環(huán)境,利用它可以產(chǎn)生和執(zhí)行動態(tài)的、互動的、高性能的WEB服務(wù)應(yīng)用程序。ASP采用腳本語言VBScr ipt(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,Java Server Page。JSP可以在Serverlet和JavaBean的支持下,完成功能強大的站點程序。 三者都提供在 HTML代碼中混合某種程序代碼、由語言引擎解釋執(zhí)行程序代碼的能力。但JSP代碼被編譯成 Servlet并由Java虛擬機解釋執(zhí)行,這種編譯操作僅在對JSP頁面的第一次請求時發(fā)生。在ASP 、PHP、JSP環(huán)境下,HTML代碼主要負責(zé)描述信息的顯示樣式,而程序代碼則用來描述處理邏輯。普通的 HTML頁面只依賴于Web服務(wù)器,而ASP 、PHP、JSP頁面需要附加的語言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到HTML代碼中,然后一起發(fā)送給瀏覽器。ASP 、PHP、JSP三者都是面向Web服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。
陰陽叟
要想做搜索引擎優(yōu)化,首先把首頁動態(tài)網(wǎng)站靜態(tài)化,其實還是動態(tài)網(wǎng)站,但利用一個軟件就能做到.現(xiàn)在很多網(wǎng)站都是這種做法,好處有三個:1.搜索引擎更容易接受靜態(tài)的網(wǎng)站;2.節(jié)省空間;3.安全(現(xiàn)在的公司網(wǎng)站有80%的都存在不同程度的漏洞,容易讓人鉆空子! 您的網(wǎng)站是個數(shù)據(jù)庫網(wǎng)站,做數(shù)據(jù)庫的時候,不要用ACCESS,最次也要用SQLSERVER,但要在數(shù)據(jù)庫安全方面要做到最好,這個做網(wǎng)站的程序員得認識到!(比如:數(shù)據(jù)庫名要盡量復(fù)雜,太簡單了容易讓人給猜到,數(shù)據(jù)庫文件要放到一個別人猜不到的文件夾,別放成這樣(/admin/data/abc.mdb)這就容易讓別人把你的數(shù)據(jù)庫給下載到本地,然后你想會發(fā)生什么事呢?!再次,密碼設(shè)置要安全,別太簡單.也別都用數(shù)字,因為都是數(shù)字的密碼,即使你的密碼是MD5 32位加密,也很容易讓人破解掉.還有很多,且不說了.)至于你要做個PHP的還是JSP的,只要將安全做好了,哪個都行.ASP的也沒有問題.重要的是您的網(wǎng)站安全做的如何...要說ASP PHP JSP三種哪個是最好的話,可以這么說: JSP要比PHP高級,PHP要比ASP高級. 做JSP網(wǎng)站是未來互聯(lián)網(wǎng)發(fā)展的方向.如果您的公司是個中等或大點的公司,最好做個JSP的.要是資金有限的話就做個PHP的.ASP的嘛,要是做在線定單類網(wǎng)站就別用了,不然過兩年遲早要淘汰,而且不好維護和升級.記得要把網(wǎng)站各個方面工作(建設(shè),優(yōu)化,推廣)都作好了再傳上去.網(wǎng)站傳上去后馬上做推廣,讓的人知道您的網(wǎng)站,從各個位置帶來潛在客戶,讓搜索引擎第一印象對你的網(wǎng)站更深刻.她會再短期內(nèi)重新訪問你的網(wǎng)站的.要是拿一個不成氣候的網(wǎng)站給傳上去的話,那引擎檢索一次后,半個月,一個月也不會再去的。那可是錢啊!呵呵.
馬玉
要看做什么,php語言比較靈活一點,屬于入門容易,但是想提升有點困難。很多東西是要自己寫的,包括php模板引擎,框架之類的,別人寫的可能不太符合這個項目要求,很多情況要自己寫。java不像php這種弱語言類型。規(guī)范比較嚴格,但是像做金融這一塊的話,要求是java+oracle。至于原因在此就不多說了。相比較而言PHP更好做一點。
小仙源
現(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)進行有效組織的方式,分而治之的思想是計算機領(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ù)庫。通過這樣的途徑當更換使用的數(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ā)程序在別人拿到代碼后,可以很容易的進行修改。而java開發(fā)的程序由于無法看到完整的源代碼,只能看到一些編譯好的類文件,所以安全性較高。加之系統(tǒng)架構(gòu)的優(yōu)勢,在安全性上php和java是相去甚遠。 如果非要將php和java在安全性上做個比較的話,同一個小偷光顧php那是隨便拿來隨便改,想拿什么拿什么,拿的高興還能大筆一輝某某到此一游。而光顧java的時候,便會發(fā)現(xiàn)警察把守,內(nèi)設(shè)自動報警裝置,即便突破重重阻擾后進入居室。那值錢的東西都放在加密后的保險柜中,只能望洋興嘆、鎩羽而歸。 4、前瞻性和拓展性 從整體來說,php適用于中小型系統(tǒng),而java適用于大型系統(tǒng)。Php能夠?qū)我坏氖录龊?,但卻不適合完成集成度較高的多項并發(fā)事件。為什么說php適合中小型系統(tǒng)而不適合做大系統(tǒng)呢? 首先, php缺乏多層結(jié)構(gòu)支持。而對于大型的系統(tǒng)負荷站點,只能采用分布計算。將數(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的成本要遠遠高于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ā)的相去甚遠,所以php運用低成本的低價優(yōu)勢和同類的java產(chǎn)品抗爭,以價格落差來平衡購買者的心態(tài)。所以,PHP + MYSQL 的OA不值錢也就不足為怪了 第二種比較PHP和JSP這兩個web開發(fā)技術(shù),在目前的情況是其實是比較PHP和Java的Web開發(fā)。以下是我就幾個主要方面進行的比較: 一、 語言比較 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文件當中,其實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進行開發(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ā)的程序后都可以進行修改。 Java開發(fā)的程序,最后用戶拿到的是只是一些編譯好的class類,無法看到完整的源代碼,安全性高。 八、性能比較 有人做過試驗,對這兩種種語言分別做回圈性能測試及存取Oracle數(shù)據(jù)庫測試。 在循環(huán)性能測試中,JSP只用了令人吃驚的四秒鐘就結(jié)束了20000*20000的回圈。而PHP測試的是2000*2000循環(huán)(少一個數(shù)量級),卻分別用了63秒。 數(shù)據(jù)庫測試中,二者分別對 Oracle 8 進行 1000 次 Insert,Update,Select和Delete: JSP 需要 13 秒,PHP 需要 69 秒。 表格 1 PHP 與Java的比較 PHP JAVA 可復(fù)用性 低 高 開發(fā)速度 快 慢 易維護性 差 優(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)易維護、可復(fù)用性較好。還有,同樣功能的系統(tǒng)用Java開發(fā)的系統(tǒng)要比PHP開發(fā)的系統(tǒng)的價格要高