對java新手來說,選擇jdk的版本也是個頭暈的事情,今天小拿就給大家講講。內容包括
一、jdk版本選擇
jdk是java開發工具包,除了運行和編譯相關的工具外,最重要的是封裝了很多方法(function/method/api)。比如寫一個輸出「Hello world」的程序,直接調用System.out.println方法就好。
但是安裝jdk的時候,有的人推薦1.6(也有叫6.0的),也有說用1.7和1.8的。竟然這麼混亂,不如先官網看看是什麼情況。
java下載官網直達:https://www.oracle.com/technetwork/java/javase/downloads/index.html
神馬!真是不看不知道,一看嚇一跳,jdk原來在今年的9月26日已經發布了了11.0(也就是1.11),從jdk1.5到1.11,到底選哪個版本?
問題1:JDK為什麼頻繁升級,從1.7到1.8、1.9、1.0、1.11?
這個問題新手可以了解下,java和C++都是高級語言,但是兩者之間最大的區別就是C++底層直接調用操作系統運行硬體;而java是在操作系統之上加了一層JVM(java虛擬機),也就是運行上硬體之上的一個層級,所以一般來說C++性能更好。
早期的大型客戶端遊戲、網路和大數據演算法、和硬體驅動都是用C++(或者C)語言來開發的。但是人無完人,語言也是這樣,要不然就不會有像java、python、go等五花八門的語言。與操作系統的強鎖定使C++在不同操作系統或者硬體平台運行時,都要對程序進行改進和調整。
而java因為底層有一套虛擬機的存在,號稱各平台運行無障礙。現在智能電器、家居基本上跑的都是基於java語言開發的程序。
但是java說我也是運用這麼廣泛的語言,怎麼能老戴著性能不如C++的帽子呢?所以隨著技術的提高和數據結構演算法的應用,通過不斷的小版本(如1.8.1,1.8.2)和大版本(1.7、1.8等)的發布,jvm的性能也一直在升級,普通應用場景下,已經和C++性能相關不大。
另外,語法一直比較死板的java語言,也在吸收其它語言的精華,比如1.8引入了Lambda表達式,1.9引入var變數等。(雖然,java程序員大都不買賬,一直用著原來死板的語法~~)
問題二:到底取選哪個
先給答案,選1.8或者1.9,1.8優先。
話要從Sun公司(也就是太陽)被Oracle收購說起,java原來是個開源項目,社區來維護。被收購後就帶有商業和屬性,Oracle公司也慢慢開始向java開刀和收費了,雖然現在jdk se 標準版還不收費,但是高級版已經向使用的企業要錢了。
有這個打算後的java語言走的路子就快了很多,比如10.0和11.0的發布就很快,一些新增的功能還需要市場來反饋是不是合理的,而且java開發依賴於很多框架(如spring),如果這些框架還沒有完全支持新版本,可能就運行不起來。所以建議新版本(10.0和11.0),除非只想從語言層面去體驗新功能,還是不要在實際業務開發中用。
1.5和1.6就太老了,連1.8,Oracle都發出2019年1月停止更新的通知了,我們就更不要用這些老古董了。
1.7、1.8、1.9都是成熟版本,原則上都可以選用。公司的商業項目jdk一般不輕易升級,1.9用的就比較少了,加上上面的配套框架升級速度的考慮,1.9版本第二推薦位。1.8和1.7的應用都比較廣泛了,那自然選更新更高級的版本,所以,最推薦用1.8版本。
二、jdk和jre的區別
有同學在配置系統時,經常遇到jdk和jre的問題,但是也搞不清兩者的區別。這裡作為常識了解下,早期不知道也沒什麼問題。
其實從就兩個詞的字面就可以區分開,jdk(java development kit)是java的開發工具包,jre (java runtime environment) 是java程序的運行環境。
本地開發的時候也可以運行,但是作為網站或者項目運行時,代碼都打個war包或者jar包了,跟開發相關的工具和包就沒有用了。
也就是說jre是jdk的一個子集。
下圖是官方1.8的文檔說明:https://docs.oracle.com/javase/8/docs/
運行時使用jre而不使用jdk,一方面是為了減少硬碟空間的使用,另一方面也有一定的安全考慮,防止jdk里的一些執行命令被惡意篡改。當然,現在大部分公司運行時已經不那麼區分jdk和jre了,直接在伺服器上跑JDK。
文章為【拿OFFER】原創,轉載請註明出處。
TAG:JDK | Java |