為什么很多公司選擇不升級JDK版本?
確實如題主所說,目前大部分公司依舊在用jdk1.8的版本,我在面試的時候通常情況下都會問一下候選人之前公司線上使用的jdk版本,目前還沒有遇到使用1.8以上的版本,所以我們通常在面試交流的時候基本上都會基于1.8版本~
那么問題來了,JDK14已經于2020年3月17日如期發布,為什么大家還在普遍使用JDK8的版本?
Oracle的JDK路線圖大家可以去oracle官網看看oracle公司對各個版本的JDK版本支持路線圖,文章地址如下:
https://www.oracle.com/java/technologies/java-se-support-roadmap.html
各版本支持如下表:
可以看到自JDK8以后,只有JDK11是LTS(Long Term Support)的,其他9、10、12、13、14以及還未發布的15都是non-LTS的。
那么對于使用JDK的公司來說,只有JDK8和JDK11可以選擇,你官方都說不是長期演進版的,我們還用干嘛?
用JDK8還是JDK11?oracle已經告訴我們了要么使用JDK8,要么使用JDK11,那么到底是使用JDK8還是使用JDK11呢?
說到JDK8的新特性大家都如數家珍,什么stream流操作、lambda表達式、HashMap的優化、ConcurrentHashMap的鎖優化、Synchronized的鎖升級優化、Optional等等,使用的時候也是輕車熟路,網上相關文章也是數不勝數,面試的時候也是必問的。
JDK11呢?似乎面試時候大家也不問,大家用的也不多,即使去學習了,去代碼實操了,但是過段時間也忘了,這就意味著有開發成本和試錯成本,俗話就是有坑需要踩。
不是說JDK11有坑,是咱們用JDK11開發有坑,也許你用了其中的一個新特性,覺得很牛逼,然后上線了,然后運行一段時間了就不知不覺的出bug了,然后你還不知道問題出在哪,想想是不是很恐怖?
老項目不用多說,肯定是不會輕易升級JDK版本的,公司不可能給你提供這個資源來升級JDK版本,除非說JDK8有bug,然而JDK8很穩定,性能也很好。網上有關于JDK8和JDK11的性能測試相關文章,大家可以搜一搜。
那新項目用JDK11可不可以呢?用過JDK11開發項目的同學應該會有了解,他是無法向下兼容的。也就是如果你決定使用JDK11,意味著你需要單獨的一套環境來運行你這個項目,之前的運維環境你通通都不行,然后你還要考慮更多的是你項目使用的其他第三方依賴包是否是基于JDK11開發的?所有的一切你都得小心點,你需要能夠徹底的掌控它~
JDK11是早晚的事情無論怎么說,最終我們都會慢慢轉向JDK11甚至更高的版本!
有的同學會說JDK8不收費,JDK11需要商業使用許可證,意味著收費。其實我覺得這點不用擔心,開源的力量足以讓社區版本高可用。除非你需要oracle公司的商業支持。
也許有一天JDK8會成為歷史,就像現在大家看JDK6一樣:“如果有公司還在使用JDK6,你會感覺這個公司技術真low”。
我現在唯一能期待的是,但愿那個時候我們都還在Coding,僅此而已~