爲什麼java如此經久不衰

其實這種老生常談的話題,沒必要說來說去的,只是看到網絡上有很多誤導人的觀點,覺得很不爽
  我先澄清這些觀點,再來談談我的見解。


  觀點一:“同樣的代碼java寫的更多,而C#寫的更少。那麼C#的門檻更低,競爭更激烈” 我覺得能說出這種話的人,基本上還停留在普通專科院校沒畢業的水平,基本沒什麼思考,笑笑就好。軟件開發過程中多敲幾行少敲幾行都不是事。關鍵是能理解清楚需求,理解目標,用最適合的方式解決。不管C#的語法糖多麼優秀,在java同樣也能找到差不多的解決方案,實現效果在產品側不會出現巨大差異。


  觀點二:“java是一門跨平臺開發的語言,跨平臺無壓力” 這確實在java語言開發的初期是個優勢點,但是現在早就不是了。其次,java面向的場景都是大型企業應用的場景,只要在linux或者windows server下能穩定運行即可,是不是跨平臺收益不大(但也不是沒有)


  觀點三:“現在android開發很火啊,學好了很賺錢” 這個觀點和觀點二有點類似。在早幾年是這樣的,當然現在H5也沒有大規模應用。但是現在的app大多數都穩定了,而且android上很多技術都很成熟了,很多能力可以固化下來,讓一些技能水平不是很高的開發人員就可以上手。現在的趨勢是:一個團隊有若干個,甚至只要一個移動端的開發大牛即可,大牛攻克難題,其他人打打下手,很多業務就能滿足了。java現在的主要場景還是後端,尤其是大型系統。


  還有其他觀點暫時沒想到,大家可以幫忙補充,我可以解答


  那麼應該怎麼去看待“java如此經久不衰”這個現象呢。答:從企業的利益和生態的利益去思考這個現象你就明白了。因爲個人程序員的得失短時間內是不會影響一款編程語言產品的發展的,你們再怎麼難受,再怎麼不願意,企業掏錢了,輪到你說話嗎?


  java初期因爲入門門檻低,面向對象符合當時軟件工程各方面的優秀特性(在當時是算優秀的)累積了很多軟件,以及開發人員。強大的基礎爲以後發展打下了非常夯實的基礎。因爲還有很多老系統是java開發的,對於企業最大的利益當然是能不動則不動,因爲創新對於企業的風險是很大的。有些人會問了:現在技術發展這麼快,不做改變能行嗎?確實不行,2000後幾年內那時候發展肯定沒現在這麼快。當時只要會個MVC就是大牛了。現在,呵呵。那麼java如何應對技術大潮呢。


  好在java的生態圈積累了大量優秀的軟件。現在大型應用系統都是大規模集羣、分佈式的軟件。想要完成這些系統,那麼一些優秀的中間件是分不開的。從基礎的SSH(或者SSM)/Guava等編程框架,到各種MQ組件/zookeeper/hadoop軟件羣/spark等大數據處理軟件,都有java身影。有人會問了:這些軟件不能用其他語言實現嗎?當然可以!而且有可能實現的比他們還好。但是。時間是不等人的,在較短的時間內,需要開發出最適合的軟件來解決企業面臨的瓶頸和痛點,這批優秀的程序員選擇了java,這是生態的勝利,也是相互的成就。


  有了優秀前輩們的開源貢獻,企業們的業務處理能力肯定是直線上升。終有一個時間點,上面說的那些優秀組件已經無法滿足某個企業的需求了,那怎麼辦呢?答:自己造!前面說過,企業創新是要承擔很大的風險的,那怎麼辦呢?改現有的優秀組件,讓它突破我的瓶頸點就好了嘛,基於開源組件修改無疑風險最小的。


  再來說說java虛擬機(當然,現在很多語言也都有這種虛擬機機制了,或者是複用jvm,想scala,groovy)。虛擬機就意味着,程序員有機會觀察程序運行的很多細節——內存使用情況/分配情況,堆棧運行情況(哪個線程運行時間長,當前哪個線程活躍),這些都看得清清楚楚,對於定位問題,尤其是大型系統的一些典型問題——性能,死鎖,還有性能優化工作,都是非常方便的。JVM還提供了很多安全機制,blablabla。總之有了虛擬機很多東西就玩得轉。


  總而言之,軟件開發最後都會面臨同樣的問題:測試;持續集成/交付;快速定位;分佈式處理;性能優化;安全;集羣管理等等等等


  當然現代軟件還有:大數據分析/處理;人工智能


  這些java都能滿足,且門檻已經被前輩們磨平了,所以企業都願意選擇java——企業發展初期成本低,業務大了之後易擴展,難題易解決。學習java到知海匠庫互聯網學院



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章