成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java那些事-聊聊那些易混淆的概念:OpenJDK/oracleJDK,Java EE/Jakarta EE

開發(fā) 前端
本篇博文,跟大家一起回顧下JAVA那些易混淆的概念,包括 JVM/JRE/JDK,openJDK/oracleJDK,以及 JAVA SE/JAVA EE/Jakarta EE。

本文轉(zhuǎn)載自微信公眾號「明哥的IT隨筆」,作者IT明哥。轉(zhuǎn)載本文請聯(lián)系明哥的IT隨筆公眾號。

大家好,我是明哥。

本篇博文,跟大家一起回顧下JAVA那些易混淆的概念,包括 JVM/JRE/JDK,openJDK/oracleJDK,以及 JAVA SE/JAVA EE/Jakarta EE。

1 JVM/JRE/JDK

JVM,Java Virtual Machine,即 JAVA 虛擬機(jī),是負(fù)責(zé)執(zhí)行 JAVA 程序的。JVM 首先解釋 JAVA 編譯器編譯獲得的 bytecode 字節(jié)碼,然后將類相關(guān)信息存儲在內(nèi)存中,最后執(zhí)行 bytecode 字節(jié)碼。JVM 有自己的 instruction set 指令集, 并在運(yùn)行時管理各種內(nèi)存區(qū)域。JVM 包含以下組件:

  • Class Loaders 類加載器
  • Run-Time Data Areas 運(yùn)行時數(shù)據(jù)區(qū)
  • Execution Engine 執(zhí)行引擎

JRE, Java Runtime Environment,即 JAVA 運(yùn)行時環(huán)境,是一系列運(yùn)行 JAVA 應(yīng)用程序所需的軟件組件。JRE 包含以下核心組件:

  • An implementation of a Java Virtual Machine:JVM 的一個實(shí)現(xiàn)
  • Classes required to run the Java programs:運(yùn)行JAVA 應(yīng)用程序需要的基礎(chǔ)類
  • Property Files:配置文件/屬性文件

JDK, Java Development Kit,即 JAVA 開發(fā)工具包,提供了開發(fā)/編譯/調(diào)試/執(zhí)行 JAVA 應(yīng)用程序的環(huán)境和工具。JDK 包含以下核心組件:

  • JRE
  • Development Tools 開發(fā)工具

從上文可以看出,三者之間的關(guān)系是:

  • JDK 包含JRE,JRE又包含JVM;
  • 運(yùn)行JAVA應(yīng)用程序,需要安裝 JRE;
  • 開發(fā)調(diào)試JAVA應(yīng)用程序,需要安裝 JDK;
  • 在JDK8及以前,安裝JDK時,JDK目錄中包含JRE子目錄;
  • 在JDK9及以后,安裝JDK后,默認(rèn)是沒有包含JRE子目錄的,可以通過以下命令生成 JRE 子目錄: bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

JDK8

JDK11

2 常見的各種 JDK builds - openJDK, oracle JDK,Azul Zulu...

  • Java 原名 Oak, 是 Sun Microsystems 公司的 James Gosling 及其團(tuán)隊于 1995 年 5 月推出的 Java 程序設(shè)計語言 和 Java 平臺 的總稱;
  • Sun 在 JavaOne 2006 中宣布將開源 Java,并建立了 Open JDK 社區(qū),隨后 Sun 在 GPL 下陸續(xù)發(fā)布了 Java 類庫的源代碼(除了一些被第三方授權(quán)給 Sun 且 Sun 無法根據(jù) GPL 重新授權(quán)的受限部分之外);
  • OpenJDK 是由 OpenJDK Community 領(lǐng)導(dǎo)的 OpenJDK Project(Java SE 7 - Java SE 9)/ JDK Project(Java SE 10及其以后)產(chǎn)出的 Java SE 的官方開源參考實(shí)現(xiàn),其具體版本的開發(fā)標(biāo)準(zhǔn)是 Java Community Process(JCP) 發(fā)布的 Java Specification Requests(JSR,Java規(guī)范請求),該社區(qū)由 Oracle、IBM 領(lǐng)導(dǎo),成員包括 Alibaba,Amazon,Ampere,Azul,BellSoft,Canonical,F(xiàn)ujitsu,Google,Huawei,Intel,Java Community,JetBrains,London Java Community,Microsoft,Red Hat,SAP,SouJava,SUSE,Tencent,Twitter ,VMWare 等等;
  • OpenJDK 社區(qū)只發(fā)布 OpenJDK 源碼,并不提供可以直接使用的二進(jìn)制文件格式,現(xiàn)在能直接使用的二進(jìn)制格式的 JDK, 都是被不同廠商編譯之后的程序,其中 OpenJDK 官網(wǎng)指向的二進(jìn)制文件的下載地址,實(shí)際是 Oracle’s OpenJDK builds 的下載地址,包括免費(fèi)版本和商業(yè)版本兩個版本:(兩個版本基于相同的代碼,只是一個使用 GPL license,一個使用 oracle的license);

  • 自 Java SE 7開始往后的版本,所有的 JDK 都源自于 Open JDK (OpenJDK 與 其他 JDK 的關(guān)系就和 Linux 與它的眾多發(fā)行版是一樣一樣的);

所以概括起來:

  • OracleJDK 是 Oracle 基于 OpenJDK Project(Java SE 7 - Java SE 9)/ JDK Project(Java SE 10及其以后),在 OpenJDK Community (OpenJDK 社區(qū))的領(lǐng)導(dǎo)下,以 Java Community Process(Java 社區(qū)進(jìn)程)制作的 Java Specification Request(Java 規(guī)范請求)為標(biāo)準(zhǔn),制作出的 OpenJDK 所制作的商業(yè)版構(gòu)建,本質(zhì)上來說,OracleJDK 也是 OpenJDK 的發(fā)行版之一;
  • 目前使用最多的 Java builds 仍舊是 OracleJDK,但其后分別還有 AdoptOpenJDK、Oracle's OpenJDK、Amazon Corretto、Azul Zulu,以及國內(nèi)的 Alibaba Dragonwell、Huawei bisheng JDK、Tencent Kona 等;

3 JAVA SE, JAVA EE,與 Jakarta EE

3.1 JAVA SE

JAVA SE,即 Java Standard Edition, 早期版本稱為 J2SE:

  • JAVA SE 是構(gòu)建所有 JAVA 應(yīng)用程序的基礎(chǔ),其包含的類有 java.lang 包下的所有類,I/O 類,Threading API, RMI 包和類,i18n 國際化類,JDBC API, Collections API (List, Map, Set 等), AWT 和 Swing 類(創(chuàng)建桌面應(yīng)用和applets等),等等;
  • 常見的 JAVA SE 構(gòu)建的JAVA應(yīng)用,有 IntelliJ IDEA IDE, Servlet Containers (如 Tomcat), RDBMS (如 Apache Derby),SQuirreL,等等;
  • 我們通過安裝JDK (如OracleJDK),即可獲得 JAVA SE 的基礎(chǔ)類庫;

3.2 Java EE

Java EE,即 Java Enterprise Edition, 早期版本稱為 J2EE:

  • Java EE 是一系列開發(fā)企業(yè)級 JAVA 應(yīng)用的規(guī)范,這些規(guī)范具體來講包含:Servlet 規(guī)范(處理 HTTP request-response),EJB 規(guī)范 (事務(wù)處理和組件生命周期管理),JMS 規(guī)范 (消息處理),JPA 規(guī)范,等等;
  • Java EE 本身只是一個規(guī)范,只是一系列 API接口,并不包含具體的實(shí)現(xiàn);
  • Java EE 具體的實(shí)現(xiàn),有各種 Java EE 容器,如 GlassFish,WebLogic, WebSphere, Tomcat等來提供;(當(dāng)然了,這些容器在底層使用了 Java SE 中的各種類);
  • Java EE 5 之后,啟動了項(xiàng)目 GlassFish,GlassFish 是Java EE 的官方開源參考實(shí)現(xiàn);
  • 各種 Java EE 容器對 JAVA EE 規(guī)范的實(shí)現(xiàn)不同,且有的只實(shí)現(xiàn)了其中的一部分規(guī)范:比如 Tomcat,Jetty 等只實(shí)現(xiàn)了 Servlet 規(guī)范 (經(jīng)常被稱為JAVA web/servlet 容器),而 GlassFish,WebLogic, WebSphere 等實(shí)現(xiàn)了 JAVA EE 所有規(guī)范;(經(jīng)常被稱為JAVA 應(yīng)用服務(wù)器 JAVA application servers);

3.3 Jakarta EE

Jakarta EE,即 Java Enterprise Edition, 早期版本稱為 J2EE:

  • JAVA EE 的最后一個版本是JAVA EE 8,此后于2017年8月,Oracle 宣布開源 Java EE 并將項(xiàng)目移交給 Eclipse 基金會,由這個開源基金會全面接管 Java EE 的管理和發(fā)展;(將 Java EE 捐贈出去的 Oracle 也因此在 Eclipse 基金會的董事會中占得一席之地);
  • Oracle 移交給 Eclipse 基金會的內(nèi)容,包括:其主導(dǎo)的 Java EE 技術(shù)(規(guī)范),及相關(guān)的 GlassFish 技術(shù)(規(guī)范的參考實(shí)現(xiàn)),技術(shù)兼容性工具包(TCKs:Technology Compatibility Kit),以及“相關(guān)的項(xiàng)目說明文檔”,并希望通過 Eclipse 基金會在開源項(xiàng)目治理、Java EE 及相關(guān)技術(shù)方面的豐富經(jīng)驗(yàn)共同將 Java EE 帶向更美好的未來;
  • 但在移交過程中,Oracle 卻提出了一系列 Eclipse 基金會難以接受的要求,諸如:
  • Oracle 要求由 Eclipse 基金會發(fā)行的產(chǎn)品(如 Eclipse IDE)必須只能捆綁由 Oracle 認(rèn)證(而不是任何其他供應(yīng)商認(rèn)證)的 Java 運(yùn)行時。(這意味著 Eclipse 基金會的產(chǎn)品如 GlassFish 和 Eclipse IDE 將不再是供應(yīng)商中立,從而導(dǎo)致基金會的免稅狀態(tài)可能不再有效,這對基金會而言將是財務(wù)上的災(zāi)難,有可能導(dǎo)致基金會關(guān)閉。更重要的是,這一要求并不是在談判開始時提出的,而是在談判開始很久以后才提出,那個時候交接工作正在進(jìn)行中。外猜測這是 Oracle 對 IBM 開源 OpenJ9 JVM 的反應(yīng),畢竟這對它的 Java 業(yè)務(wù)構(gòu)成了明顯的威脅。)
  • Oracle 要求 Eclipse 基金會不能修改舊的代碼,如需修改則要重命名,包括項(xiàng)目名稱和軟件包的名稱。這意味著現(xiàn)有的應(yīng)用程序無法在沒有重構(gòu)和重新編輯的情況下運(yùn)行在更新后的平臺上。
  • 經(jīng)過許多個月的友善談判,Eclipse 基金會和 Oracle 無法就修改 javax 包命名空間,以及在此前的 Java EE 規(guī)范中曾使用的 Java 商標(biāo)協(xié)議條款達(dá)成一致。而最后達(dá)成的共識就是,Jakarta EE 不能發(fā)布針對基礎(chǔ)庫 javax 的修改包,Jakarta EE 規(guī)范也不能使用包括 Java 商標(biāo)的現(xiàn)有規(guī)范名稱。(由于談判的復(fù)雜性和保密性,Eclipse 基金會和 Oracle 都同意不公開導(dǎo)致談判結(jié)果的原因。不過有消息稱 Oracle 利用了它在董事會的席位去干預(yù)決策。)
  • 移交后,Oracle 出于商標(biāo)權(quán)限制,不允許開源組織用 Java EE 的名號,于是 Eclipse 基金會選出了 "Jakarta EE" 和"Enterprise Profile" 兩個備選名字,經(jīng)過投票,最終前者以64.4%的票數(shù)獲勝,也就是說,Java EE已經(jīng)正式更名為 Jakarta EE;

  • 移交后,Oracle 出于商標(biāo)權(quán)限制,對 javax.* 包命名空間的使用做了各種限制(Jakarta EE 不能發(fā)布針對基礎(chǔ)庫 javax 的修改包:好像是可以創(chuàng)建新的接口/類,但不能創(chuàng)建子包,也不能對原來的接口/類進(jìn)行修改?);
  • Eclipse Jakarta EE project,經(jīng)過各種討論和權(quán)衡,最后決定將 javax.* 包下的所有API 和實(shí)現(xiàn),重命名遷移到 jakarta.* 包命名空間下,從而明確區(qū)分 JAVA EE 和 Jakarta EE,并為后續(xù) Jakarta EE 各種規(guī)范的演進(jìn)掃清障礙;(Jakarta EE “Big Bang” Rename Option:Jakarta EE will rename all of its specifications to use jakarta.* in order to move forward with evolving the platform with features as the cloud-native Java platform.);
  • Jakarta EE 9,實(shí)施了從 javax.* 到 jakarta.* 的包命名空間重命名操作 (事實(shí)上,Jakarta EE 9 中,除了對包命名空間的改動,沒有其它任何大的修改:Functionally speaking, Jakarta EE 9 is still essentially the same as Java EE 8;Jakarta EE 10 will be the first version in which new functionality will appear);

  • 由于 Jakarta EE 9 及以后版本,實(shí)施了包命名空間的修改,所以所有依賴這些 API 規(guī)范的上層應(yīng)用程序,都需要對應(yīng)修改,比如 Tomcat, Websphere,Jboss,等等;(比如 Tomcat 10做了對應(yīng)的修改)

責(zé)任編輯:武曉燕 來源: 明哥的IT隨筆
相關(guān)推薦

2019-01-08 16:26:43

Java EEJ2EEJakarta EE

2021-07-05 06:51:44

Java 企業(yè)版編程

2021-07-26 05:10:13

JavaJakarta EEJSR

2024-05-11 14:49:39

Java EEJakarta影響

2023-07-31 08:21:22

語法校對器Pick

2022-09-09 08:08:28

開源項(xiàng)目服務(wù)

2020-11-30 13:10:39

MySQL安全服務(wù)器

2021-08-06 11:50:49

Linux 字節(jié)對齊Linux 系統(tǒng)

2018-03-05 08:59:21

Java 開源Oracle

2015-08-20 09:17:36

Java線程池

2015-05-28 14:02:09

JavaJava日志性

2011-12-02 10:32:23

Java

2019-01-07 12:02:02

TCP長連接Java

2024-02-21 07:24:21

微服務(wù)單體架構(gòu)MVC

2009-06-22 17:05:41

Java EEJava企業(yè)應(yīng)用

2017-12-21 08:06:40

2018-05-31 13:50:30

Java高并發(fā)

2021-05-17 08:18:35

Java內(nèi)存模型JMM

2012-05-31 09:53:38

IT風(fēng)云15年

2014-06-06 16:08:17

初志科技
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 精品国产乱码久久久久久图片 | 日韩欧美在线观看 | 国产精品亚洲精品日韩已方 | 91原创视频 | 日本一二区视频 | 精品一二三区在线观看 | 亚洲精品456 | 久久新 | 18性欧美 | 久久国产一区 | 日本成人午夜影院 | 一区二区三区视频在线免费观看 | 黄网站在线播放 | 中文字幕免费在线 | 国产精品一区二区在线 | 一区二区久久 | 亚洲网站在线观看 | 亚洲综合大片69999 | 日韩精品一区二区三区中文字幕 | 久久精品久久综合 | 久久精品成人 | 国产成人久久精品一区二区三区 | 成年人黄色一级毛片 | 亚州精品天堂中文字幕 | 国产精品视频999 | 黄色国产在线视频 | 久久网日本 | 精品三区 | 欧洲妇女成人淫片aaa视频 | 亚洲在线成人 | 亚洲精品在线播放 | 91直接看 | 久久久精品视频一区二区三区 | 国产精品久久久爽爽爽麻豆色哟哟 | 中文字幕一区二区三区在线视频 | 精品1区2区3区4区 | 日韩国产高清在线观看 | 日韩精品免费视频 | 国产线视频精品免费观看视频 | 天堂一区二区三区 | 亚洲一区中文字幕 |