標籤:編譯 jvm java 流行 資訊 無法 敏捷 做什麼 思路
這裡的標題寫的是談談PHP和JAVA的區別,其實是委婉的說法,其實別人是想聽PHP好還是JAVA好!!! 從而從中找到存在感!!!
因為由於我是從多年的php開發轉到java開發的。所以最,不時的有好幾個同事問我,你覺得java好還是php好。我每次的回答都是,各有千秋吧,各有各的好處,這是最實際的答案。
然後臨了,去想想到底都有什麼差別。今天我就來仔細總結下,php與java到底有啥差別吧。
1. php即寫即用的。
也就是說每次只有一改動完成,使用者立馬看到效果,而java則慢多了,代碼改動完成後,要重新編譯,然後重啟jvm,中間耗費的時間可是不少啊,而且重啟jvm過程可是會造成使用者響應中斷的哦。
2. php寫東西快。
php可以說是非常敏捷的,一個需求給到,只要不考慮後期的效能和使用者量問題,那是相當快速的,甚至你都可以不用架構,直接寫也會非常快的,寫一個增刪改查功能,可能也就30-50行代碼就搞定了。而java就慢多了,首先要想一下用什麼架構,目前基本上就是spring了,然後就是配置各種資料庫,過濾器,servlet,決定是用mybatis還是hibernate,然後考慮代碼之間的傳遞,然後考慮事務。。。 然後不停調試,一改代碼可能就是幾分鐘的等待時間,可想而知。
3. php的表面思路更清晰。
什麼是表面思路,就是你看到的東西就是真正做出來的東西,比如echo "hello world",就是輸出hello world,而java則不同,你可能是寫response中,可能是寫在modelattribute中,也可能就是return了該字串,然後不知道怎麼的,它就顯示到頁面上了。
4. php佔用記憶體少。
php是進程式處理問題的,佔用記憶體相當少,可以說,你在一台機器部署50個項目沒有任何問題,只要訪問量不上來,搞得定。而java就不行了,java每啟動一個項目,本身就得耗盡許多記憶體,比如在一台8g記憶體的機器上,一般跑上2個項目就差不多了。
5. 說了這php的好處,難道java就沒有好處嗎?那是不可能的。
6. java組件多。
我個人覺得單是這一點就蓋過其他所有優點了,因為組件多,意味著用的人多,群眾的眼睛是雪亮的。所以,java一定是好的,它已經積澱了太多的東西,不是一門新型語言能夠隨便替代的。你想要做什麼,好好搜尋java組件,可能都有你需要的功能,特別對於當下最流行的大資料產業,java更是佔據一方。而php在這種情境就有點無能為力了。
7. java線程池,串連池,非同步化方便。
其實這一點和第一點也很相似,也是因為組件多,所以要使用線程池串連池都很方便,這對於高並發高效能的情境來說,是絕對必要的。因為java的運行原因就是多線程的,所以不用每次都去初始化很多基本的東西,這省去了太多的時間,也因此大家可以忍受伺服器啟動的緩慢過程,因為只有一次。而php則是多進程的,每次都需要重新載入所有需要的代碼,也因此無法將一些常用資料儲存在記憶體,串連池也不大好做,非同步作業更是一個大短板。
8. java是真正意義上的邏輯清晰。
因為,java中,你可以從一個進入可以藉助IDE工具分析到最深層次的邏輯操作,對於每個欄位,都可以清晰明了,這其實是介面和完全對象的一個使用優點。而php則做不了或者說很少有人費那勁去做這種事情,php可以說是半物件導向半面向過程開發,所以,在調用過程中插入幾個自訂的函數調用是很正常的,那麼你再想通過簡單的IDE去分析調用鏈就不那麼容易了。比如,對於第三方提供的介面,php就很難清楚的看出介面返回了什麼,除非你把它列印出來,但是列印出來也不一定對,因為有些傳回值的資料不一定有體現。這對於理解代碼來說,增加了一個大大的門坎。
9. 雖說java編譯比較煩,但是可以為你提前發現錯誤。
java的編譯的確比較耗時,但是如果有明顯的錯誤,編譯是不會通過的,這就給你一個重新檢查代碼的機會。而php則不會,不管你寫得多爛,都不會給你提示什麼,而許多時候,往往就因為少寫了個;分號,導致你排查數小時。
10. java遠程調用方便,rmi,hessian,dubbo。
不管怎麼樣,遠程和本地調用都很方便的知道相關的資訊,而且java的同語言調用不是採用純粹的http調用,而且維護一定的串連,從而大大提高效能。而php也有遠程調用,但是相對來說就弱許多了。
其實沒有問題是沒有絕對的好壞的,存在即合理。只是應用情境不一樣罷了。
我來談談PHP和JAVA在web開發上的的區別