Web開發技術選型之Java與PHP

烏雲上發表於2018-07-30

PHP與J2EE的對比

網上有很多關於PHP與J2EE之間的對比,細觀無非以下幾點:

1.語言特徵

PHP為指令碼語言,解釋型語言,弱型別,專為Web開發打造。Java為C語言系程式語言,編譯型,強型別,有跨平臺的特徵。從語法簡潔性來說,PHP比Java簡潔,畢竟PHP誕生比Java晚,同樣的邏輯在PHP中表達起來會簡潔於Java,這一特性導致同樣熟練度的PHPer與Javaer相比PHPer程式設計速度要快於Javaer。在這裡我要強調的是同一熟練度,這個概念很重要,在沒有前提假定的情況下比較兩種程式語言的熟練度是沒有意義的,比如一個新Phper在開發時對PHP語言不熟練,開發過程中需要頻繁的查閱相關文件,那麼這個新PHPer開發速度肯定比不上老Javaer,因為新PHPer在查閱文件的時間內,老Javaer可以完全依靠熟練度填平語法上的效率差異甚至超過新PHPer。

2.執行速度

語言特徵決定了執行速度,在執行速度上,網上也有很多對比,總結而言Java優於PHP,但事實上比較兩者的執行速度意義不大,因為Web應用的效率瓶頸是在對資料庫的相關操作上,需要強調的是PHP與Java同樣是作為Web伺服器開發語言,功能都是運算元據庫伺服器以及動態網頁呈現而已,如果網站多數以靜態頁面的形式呈現給使用者,那兩者比較毫無意義。

3.部署方式

PHP典型的部署方式是LAMP,即Linux系統+Apache伺服器 +MySQL資料庫+PHP語言,而JavaEE的部署方式有Linux系統+Tomcat伺服器+Mysql資料庫+Java語言,不同之處只在於伺服器與語言的選擇,Tomcat與Apache都是開源免費的伺服器,從部署上來講兩種語言都有可行的解決方案。但在這裡重點講的是虛擬機器主機,國內的虛擬主機大多不支援Java,即便支援Java也貴於PHP,而且Java應用大多使用Tomcat伺服器,而java虛擬主機是共享Tomcat程式,如果部署到該伺服器的其它應用影響到了Tomcat程式會導致所有應用都無法使用Tomcat程式,因而主機服務商維護Java伺服器成本高於PHP伺服器,所以這也導致了PHP在Web端獨大的現狀。當然不用虛擬主機則完全沒有這樣的顧慮,如使用雲伺服器,雲伺服器可以自行配置相關環境,而自由是把雙刃劍,安全但是價格高。在這裡PHPer與Javaer的不同是在程式設計環境上,有人說PHP可以熱部署,不用像Javaer編寫Web應用時每次改程式碼都需要開關伺服器,部署應用,再除錯,事實上Javaer也可以熱部署,在Intellij中只需要一個按鈕。

4.團隊配合

在提倡前後端分離的網際網路環境下,模板開發方式導致的前後端高耦合越來越遭人摒棄,如今,Web應用後端只需要提供相應的資料介面供前端呼叫即可,典型思想如RestFul。所以在團隊前後端配合角度,PHP與Java並無太大的區別。若Web應用考慮SEO搜尋引擎優化仍採用模板開發的模式,則PHP語言對前端的友好程度則高於Java。

5.系統架構

在系統架構這方面,Java毫無疑問完勝,Java擁有多種架構選擇,常見的SSH框架即Struts+Spring+Hibernate、SSM即Spring MVC+Spring+Mybatis、SM即Spring boot+Mybatis都可以作為web應用的框架選型,這些框架能夠很好的將後端模組進行分離,根據具體需求的不同選取不同的MVC層、業務層、持久層框架進行開發。有人說PHP也可以做到,說PHP有很多的框架也可以做到分層架構,ThinkPHP不就是國人開發的PHP MVC框架麼?PHP有框架這點毋庸置疑,但是PHP從語言特性上來講並不適合做框架,框架和麵向物件程式設計思想有很強的聯絡,而PHP語言特性上對物件導向並不友好,這也就導致了PHP在框架這條路上其天花板與Java相去甚遠。在這裡有些PHPer毫無疑問會義憤填膺,但事實如此,PHP的語言特性偏向與程式導向,其旨在開發特定的業務邏輯,這也是PHP適合Web開發的原因。又有人會說,PHP5.0之後也支援物件導向,但事實上PHP也是不得已而為之。關於物件導向和麵向過程的區別此處不表,但總而言之所以對於系統架構而言,PHP和Java都有各自的應用場景,在沒有前提假定的情況下去比較兩者,難分優劣。

技術選型 到底用PHP還是JavaEE?

涉及到這個問題,作為應用擁有者,考慮問題無非從以下幾點:

1.人力成本

與Java相比,PHP作為後起只秀,在人才庫上少於Java乃是不爭之實,其實這也跟當今教育有關。當今教育系統多半以學院派程式語言作為入手語言即C語言系,如C/C++、C#、Java,所以學歷教育下的Web程式語言以Java居多。而PHP語言的學習大多在職業教育下,也不乏一些在社會教育中自行學習的。這一現狀也導致了PHP人才在社會中的稀缺。供求關係決定了人力資源價值,PHP人才價格高於Java人才由此也由此得到體現。

2.專案需求

在基於B/S架構的Web應用中,專案需求複雜程度跨度比較大,從企業展示網站、個人部落格搭建,到電商平臺、CRM系統,再到金融平臺、銀行系統,專案需求複雜程度以指數級遞增。再加上Web應用運營階段時版本更迭對專案需求的影響,Web應用在開發之初就需要建立起一個完整的系統設計。與國家5年計劃類似,系統設計在最初版本一定有著一定的空間與時間假定,例如一個最初設計為企業展示網站的Web應用,在一定時間與一定發展程度的影響下也絕不會跳出企業展示需求而變成銀行系統。這樣一個系統設計的假定與技術選型息息相關,而PHP和Java在Web領域的也有著不同應用場景。簡單的系統設計PHP完全可以勝任, 而複雜的系統設計意味著後端程式碼需要模組化,要低內聚/高耦合以及程式碼重用,無疑物件導向的Java語言更適合這種複雜的場景。(大家可以加入愛好集結,一同交流:342836117) 歡迎交流: (858288017)

3.運營成本

一個Web應用總歸是要部署在網路中供其使用者瀏覽使用的,而PHP與Java對運營成本的影響也會影響到其技術選型。對於Web應用的運營而言,無非部署與維護兩大塊。部署考慮的是伺服器價格,維護考慮的是人員開支。部署方面,PHP Web與Java Web在網路中的部署方式通常有三種,一種是映象部署,一種是虛擬主機,還有一種是雲伺服器。映象部署只需要一臺連線到網路的電腦,虛擬主機需要向主機商租用,雲伺服器類似與虛擬主機也需要向主機服務商租用,三者對於不同的應用場景各有優劣,其區別就在於伺服器負載、穩定性與安全性等方面,詳細區別讀者可以自行百度,價格方面,無一例外,Web伺服器對PHP這個指令碼語言特別友好,所以PHP伺服器統一的要比Java伺服器便宜;維護方面,PHP Web與Java Web的維護有兩個方向,一個是應用異常,還有一個是伺服器異常,應用異常讓開發人員去除錯,伺服器異常如果是映象部署讓網路管理員與開發人員協同除錯,而虛擬主機與雲伺服器則找相應的伺服器提供商即可。運營成本經過部署與維護的綜合考量:維護成本在人力成本中可以歸算到人力成本這塊,而部署成本除映象部署不需要考慮PHP與Java的差別,虛擬主機與雲伺服器部署PHP則較低於Java。

綜上所述

對於一個普通的Web應用而言,如企業展示網站、個人部落格搭建、微商平臺、小型ERP、CRM系統,技術角度PHP完全足夠,價格角度PHP也便宜於Java,開發速度PHP略優於Java。對於一個複雜的Web應用而言,物件導向的Java將會是不二的選擇,雖說費用高,但貴只有貴的一個缺點,便宜則只有便宜一個優點。需要特別提出的是,內網應用,也就是基於B/S架構但不掛入網際網路的Web應用,我推薦Java。

總結

寫到這裡,有些讀者可能覺得作者通篇都在講PHP優於Java,筆者作為一個Javaer,本意陳述這兩種語言的客觀事實,不可否認的是,PHP在Web領域獨領風騷,而Java則是Web領域企業級應用開發的首選。縱觀當今Web應用的社會需求,大專案需求少於小專案,小專案又要求要快速迭代,而Java伺服器以及部署成本高,導致真正適合用Java開發的Web應用少之又少。但總而言之,PHP能做的Java都能做,Java能做的PHP未必能做的好,PHP與Java的技術選型,最後還是需要多個因素綜合考量。事實上Java作為最健壯的後端語言有著PHP無法比擬的優勢,物件導向就是PHP這個指令碼語言邁不過去的坎。筆者作為Android與J2EE兩個平臺的開發人員,考慮到程式語言的一致性,做Web應用,還是會用Java,買個雲伺服器,一來可以部署個專案管理SVN雲伺服器,二來部署個持續整合/自動化構建伺服器jenkins或者TeamCity,既做開發環境又做生產環境,雖然我不是商人,但不意味著我是傻逼,把雲伺服器上花的錢給想辦法利用起來,何樂而不為?

 

轉自:https://blog.csdn.net/qq_41214527/article/details/78993430


相關文章