用Java做互聯(lián)網開發(fā)優(yōu)勢何在?
本文討論的重點是java在利用spring等架構的web開發(fā),對比php等在開發(fā)運維和性能方面有那些優(yōu)勢。尤其在電子商務等稍稍復雜一些的網站,java在業(yè)務實現(xiàn)上有那些優(yōu)勢。
人人都說java適合大項目,但沒聽說誰道出真正原因。我先說說自己的感覺。
java優(yōu)勢,是適合團隊開發(fā),軟件工程可以相對做到規(guī)范,這是一個很難比擬的優(yōu)勢。
java劣勢,是j2ee的架構很***,***版軟件可以做滿意,但是很不適合互聯(lián)網模式的持續(xù)不斷修改。互聯(lián)網軟件工程管理上的不足,持續(xù)的修修補補導致架構的破壞。系統(tǒng)更新需要重啟web服務,很難接受。
以下是我與網友們的討論
tong0245:做web開發(fā)的,不管php perl pyton ruby 都是腳本語言,而java不是。
野狼:這是java的優(yōu)勢? 是不是腳本語言根本無所謂. 雖然可以編譯,我認為甚至也可理解java一樣是腳本語言,不算獨立運行 。我一貫使用c寫web程序, java有些好的理念, 但常常人為把事情搞復雜。
艾斯尼勒:我覺得可能是這樣,由于有jvm的存在,大型的系統(tǒng)開發(fā)起來還是象單機的程序那么簡單而php...要考慮的貌似更多而且你用java就高級,設計也好。據說是能很好的提升可擴展性和可維護性
野狼 : 以前在公司,負責一套java做的系統(tǒng),業(yè)務的復雜程度國內少有,最初請過sun工程師做的架構,兩年多來敏捷開發(fā),項目管理做的不算差,但業(yè)務的發(fā)展導致了100多次上線,架構破壞嚴重,面臨重構。反思一下,在自己的項目中看不到java的優(yōu)勢在那里。感覺作為成品,賣給客戶的物流erp系統(tǒng),能發(fā)揮java的特點。 有做運營性的互聯(lián)網項目的兄弟,介紹一下開發(fā)管理經驗。
javavsnet :1.靜態(tài)語言 2. 有大量成熟框架 再補充一點 3. 語言簡單,健壯,不容易出錯,適合民工使用.
野狼:所謂靜態(tài)語言,是對比腳本語言?那沒有任何優(yōu)勢。
php,asp成熟框架不見得少,hibernate搞得程序員sql都不會寫,而且復雜查詢性能不好。論語言簡單,好像asp最簡單,php也比java容易些吧。我問的也是,java在運營性的互聯(lián)網項目的優(yōu)勢, erp等不算。
javavsnet : 如果你只用jsp,那也不用重啟,修改jsp后直接拷貝到相應目錄就可以。如果你用了jsp之外的技術,那是需要重新啟動。java是靜態(tài)語言,有豐富成熟的框架可用。比如hibernate這樣的ormapping。一般來說,Java做的東西很復雜,很強大。
野狼:單純的jsp當然了不需要。 是否重啟不是重點。
javavsnet :Java是靜態(tài)語言,有靜態(tài)類型檢查,健壯,如你所說,java優(yōu)勢是適合團隊開發(fā),軟件工程可以相對做到規(guī)范。對于互聯(lián)網項目,可以分為兩類。一類是 web 2.0,需求變化快,網站的進化速度很快。比如開心網,出點什么錯誤用戶也能忍受,用戶喜歡的是炫目的功能。這方面Java沒有優(yōu)勢,是劣勢。另一類是Java的強項,所以目前是Java的天下。就是對可靠性要求極高的互聯(lián)網項目。比如ebay,絕對不允許交易出現(xiàn)失誤,系統(tǒng)crash誰受得了?還有就是Java的性能比腳本語言強,和c性能比Java強是一個道理。對大容量系統(tǒng)的支持比php,perl們容易。asp最簡單,php也容易,但是他們誰能跟Java比健壯性?用php+c編的系統(tǒng),性能上來了,但是可靠性呢?在可靠性方面,你對php+c有信心還是對Java有信心?
綜合來看,Java做互聯(lián)網項目開發(fā)速度比腳本語言慢,但是可靠性和性能上要強,是各有所長吧。
野狼:之前見過淘寶的***架構師,淘寶主營業(yè)務的確曾經考慮性能等愿意, 由php轉的 java。不過我不認為java在性能上有優(yōu)勢、真正意義上的web2.0極少, 不如就說普通類型網站java沒有優(yōu)勢。 不過事實上現(xiàn)在倒是java網站越來越多,甚至招聘php工程師都不好找。您說的可靠性,是安全還是穩(wěn)定性? 安全基本上和語言無關, 穩(wěn)定性似乎和語言也沒關系啊。
javavsnet :說Java性能有優(yōu)勢,是編輯型語言對解釋型語言的優(yōu)勢,這是根本性的優(yōu)勢。不過在web應用中,這部分性能占的比重不大。我覺得對于web應用的性能來說,關鍵的是語言對并發(fā)的處理能力。Java有成熟的多線程模型,可以充分利用多核CPU。說Java應用可靠,是因為Java沒有指針,壞代碼會造成內存泄露,但是不會造成系統(tǒng)crash。一般來說,內存泄露需要一定時間的積累才會消耗光系統(tǒng)內存,這個過程給了管理員機會來發(fā)現(xiàn)問題,解決問題。還有 Java是靜態(tài)類型,這樣編譯器可以在編譯時發(fā)現(xiàn)一些類型不匹配問題,在動態(tài)類型語言中只能靠程序員自己了。
野狼: 如您所說, web應用編譯型語言不體現(xiàn)優(yōu)勢。系統(tǒng)的并發(fā)的處理能力和語言不是直接相關。 我理解Java有成熟的多線程模型,是用于處理復雜程序邏輯上。而比如簡單的打開模板再輸出,不可能超過apache+php的并發(fā)能力。所有解釋語言都沒指針,都不會因為程序員疏忽造成內存泄露系統(tǒng)crash。 在這點上解釋語言應用更可靠,甚至不會造成內存泄露。
javavsnet :并發(fā)有兩部分,一部分是web server對并發(fā)request請求的處理,這里Java和其他語言一樣,都依賴Apache的處理能力。另一部分是application server對應用邏輯的并發(fā)處理,這里語言本身對并發(fā)的支持就很重要了。
野狼:java的語言能力肯定比php等強。不過我理解java的語言能力是配合框架,體現(xiàn)在特殊應用上, 比如單例模式,而不是對并發(fā)能力的提升。處理相同的業(yè)務算法,并發(fā)只和語言的處理效率,以及webserver相關。
思一克: 好像有的WEB應用不用JAVA做不出來,就是AJAX那類的,著名的是GOOGLE MAP等。AJAX技術, 將WEB頁面做的可以和本地GUI一樣漂亮。和PHP, CGI類的區(qū)別是本質性的。GOOGLE MAP的成功就是用這個。
野狼 :AJAX就是異步JavaScript和XML,和java毫無關系。 AJAX不是任何新的技術,也不是新的語言,協(xié)議。算是整理了一套javascrpit 在特殊情況的應用。 其實是微軟先使用的AJAX在商業(yè)產品中。
【51CTO觀點】JAVA與PHP ,二者的開發(fā)成本都不低。不過由于Java開源,所以代碼重用率很高,在網上就可以找到很多開源的技術、框架,在有些時候可以降低很多成本。java 的擴展庫特別多,開發(fā)起來相對比較容易。不過Java對服務器性能的要求高,因為Java虛擬機和連接池都是比較耗資源的。單看純運用時,理論上JAVA的性能及安全可靠性也稍遜PHP??傊?,JAVA與PHP都有各自的優(yōu)勢,大家在做互聯(lián)網開發(fā)時,還是具體情況具體分析吧。
【編輯推薦】