現在是敏捷開發時代了,流行小迭代,Java現在的每六個月更新一次的發版頻率就是小迭代。
Java開發團隊可謂是「高產似母豬」,每隔幾個月就冒出一個新版本出來,很多人對Java8都沒有精通,但是Java11、12、13、14都已經發布了.
這麼高的發布頻率有什麼用?
首先我們看看2020年1月Tiobe官網發布的程式語言排行榜:
Java依然穩居第一位,一哥的地位槓槓的,並且有越來越多的人使用Java,這是驅使官方不斷優化更新的理由之一。
Java的不斷迭代從另一個角度證明了其火熱程度,雖然這些變化讓人頭暈目眩,但其目的是為了給世界上最流行的語言提供高質量、頻繁且在計劃內的更新,同時讓語言開發團隊保持高度活躍,以便讓程式設計師們更好地探索Java語言。
01
企業應該升級嗎?
在Java8之前,用戶接受更高版本的Java的過程非常緩慢,想要跟上每六個月就要升級的步伐,實在是太難了。
對於企業來說,這種升級分分鐘會帶來兼容性的致命問題,風險也是非常大的,尤其面對龐大而又複雜項目。
而且JDK是個非常核心的基礎設施,除了安全漏洞,基本上是不會再去動生產環境JDK了,而且出了安全事故誰也承擔不了這個責任。
02
事實證明大部分人還在用Java8
從Java8之後,Java的發布周期明顯快了很多,而根據調查顯示,80%的受訪者仍然在使用Java8。
在這麼多的版本中,只有Java8、Java11和未來的Java17是長期支持版本(LTS),Oracle會支持3年,其他的只會支持6個月,新版本一出,就放棄老版本的技術支持,這也是很少有人使用9~14的版本的原因。
03
既然高頻更新,為什麼開發人員還在堅持使用Java 8呢?
第一,Java8開創性的語言特性還在被編程社區吸收。
即使到了2019年,網上仍然在熱烈討論關於Steam和Optional的相關問題,Baeldung自己也發布了Java8Optional 指南。
第二,Java9引入了模塊化系統,這是個看起來很美的特性,可是對程式設計師來說,這是一個破壞性的更新,因為JDK做了模塊化,但是很多第三方庫沒有做模塊化。
如果想讓自己的項目也模塊化,很有可能是一次不斷填坑的經歷,尤其在使用第三方庫的時候。
第三,在Java8之後,新版本的特性似乎沒有足夠的說服力讓人們下決心更新。
第四,在2019年1月份之後,JavaSE8的公共更新需要商業許可,這也是OracleJDK與 OpenJDK 之爭的開始。
此外,在不同的供應商那裡是否可以得到免費更新的相關計劃,以及 (新的和現有的) 付費的支持模型,這些都是人們考慮是否更新的因素。
框架:Spring佔據主導地位
在框架的採用方面,Spring佔據了主導地位。與傳統且臃腫的JavaEE相比,Spring是現代化的、基於Java的企業應用程式的輕量級框架。SpringBoot的採用率也很高。
構建工具:Maven斷層式第一
在Java構建工具的調查中,Maven以相當大的優勢排在了第一位,這表明排在第二位的Gradle仍然是Android的代名詞,之後需要做更多的努力來擺脫這些限制,以便被開發者認可成為Java構建通用實踐的一個可行選擇。
IDE:IntelliJ大比例佔據一位,Eclipse份額持續下降
在IDE的調查中,IntelliJ以將近60%的份額佔據了第一的位置。為什麼IntelliJ如此受歡迎呢?
Jetbrains市場總監安德烈·切普索夫曾在一篇博客中這樣寫道:「在你編寫代碼時,IntelliJ IDEA也忙著在構建它的語法樹,在類、變量、欄位、方法和它們的用法之間創建引用,分析執行流,利用這些信息,它可以提供補全功能,幫助你快速瀏覽代碼,提供錯誤分析和方便的快速修復。」
而傳統的Eclipse則有點不妙,其佔比從去年的38%下降到32.8%。
Web/應用伺服器:Tomcat佔據第一
早在2011年,Forrester的首席分析師邁克·瓜蒂埃裡就寫過一篇既有預見性又不受時間限制的文章,名為《停止在 WebLogic、WebSphere 和 JBoss 應用伺服器上浪費金錢》他開頭寫道:「使用Apache Tomcat 吧,它是免費的。」
事實證明,Tomcat一直保持著輕量級的資源消耗,毫無爭議地擊敗 Jetty、WebLogic、WebSphere 、JBoss等奪得了冠軍。
資料庫:關係型資料庫比NoSQL更受歡迎
MySQL和PostgreSQL是前兩名,Oracle排名第三,第四、第五名分別是 MongoDB和MSSQL。
這裡有兩個值得注意的趨勢,與Percona的資料庫管理系統流行度調查結果一致,關係型資料庫管理系統勝過NoSQL,而開源資料庫管理系統則比大型商業資料庫管理系統做得更好。就像前文中的Web伺服器一樣,人們尋求的也是更輕量級的等價物,尤其是PostgreSQL。
04
我們需要不斷地學習Java新版本嗎?
最新的版本就一定是最好的嗎?並不見得。
因為Java8被個人/企業所廣泛運用,用的時間長了,bug都差不多被找出來了,只會更加穩定、順手。對於企業來說,穩才是重中之重,甚至有的企業還在用Java1.7版本。
那程式設計師們還有必要學習Java的新版本嗎?
我認為是有必要的。
從技術來看:Java小版本更新基本上都是修復各種漏洞和bug,不會去改變現有的JDK,JDK其實都差不多,我們只需要知道它新增了什麼功能而已,從這一點來看其實也增加不了很多的學習成本。
當Java大版本的更新,比如JDK7->JDK8,會增加一些新特性,花幾個小時看看realse note就可以完成學習了,同樣花不了程式設計師們的很多時間。
從個人來看:雖然很多公司還在用JDK6-7-8,但是我們更應該關注的是自身的知識基礎和學習能力,不要因為現在公司的Java技術停留在某個版本上面而放棄學習,我們可以不為企業更新Java版本,但我們要為自己的知識深度與廣度學習更多的Java知識。
如果你只會Java1.7,那麼你的求職範圍只能在使用Java1.7的公司中,一個用得上Java8、11、12的公司為什麼要招一個連Java8都不會的人呢?
除了留意版本更新,程式設計師們同時要留意基於Java的一些流行框架和新技術,比如近幾年興起的SpringBoot、SpringCloud等。
一句話就可以概括:企業升不升級是他的事,你學不學是你的事。