兩個(gè)前景都很不錯,PHP適合初學(xué)者快速開(kāi)發(fā),但是長(cháng)遠發(fā)展看,還是Java比較有優(yōu)勢的。但是選擇培訓的時(shí)候一定要選擇合適的培訓機構,不能盲目選擇,一個(gè)好的培訓機構能夠幫你快速的掌握開(kāi)發(fā)技巧,節約大量的時(shí)間。在選擇培訓機構時(shí),不建議選擇達內,雖然名聲很響亮,又是上市公司,但是,達內的教學(xué)質(zhì)量真的太差了。無(wú)法想象竟然全部都是遠程視頻教學(xué),直接影響到教學(xué)質(zhì)量。
獨特的語(yǔ)法混合了C、Java、Perl以及PHP自創(chuàng )的語(yǔ)法。它可以比CGI或者Perl更快速地執行動(dòng)態(tài)網(wǎng)頁(yè)。用PHP做出的動(dòng)態(tài)頁(yè)面與其他的編程語(yǔ)言相比,PHP是將程序嵌入到HTML(標準通用標記語(yǔ)言下的一個(gè)應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯后代碼,編譯可以達到加密和優(yōu)化代碼運行,使代碼運行更快。
1
2
3
<?php
var_dump(‘hello word’);
?>
這里的標題寫(xiě)的是談?wù)凱HP和JAVA的區別,其實(shí)是委婉的說(shuō)法,其實(shí)別人是想聽(tīng)PHP好還是JAVA好?。?! 從而從中找到存在感?。?!
因為由于我是從多年的php開(kāi)發(fā)轉到j(luò )ava開(kāi)發(fā)的。所以最,不時(shí)的有好幾個(gè)同事問(wèn)我,你覺(jué)得java好還是php好。我每次的回答都是,各有千秋吧,各有各的好處,這是最實(shí)際的答案。
然后臨了,去想想到底都有什么差別。今天我就來(lái)仔細總結下,php與java到底有啥差別吧。
1. php即寫(xiě)即用的。
也就是說(shuō)每次只有一改動(dòng)完成,用戶(hù)立馬看到效果,而java則慢多了,代碼改動(dòng)完成后,要重新編譯,然后重啟jvm,中間耗費的時(shí)間可是不少啊,而且重啟jvm過(guò)程可是會(huì )造成用戶(hù)響應中斷的哦。
2. php寫(xiě)東西快。
php可以說(shuō)是非常敏捷的,一個(gè)需求給到,只要不考慮后期的性能和用戶(hù)量問(wèn)題,那是相當快速的,甚至你都可以不用框架,直接寫(xiě)也會(huì )非??斓?,寫(xiě)一個(gè)增刪改查功能,可能也就30-50行代碼就搞定了。而java就慢多了,首先要想一下用什么框架,目前基本上就是spring了,然后就是配置各種數據庫,過(guò)濾器,servlet,決定是用mybatis還是hibernate,然后考慮代碼之間的傳遞,然后考慮事務(wù)…… 然后不停調試,一改代碼可能就是幾分鐘的等待時(shí)間,可想而知。
3. php的表面思路更清晰。
什么是表面思路,就是你看到的東西就是真正做出來(lái)的東西,比如echo “hello world”,就是輸出hello world,而java則不同,你可能是寫(xiě)response中,可能是寫(xiě)在modelattribute中,也可能就是return了該字符串,然后不知道怎么的,它就顯示到頁(yè)面上了。
4. php占用內存少。
php是進(jìn)程式處理問(wèn)題的,占用內存相當少,可以說(shuō),你在一臺機器部署50個(gè)項目沒(méi)有任何問(wèn)題,只要訪(fǎng)問(wèn)量不上來(lái),搞得定。而java就不行了,java每啟動(dòng)一個(gè)項目,本身就得耗盡許多內存,比如在一臺8g內存的機器上,一般跑上2個(gè)項目就差不多了。
5. 說(shuō)了這php的好處,難道java就沒(méi)有好處嗎?那是不可能的。
6. java組件多。
我個(gè)人覺(jué)得單是這一點(diǎn)就蓋過(guò)其他所有優(yōu)點(diǎn)了,因為組件多,意味著(zhù)用的人多,群眾的眼睛是雪亮的。所以,java一定是好的,它已經(jīng)積淀了太多的東西,不是一門(mén)新型語(yǔ)言能夠隨便替代的。你想要做什么,好好搜索java組件,可能都有你需要的功能,特別對于當下最流行的大數據產(chǎn)業(yè),java更是占據一方。而php在這種場(chǎng)景就有點(diǎn)無(wú)能為力了。
7. java線(xiàn)程池,連接池,異步化方便。
其實(shí)這一點(diǎn)和第一點(diǎn)也很相似,也是因為組件多,所以要使用線(xiàn)程池連接池都很方便,這對于高并發(fā)高性能的場(chǎng)景來(lái)說(shuō),是絕對必要的。因為java的運行原因就是多線(xiàn)程的,所以不用每次都去初始化很多基本的東西,這省去了太多的時(shí)間,也因此大家可以忍受服務(wù)器啟動(dòng)的緩慢過(guò)程,因為只有一次。而php則是多進(jìn)程的,每次都需要重新加載所有需要的代碼,也因此無(wú)法將一些常用數據保存在內存,連接池也不大好做,異步操作更是一個(gè)大短板。
8. java是真正意義上的邏輯清晰。
因為,java中,你可以從一個(gè)進(jìn)入可以借助IDE工具分析到最深層次的邏輯操作,對于每個(gè)字段,都可以清晰明了,這其實(shí)是接口和完全對象的一個(gè)使用優(yōu)點(diǎn)。而php則做不了或者說(shuō)很少有人費那勁去做這種事情,php可以說(shuō)是半面向對象半面向過(guò)程開(kāi)發(fā),所以,在調用過(guò)程中插入幾個(gè)自定義的函數調用是很正常的,那么你再想通過(guò)簡(jiǎn)單的IDE去分析調用鏈就不那么容易了。比如,對于第三方提供的接口,php就很難清楚的看出接口返回了什么,除非你把它打印出來(lái),但是打印出來(lái)也不一定對,因為有些返回值的數據不一定有體現。這對于理解代碼來(lái)說(shuō),增加了一個(gè)大大的門(mén)坎。
9. 雖說(shuō)java編譯比較煩,但是可以為你提前發(fā)現錯誤。
java的編譯的確比較耗時(shí),但是如果有明顯的錯誤,編譯是不會(huì )通過(guò)的,這就給你一個(gè)重新檢查代碼的機會(huì )。而php則不會(huì ),不管你寫(xiě)得多爛,都不會(huì )給你提示什么,而許多時(shí)候,往往就因為少寫(xiě)了個(gè);分號,導致你排查數小時(shí)。
10. java遠程調用方便,rmi,hessian,dubbo。
不管怎么樣,遠程和本地調用都很方便的知道相關(guān)的信息,而且java的同語(yǔ)言調用不是采用純粹的http調用,而且維護一定的連接,從而大大提高性能。而php也有遠程調用,但是相對來(lái)說(shuō)就弱許多了。
其實(shí)沒(méi)有問(wèn)題是沒(méi)有絕對的好壞的,存在即合理。只是應用場(chǎng)景不一樣罷了。