自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

什么是Java SE?生產(chǎn)環(huán)境裝JDK還是JRE?

開發(fā) 后端
JVM、JRE、JDK是口上最為常說的J系列縮略語,那么JDK 8和Java 8是一回事嗎?還有Java SE 8有時(shí)候著實(shí)分不清道不明。含糊其辭難免會(huì)讓”他人“覺得不專業(yè),本文就花上幾分鐘來了解了解。

[[412998]]

前言

你好,我是A哥(YourBatman)

上篇文章搞完什么是Java EE意猶未盡,在敦促之下一口氣把Java SE也拿下。如果說搞Java EE是在炒冷飯,但Java SE必定是永恒。

JVM、JRE、JDK是口上最為常說的J系列縮略語,那么JDK 8和Java 8是一回事嗎?還有Java SE 8有時(shí)候著實(shí)分不清道不明。含糊其辭難免會(huì)讓”他人“覺得不專業(yè),本文就花上幾分鐘來了解了解。

所屬專欄

  • BATutopia-Java EE

相關(guān)下載

  • Java EE工程源代碼:https://github.com/yourbatman/BATutopia-java-ee
  • JSR-JCP工程源代碼:https://github.com/yourbatman/JSR-JCP
  • JSR文件網(wǎng)盤下載:https://wangpan.yourbatman.cn/s/nRtq 密碼:jsrjcp

版本約定

  • Java SE 8(非Open JDK)

正文

什么是Java技術(shù)?

Java技術(shù)既是一種編程語言,又是一種平臺(tái)。Java語言的主要特性有:

  • 簡(jiǎn)單
  • 面向?qū)ο?/li>
  • 分布式
  • 多線程
  • 高性能(編譯型非解釋型)
  • 健壯性強(qiáng)
  • 安全

在Java編程語言中,所有源代碼首先以.Java擴(kuò)展名結(jié)尾的純文本文件編寫。這些源文件由javac編譯器編譯成.class文件,.class文件不包含處理器本機(jī)代碼(也就是說和本機(jī)OS無關(guān))。而是包含字節(jié)碼 -> JVM的機(jī)器語言,然后.class是運(yùn)行于特定的JVM虛擬機(jī)上的。

由于不同的操作系統(tǒng)上都有各自對(duì)應(yīng)平臺(tái)的JVM,所以一份Java代碼(一份.class字節(jié)碼)可以運(yùn)行在不同的操作系統(tǒng)上,實(shí)現(xiàn)跨平臺(tái)的目的。正所謂Java是跨平臺(tái)的語言,JVM是跨語言的平臺(tái)。

API和Java虛擬機(jī)將程序與底層硬件隔離開來,做到程序無關(guān)性。

JVM、JRE、JDK三者關(guān)系

其實(shí)這個(gè)問題的答案,官方早已非常準(zhǔn)確的給了答案,可能鮮有人關(guān)注。這里我就把它強(qiáng)調(diào)出來,一切都源自官方出品的張圖:

這張圖是不是清清楚楚、明明白白的告知了JVM、JRE、JDK三者的關(guān)系?咱們把這個(gè)關(guān)系簡(jiǎn)化一下:

一目了然了吧,它們哥弎是一種包含關(guān)系。

JVM是什么?

Java Virtual Machine:Java虛擬機(jī)。負(fù)責(zé)支持的Java應(yīng)用程序的執(zhí)行,是讓Java實(shí)現(xiàn)一處編寫,到處運(yùn)行的保證。

起初JVM僅作為Java語言的運(yùn)行時(shí)環(huán)境,現(xiàn)在它儼然發(fā)展為一個(gè)平臺(tái),能夠支持多種語言的運(yùn)行如Kotlin、Groove

每個(gè)操作系統(tǒng)(Windows、Linux、Mac OS)都有自己的JVM實(shí)現(xiàn),屏蔽掉應(yīng)用程序?qū)Φ讓覱S的感知,方可讓Java具有跨平臺(tái)的能力。

值得注意的是,JVM是一種規(guī)范,從而允許不同廠商實(shí)現(xiàn)自己的JVM。當(dāng)然Sun/Oracle官方自己也有,那便是Hotspot虛擬機(jī)。它是Sun JDK和OpenJDK中所自帶的虛擬機(jī),也是使用范圍最廣的Java虛擬機(jī)。

除此之外比較著名的還有IBM的J9 VM、安卓上的KVM、微軟的Microsoft JVM、Oracle的JRockit VM(現(xiàn)已和Hotspot合并)...

我們熟悉的CMS、G1、ZGC都屬于官方的垃圾回收算法,是JVM核心性能指標(biāo)

JRE是什么?

Java Runtime Environment:Java運(yùn)行時(shí)環(huán)境。為Java程序有效運(yùn)行的工具(環(huán)境),同樣的,它和底層OS系統(tǒng)版本綁定。我們常見的那些API都在這里,比如rt.jar,比如這些包名:

Java是一門偏向保守的語言,因此JRE在向后兼容性方便一直都非常謹(jǐn)慎,保持得都非常非常非常好?;诖四?,可以看到官方總是建議你升級(jí)到最新版本,以獲取更好的性能表現(xiàn)、安全表現(xiàn)。你看Java SE都已經(jīng)發(fā)布到16/17版本了,但:你發(fā)任你發(fā),我用Java 8。

Sun官方對(duì)JRE是提供了單獨(dú)下載的,如果只是想運(yùn)行一個(gè)已編輯/打包好的Java程序,使用JRE就夠了。它的體積更小,下載安裝起來更便捷。體積上差異不小啊:“以Java SE 8u291版本為例:JRE僅87m,而對(duì)應(yīng)的JDK高達(dá)271m,3倍有余”

JDK是什么?

Java Development Kit:Java開發(fā)工具包,它包含有JRE。新手注意了這是知識(shí)點(diǎn):若安裝了JDK,無需再額外安裝JRE。

可認(rèn)為JDK它是JRE的擴(kuò)展,為方便開發(fā)人員開發(fā)Java程序的工具包。包含有編譯器javac、Javadoc工具、debugger斷點(diǎn)調(diào)試工具、javap反編譯工具等,還有更多,看官網(wǎng)就清楚了:https://docs.oracle.com/javase/8/docs/technotes/tools

為了方便閱讀,這里我把JDK這些工具截圖給你,應(yīng)該能看見不少眼熟的工具,不出意外也使用過不少吧。

雖然JDK提供了非常多好用的工具,但如今我們開發(fā)人員似乎使用得越來越少,這也是為何你看到上圖還是很陌生的原因。

JDK的這些工具,“替代品”大都可完成,如:

  • 使用Maven/Gradle來完成自動(dòng)編譯(底層可以是Javac或者eclipse的jdt)
  • 使用IDE集成開發(fā)工具完成自動(dòng)編譯(如IDEA、Eclipse等)
  • 使用IDE來debug調(diào)試程序(如IDEA、Eclipse等)
  • 使用IDE來查看運(yùn)行時(shí)內(nèi)存信息(如IDEA)
  • ...

總之,集成開發(fā)環(huán)境IDE越來越強(qiáng)大,使得開發(fā)者可通過圖形化界面直接操作從而提升效率,間接的就是JDK的工具就被使用得越來越少了。這并非一個(gè)“好消息”,因?yàn)樵诿撾x了IDE的場(chǎng)景下依舊還得原生的工具出馬,比如線上部署環(huán)境。

生產(chǎn)環(huán)境應(yīng)該安裝JDK還是JRE?

一般來講,線上環(huán)境只會(huì)扔一個(gè)jar/war包(或者一個(gè)制品庫)上去直接運(yùn)行,不可能在上面調(diào)試更不可能編碼,所以使用更加輕量級(jí)的JRE更合適?

非也非也!生產(chǎn)環(huán)境應(yīng)該安裝JDK而非JRE!!! 理由如下:

1.JDK是JRE的超集,功能只多不少

2.JDK相較于JRE的劣勢(shì)是安裝時(shí)間長(zhǎng)點(diǎn)、占用硬盤空間大點(diǎn)。但相比之下這根本都不算劣勢(shì)

  • JDK僅需安裝一次,時(shí)間再長(zhǎng)都能接受
  • 占用硬盤空間大這個(gè),額,不說了

3.JDK提供不少順手的工具集,如:jmap、jstack、jinfo、jps等等,相信有經(jīng)驗(yàn)的程序員同學(xué)對(duì)這些“實(shí)用小工具”不陌生

4.JDK有編譯器,能實(shí)現(xiàn)“動(dòng)態(tài)編譯”的能力

想想當(dāng)年流行的JSP文件,它是在運(yùn)行期間首次訪問時(shí)通過JSP->Servlet->.class文件有的.java文件是通過網(wǎng)絡(luò)動(dòng)態(tài)讀取的,這個(gè)時(shí)候也需要運(yùn)行期間的試試編譯能力

那么單獨(dú)的JRE就沒有用武之地了嗎?當(dāng)然有,桌面端程序就是典型的例子。比如Java程序員最常用的IntelliJ IDEA它就自帶JRE嘍(桌面端程序完全沒必要安裝JDK嘛),當(dāng)然還有Eclipse(舊版Eclipse必須依賴于本機(jī)的JRE環(huán)境才能運(yùn)行,新版已經(jīng)和IDEA一樣把環(huán)境內(nèi)置了)。

Oracle的JDK的是免費(fèi)的嗎?

答:不是。

可能你早就聽聞過Oracle對(duì)JDK要開始收費(fèi),時(shí)間撥回到2019年4月份,Oracle發(fā)布了JDK 8的兩個(gè)更新補(bǔ)?。?u211和8u212,記住這兩個(gè)特殊的版本。

作為小版本功能上肯定并無多少變化,重點(diǎn)在于:新版本的許可協(xié)議從BCL換成了OTN,也就是說你將不能在生產(chǎn)環(huán)境使用新版/更新版 JDK,若要使用就必須付費(fèi)了。嗯,這很Oracle:先收購(gòu),再收費(fèi)。

BCL vs OTN許可協(xié)議

BCL許可協(xié)議:Oracle Binary Code License Agreement for the Java SE Platform Products and JavaFX(Java SE平臺(tái)產(chǎn)品和JavaFX的Oracle二進(jìn)制代碼許可協(xié)議)。簡(jiǎn)而言之:它是一種開放協(xié)議,只要你同意此協(xié)議就可以使用它,無需費(fèi)用。除了不能修改它外,私用和商用都可以。

OTN許可協(xié)議:Oracle Technology Network License Agreement for Oracle Java SE(針對(duì)Oracle Java SE的Oracle技術(shù)網(wǎng)絡(luò)許可協(xié)議)。簡(jiǎn)而言之:它是一種商業(yè)授權(quán)協(xié)議,必須付費(fèi)授權(quán)后才能商用(私用免費(fèi)),否則...

為了方便查找到自己當(dāng)前使用的JDK是否需要付費(fèi),這里給出一張表格一目了然:

嘿嘿,默默的查看自己服務(wù)器上的JDK版本,中招了嗎?

收費(fèi)標(biāo)準(zhǔn)

既然JDK開始收費(fèi),那到底貴不貴呢?來看看現(xiàn)在的收費(fèi)標(biāo)準(zhǔn):

桌面版:類似于windows一人一份,按設(shè)備數(shù)/人頭數(shù)來計(jì)算。每人200元/年樣子(若人數(shù)超過5萬人,聯(lián)系Oracle的銷售代表有更大優(yōu)惠)服務(wù)器版:用于服務(wù)器、云計(jì)算等。按照機(jī)器數(shù)量來計(jì)算,每臺(tái)2000元/年樣子(若數(shù)量超過2w臺(tái),聯(lián)系Oracle的銷售代表有更大優(yōu)惠)

也許你會(huì)覺得奇怪:也沒見個(gè)人/自己公司為此付過費(fèi)呀,怎么肥四?答:這是因?yàn)槟阍谔斐?,就像你為windows付過費(fèi)么?

大企業(yè)、國(guó)企、央企除外...

當(dāng)然,不使用Oracle的JDK并不是不能做Java開發(fā)了,還有Open JDK嘛。比如流行的就有:

  • 阿里巴巴的dragonwell
  • Amazon的Corrett
  • 華為的畢昇JDK
  • 騰訊的Kona
  • IBM的JDK
  • ...

附:Oracle JDK的下載方式

這完全是獻(xiàn)給剛學(xué)Java的初學(xué)者的,但不瞞你說,隨著Oracle改變了JDK的下載方式(隱藏較深、需要登錄等等),不止一次遇到工作N年的同事下個(gè)JDK搞了半天(真實(shí)的半天哦)。

1、Java官網(wǎng)下載

這里指的是鼎鼎大名的域名java.com,也叫Java 官網(wǎng)。擁有這么nx的域名,現(xiàn)在貌似只做著一件事:提供JRE的下載

下載頁面地址:https://www.java.com/zh-CN/download特點(diǎn):

  • 無需登錄,下載十分便捷
  • 只能下載JRE 8版本(畢竟8現(xiàn)在依舊是主流),更新的下載不了
  • 只能下載JRE,并不能下載到JDK(倘若這里直接能下載到JDK的話,那應(yīng)該沒Oracle官網(wǎng)什么事了)

小細(xì)節(jié):實(shí)際仍是從oracle服務(wù)器下載的文件

2、Oracle官網(wǎng)下載

根正苗紅,最具權(quán)威性,是Java開發(fā)者首選的下載JDK方式。這里可以下載Java 16、Java 11、Java 8、Java 7等所有版本,這里以Java 8為例:

當(dāng)然下載的時(shí)候依舊少不了“大字報(bào)”提示你記得付費(fèi):

下載頁面:https://www.oracle.com/cn/java/technologies/javase-downloads.html特點(diǎn):

  • 需要登錄,方可下載(也就是說必須有Oracle賬戶且登錄了才行)
  • 可下載到所有版本的JDK、JRE

小細(xì)節(jié):從java.com上下載到的jre與oracle官網(wǎng)下載到的是同一個(gè)文件(文件名、大小均相同),但下載地址稍有差別哦(估計(jì)是為了區(qū)分:一個(gè)需要登錄,一個(gè)不需要登錄吧😄)

3、BAT網(wǎng)盤下載

不限速下載,去除干擾精確定位,推薦使用,推薦使用。

下載頁面:https://wangpan.yourbatman.cn/s/rEH0 密碼:javakit 特點(diǎn):

  • 無需登錄,即可直接下載
  • 國(guó)內(nèi)服務(wù)器,并且,不限速,不限速,不限速
  • 可下載到最新的JRE、JDK、IDEA、Datagrid等常用開發(fā)工具,不限速哦

還不用說下載速度(下載速度一般10倍于上傳速度),我只附上我的一張上傳速度截圖,就知道這個(gè)下載體驗(yàn)?zāi)苡卸嗝吹乃崴耍?/p>

另:BAT網(wǎng)盤擁有強(qiáng)大不限速、存儲(chǔ)任何(包括種子)的特性,現(xiàn)開放注冊(cè)哦,詳見這篇文章:每人送1G超小容量,“BAT網(wǎng)盤”免費(fèi)助你做減法

4、“其它軟件平臺(tái)”下載

從什么天空軟件、多特軟件、CSDN里下載,極不推薦!

總結(jié)

本文又算得上一篇合格的科普文,這些基礎(chǔ)知識(shí)就像我們小時(shí)候背的古詩詞一樣,是基礎(chǔ)中的基礎(chǔ),多了解一些交談起來能更顯得專業(yè),特別是熱衷做培訓(xùn)的,專業(yè)性可以更強(qiáng)點(diǎn)。

 

責(zé)任編輯:姜華 來源: BAT的烏托邦
相關(guān)推薦

2022-02-16 22:50:28

JVMJDKJRE

2022-12-30 16:06:23

JDKJREJVM

2009-07-08 18:07:58

jvm jre

2009-09-09 10:23:27

JDK 5Java SE 6

2009-07-08 10:41:54

JDK JRE JVM

2009-06-25 14:46:50

JDKJREJVM

2009-07-08 17:59:51

JDK JRE

2023-09-27 08:46:44

Java 技術(shù)編程語言

2010-09-25 14:58:12

JVMJDKJRE

2009-07-09 13:44:12

JDK JRE

2019-07-24 10:11:51

jdkjreJava

2009-07-08 09:47:47

安裝JDKJREJVM

2010-09-27 14:50:22

JDKJREJVM

2022-09-28 18:16:34

JavaJDK

2009-07-07 12:48:29

JDK環(huán)境變量設(shè)置

2010-02-25 13:58:22

Linux JDK

2010-01-04 16:19:15

Ubuntu JDK

2022-12-08 10:35:25

2015-08-06 21:01:37

移動(dòng)

2010-09-26 14:32:34

JDKJREJVM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)