香蘭渚
現(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)的價格要高
孫尚香
java,C,PHP的區(qū)別:java 屬于高級語言,目前比較流行的 android 系統(tǒng)的應(yīng)用程序就是用 java 開發(fā)的。C語言可以說是高級編程語言之父,是所有高級語言的來源。包括后來的C++以及C#和java都有參考C語言的設(shè)計理念。PHP是一個非常優(yōu)秀的腳本語言,簡潔、高效,隨著4.0的發(fā)布,越來越多的人使用它來進行動態(tài)網(wǎng)站的開發(fā)??梢哉f,PHP已經(jīng)成為最優(yōu)秀的INTERNET開發(fā)語言之一。
誰與爭鋒
PHP適合于快速開發(fā),中小型應(yīng)用系統(tǒng),開發(fā)成本低,能夠?qū)ψ儎拥男枨笞鞒隹焖俚姆磻?yīng)。而Java適合于開發(fā)大型的應(yīng)用系統(tǒng),應(yīng)用的前景比較廣闊,系統(tǒng)易維護、可復(fù)用性較好。通過對兩種語言寫的OA系統(tǒng)的比較,對這兩種語言的差異進行了一個全面的比較. 現(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和Java都是現(xiàn)在比較流行的二種編程語言。對于許多新手來說,都會思考如果學(xué)的時候,該學(xué)哪種語言呢?下面這篇文章給大家整理兩者的區(qū)別以及一些選擇建議,一起來看看吧。二、簡介PHP與Java作為兩種截然不同的程序開發(fā)語言,無論是技術(shù)層面還是發(fā)展空間,亦或是市場份額占比,都有著不同的表現(xiàn)方式,理念上的不同導(dǎo)致了Java和PHP在Web應(yīng)用開發(fā)上顯示了不同的結(jié)果。若要一定追根到底,深究PHP與Java究竟哪個更好?簡而言之:PHP是一種解釋執(zhí)行的腳本語言,語法和C語言類似,易學(xué)易用,不懂電腦的非專業(yè)人員稍經(jīng)學(xué)習(xí)也能使用PHP;而Java要先編譯成Class文件,然后在Java虛擬機上執(zhí)行,Java開發(fā)需要熟悉Java語法以及一些核心的架構(gòu),從而實現(xiàn)一種可復(fù)用的、跨平臺的軟件,Java比PHP要難學(xué)的多。那么PHP與Java在Web開發(fā)上又有何區(qū)別呢?哪個最適合的Web開發(fā)語言?三、 語言比較PHP是解釋執(zhí)行的服務(wù)器腳本語言,首先php有簡單容易上手的特點。語法和c語言比較象,所以學(xué)過c語言的程序員可以很快的熟悉php的開發(fā)。而java需要先學(xué)好java的語法和熟悉一些核心的類庫,懂得面向?qū)ο蟮某绦蛟O(shè)計方法。所以相對而言,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ù)架構(gòu)java是純面向?qū)ο箝_發(fā),功能強大,分支眾多,沒有java不能做的軟件。C/S也好B/S也好。從功能上講,沒有語言可以和java相比。PHP屬于后起之秀,吸收了java和c以及perl等語言優(yōu)點,專注互聯(lián)網(wǎng)領(lǐng)域。WEB領(lǐng)域PHP擁有得天獨厚的優(yōu)勢,WEB領(lǐng)域沒有語言可以和他比。Java語言相比PHP有明顯的優(yōu)勢,Java使用的是面向?qū)ο蟮南到y(tǒng)設(shè)計方法,而PHP還是采用面向過程的開發(fā)方法。PHP只能實現(xiàn)簡單的分布式兩層或三層的架構(gòu),而JAVA可以實現(xiàn)多層架構(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)用。五、數(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則需要做大量的修改工作。從數(shù)學(xué)運算和數(shù)據(jù)庫訪問速度來講,Java的性能也優(yōu)于PHP。實際上,對于跨平臺的大型的企業(yè)應(yīng)用系統(tǒng)來講,Java幾乎已經(jīng)成為唯一的選擇(微軟.NET不支持跨平臺),但是在于Web網(wǎng)站應(yīng)用開發(fā)來講,Java卻面臨著被PHP邊緣化的危險,幾乎所有的虛擬主機都支持PHP+MySQL,而支持Java的卻少之又少,在資源上,網(wǎng)上有不計其數(shù)的PHP資源,很多著名的大型網(wǎng)站(例如Facebook、Mediawiki等)都是基于PHP的,而成功的Java網(wǎng)站卻寥寥無幾。盡管Java的數(shù)學(xué)計算和數(shù)據(jù)庫訪問都有優(yōu)勢,架構(gòu)也相當完美,但是PHP卻可以簡單輕松地支持高強度Web訪問,能夠快速開發(fā)應(yīng)用,支持PHP的虛擬主機多如牛毛,使得用PHP開發(fā)一個網(wǎng)站比用Java開發(fā)一個網(wǎng)站要快得多,容易的多。Java所擁有的優(yōu)點只適合傳統(tǒng)的以軟件項目為核心的開發(fā)模式,而PHP更適合于以客戶為核心的SaaS的開發(fā)模式,因此,PHP目前在Web網(wǎng)站開發(fā)的優(yōu)勢完全是因為Web網(wǎng)站開發(fā)的特殊性而導(dǎo)致的,并非編程語言特性所決定。六、開發(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。七、源代碼安全PHP開發(fā)的程序的源代碼都是公開的,他人拿到php開發(fā)的程序后都可以進行修改。Java開發(fā)的程序,最后用戶拿到的是只是一些編譯好的class類,無法看到完整的源代碼,安全性高。八、總結(jié)綜上所述,個人認為,PHP適合于快速開發(fā),中小型應(yīng)用系統(tǒng),開發(fā)成本低、易學(xué),能夠?qū)ψ儎拥男枨笞鞒隹焖俚姆磻?yīng),在調(diào)試、發(fā)布上,PHP也較Java簡單。而Java適合于開發(fā)大型的應(yīng)用系統(tǒng),應(yīng)用的前景比較廣闊,系統(tǒng)易維護、可復(fù)用性較好。Java的理念是“一次編寫,到處運行”,Java在應(yīng)用框架底下的架構(gòu)是無與倫比的,遠勝過其他任何語言,Java的框架利于大型的協(xié)同編程開發(fā),系統(tǒng)易維護、可復(fù)用性較好。還有,同樣功能的系統(tǒng)用Java開發(fā)的系統(tǒng)要比PHP開發(fā)的系統(tǒng)的價格要高。
金鞭崖
1. php即寫即用的。也就是說每次只有一改動完成,用戶立馬看到效果,而java則慢多了,代碼改動完成后,要重新編譯,然后重啟jvm,中間耗費的時間可是不少啊,而且重啟jvm過程可是會造成用戶響應(yīng)中斷的哦。2. php寫東西快。php可以說是非常敏捷的,一個需求給到,只要不考慮后期的性能和用戶量問題,那是相當快速的,甚至你都可以不用框架,直接寫也會非常快的,寫一個增刪改查功能,可能也就30-50行代碼就搞定了。而java就慢多了,首先要想一下用什么框架,目前基本上就是spring了,然后就是配置各種數(shù)據(jù)庫,過濾器,servlet,決定是用mybatis還是hibernate,然后考慮代碼之間的傳遞,然后考慮事務(wù)。。。 然后不停調(diào)試,一改代碼可能就是幾分鐘的等待時間,可想而知。3. php的表面思路更清晰。什么是表面思路,就是你看到的東西就是真正做出來的東西,比如echo "hello world",就是輸出hello world,而java則不同,你可能是寫response中,可能是寫在modelattribute中,也可能就是return了該字符串,然后不知道怎么的,它就顯示到頁面上了。4. php占用內(nèi)存少。php是進程式處理問題的,占用內(nèi)存相當少,可以說,你在一臺機器部署50個項目沒有任何問題,只要訪問量不上來,搞得定。而java就不行了,java每啟動一個項目,本身就得耗盡許多內(nèi)存,比如在一臺8g內(nèi)存的機器上,一般跑上2個項目就差不多了。5. 說了這php的好處,難道java就沒有好處嗎?那是不可能的。6. java組件多。我個人覺得單是這一點就蓋過其他所有優(yōu)點了,因為組件多,意味著用的人多,群眾的眼睛是雪亮的。所以,java一定是好的,它已經(jīng)積淀了太多的東西,不是一門新型語言能夠隨便替代的。你想要做什么,好好搜索java組件,可能都有你需要的功能,特別對于當下最流行的大數(shù)據(jù)產(chǎn)業(yè),java更是占據(jù)一方。而php在這種場景就有點無能為力了。7. java線程池,連接池,異步化方便。其實這一點和第一點也很相似,也是因為組件多,所以要使用線程池連接池都很方便,這對于高并發(fā)高性能的場景來說,是絕對必要的。因為java的運行原因就是多線程的,所以不用每次都去初始化很多基本的東西,這省去了太多的時間,也因此大家可以忍受服務(wù)器啟動的緩慢過程,因為只有一次。而php則是多進程的,每次都需要重新加載所有需要的代碼,也因此無法將一些常用數(shù)據(jù)保存在內(nèi)存,連接池也不大好做,異步操作更是一個大短板。8. java是真正意義上的邏輯清晰。因為,java中,你可以從一個進入可以借助IDE工具分析到最深層次的邏輯操作,對于每個字段,都可以清晰明了,這其實是接口和完全對象的一個使用優(yōu)點。而php則做不了或者說很少有人費那勁去做這種事情,php可以說是半面向?qū)ο蟀朊嫦蜻^程開發(fā),所以,在調(diào)用過程中插入幾個自定義的函數(shù)調(diào)用是很正常的,那么你再想通過簡單的IDE去分析調(diào)用鏈就不那么容易了。比如,對于第三方提供的接口,php就很難清楚的看出接口返回了什么,除非你把它打印出來,但是打印出來也不一定對,因為有些返回值的數(shù)據(jù)不一定有體現(xiàn)。這對于理解代碼來說,增加了一個大大的門坎。9. 雖說java編譯比較煩,但是可以為你提前發(fā)現(xiàn)錯誤。java的編譯的確比較耗時,但是如果有明顯的錯誤,編譯是不會通過的,這就給你一個重新檢查代碼的機會。而php則不會,不管你寫得多爛,都不會給你提示什么,而許多時候,往往就因為少寫了個;分號,導(dǎo)致你排查數(shù)小時。10. java遠程調(diào)用方便,rmi,hessian,dubbo。不管怎么樣,遠程和本地調(diào)用都很方便的知道相關(guān)的信息,而且java的同語言調(diào)用不是采用純粹的http調(diào)用,而且維護一定的連接,從而大大提高性能。而php也有遠程調(diào)用,但是相對來說就弱許多了。
韋蛟
先說一個事實,php創(chuàng)辦者不準備再更新了。php和java最多在服務(wù)器后臺端具有較大的競爭力。但實際上php占的百分比多,java雖少但權(quán)重大。簡單來說php小型網(wǎng)站(我們老師說php現(xiàn)在已經(jīng)變得大了,當年php很小巧的,在服務(wù)器上占的資源很少)。java后臺大部分是大企業(yè)做的(大企業(yè)其實和(個人)小型網(wǎng)站相比還是比較少的。)java和php相比較。java比較強(原諒我表達自己的觀點,我承認php也不弱,只是個人相當感覺來說)php也在發(fā)展(雖然創(chuàng)辦者不更新了,但相信應(yīng)該還是會有人去接手的) 。如果個人將來想搭建個人網(wǎng)站的話。php不錯。如果想多了解一些東西的話,java和c都不錯。編程語言只是一種工具,最后還得看使用工具的人是多么厲害了。
美味情緣
JAVA可以說是最熱門的的編程語言,對于很多高級語言來說,JAVA都是基礎(chǔ);另外一個,JAVA是跨平臺的,有多個方面的應(yīng)用,如Android、Swing、J2EE、J2ME等。就業(yè)面比較廣,市場用人需求也大。java多開發(fā)大型系統(tǒng),所以大型企業(yè)往往需要很多Java人才,這是其優(yōu)勢。
PHP主要用來做網(wǎng)站開發(fā),許多小型網(wǎng)站都用PHP開發(fā),PHP是開源的,這是使得PHP經(jīng)久不衰的原因。在電商、社區(qū)等方面,PHP具備非常成熟的開源代碼和模板,因此使得PHP應(yīng)用極為廣泛。劣勢是受眾較小,有可替代性。
鐘昂
php是解釋形的腳本語言,java是編譯型的,在java虛擬機下運行當然現(xiàn)在php也可以編譯腳本了php適合做網(wǎng)站后臺,java什么都能做。至于發(fā)展前景,看你選擇什么樣的工作,通常用java做網(wǎng)站的比較少,因為開發(fā)周期長,通常都是那些需要安全性較高的網(wǎng)銀或者淘寶之類的需要java來構(gòu)建后臺的交易系統(tǒng)。但java除了網(wǎng)站還可以做app,桌面軟件等等,基本沒有不能做的。php開發(fā)網(wǎng)站簡單,快捷,但通常只能做網(wǎng)站,或者為app提供網(wǎng)絡(luò)數(shù)據(jù)支持等,實際上還是做網(wǎng)站。很少用來干別的。總而言之,如果你傾向于做網(wǎng)站后臺開發(fā)之類的工作,php比java好找工作,其他程序開發(fā),php和java就沒有可比性了。
金鐘島主
轉(zhuǎn)至知乎1:java是半編譯語言,php是腳本語言2:java使用封裝繼承,最小的單位是類,php作為腳本,最小單位就是語句,用兩者輸出hello world就知道了,所以java語法比較嚴格,而php很靈活3:java是自動內(nèi)存分配回收,php是一次創(chuàng)建一次銷毀,相同點:兩者都不用考慮內(nèi)存泄漏問題,不同點:java可以常駐內(nèi)存,多線程;php無法常駐內(nèi)存,也沒有線程的概念4:java分三個方向J2ME,嵌入式設(shè)備,安卓就是目前最大的J2ME平臺,不過其使用的不是JVM,而是谷歌自己開發(fā)的虛擬機J2SE,桌面編程,基本沒落,需要JVM支持J2EE,web方向的編程,近些年大規(guī)模的衰減,java語言排名榜之所以跌這么快,就是由于J2EE的出走,如果不是安卓興起,java的現(xiàn)狀可能更悲慘點,近年來腳本語言發(fā)展太快,擠壓了java在web上面的開發(fā)。不過在企業(yè)級的解決方案里面,因為追求性能和安全行,基本上還是java老大PHP:不用想了,就是為web而生的語言,出了web什么都做不了,這既是它的缺點,也是它的優(yōu)點,語法簡潔靈活,和java冗長的語法正好形成對比5:java已經(jīng)是一門很成熟的語言,或者說其語言的進一步提升已經(jīng)不可能能了,曾經(jīng)看到一篇文章,講編程語言的進化,其中提到,java語言的進化樹太全了,使得其沒有發(fā)展的空間php是在web繁榮之后興起的語言,所以語言成熟度沒有java高,2006年(如果我沒記錯的話)推出的php5.0才略微完善了面向?qū)ο蟮臋C制