欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的OpenJDK使用原理

 更新時(shí)間:2022年06月10日 09:01:12   作者:?sofia??  
這篇文章主要介紹了Java中的OpenJDK使用原理,OpenJDK是Java的開發(fā)工具包,關(guān)于Java為什么要使用它文章作簡(jiǎn)單介紹,感興趣的朋友可以參考一下

前言:

OpenJDK是Java的開發(fā)工具包,Java有著26年的歷史。從任何標(biāo)準(zhǔn)來(lái)看,它都不是一種新的語(yǔ)言,尤其是在行業(yè)中,每隔幾年就會(huì)出現(xiàn)新的解決方案,而且通常比以前的解決方案更好。而最流行的Java實(shí)例OpenJDK已經(jīng)有14年的歷史了。無(wú)論如何,OpenJDK應(yīng)該已經(jīng)被替換了很多次了。但它仍然是世界上最流行的開發(fā)工具之一!這怎么會(huì)發(fā)生?

在本文中,我們將嘗試回答這個(gè)問(wèn)題,深入研究OpenJDK的不斷升級(jí)過(guò)程,討論開源開發(fā)方法,并描述使Java如此獨(dú)特的所有因素。

Java和OpenJDK的特殊之處是什么?

OpenJDK是如何產(chǎn)生的

Java的歷史始于1991年,當(dāng)時(shí)Sun Microsystems的工程師對(duì)C和C++編程語(yǔ)言的限制和API感到失望。該語(yǔ)言的原型最初命名為“Oak”,后來(lái)改名為Java。

它于1994年首次可供下載,1995年首次公開發(fā)布,幾乎立即在當(dāng)時(shí)流行的網(wǎng)景瀏覽器中獲得支持。

2006年,Sun根據(jù)GNU通用公共許可證將Java HotSpot虛擬機(jī)和編譯器作為自由軟件發(fā)布,此后OpenJDK的歷史開始于Java 6和7的開源。在2006年至2008年期間,開放的代碼越來(lái)越多。

現(xiàn)在,OpenJDK的代碼對(duì)任何人都是可用的,并且是由Oracle周圍的一個(gè)大型社區(qū)開發(fā)的。有許多OpenJDK發(fā)行版可用,包括BellSoft構(gòu)建的Liberica JDK,任何人都可以根據(jù)開源方法免費(fèi)探索和使用它。

OpenJDK的工作原理和優(yōu)點(diǎn)是什么

Java誕生時(shí)形成了幾個(gè)目標(biāo),包括:

  • Java很簡(jiǎn)單,面向?qū)ο?,大家都很熟悉?/li>
  • Java是健壯和安全的。
  • Java語(yǔ)言與體系結(jié)構(gòu)無(wú)關(guān),JVM是可移植的。
  • Java能夠以高性能執(zhí)行。

這些原則仍然是OpenJDK流行的原因,因此探索其中每一個(gè)原則并了解它們?nèi)绾斡绊戦_發(fā)人員和最終用戶的生活是很重要的。

Java語(yǔ)言與體系結(jié)構(gòu)無(wú)關(guān),JVM是可移植的

Java代碼與體系結(jié)構(gòu)無(wú)關(guān),這意味著如果編寫正確,它可以在任何設(shè)備上啟動(dòng),從PC到現(xiàn)代微波爐。這是通過(guò)利用Java最重要的特性實(shí)現(xiàn)的一 JVM、Java虛擬機(jī)、用于執(zhí)行應(yīng)用程序的運(yùn)行時(shí)。

通常大多數(shù)編程語(yǔ)言都將代碼編譯成機(jī)器代碼,這對(duì)于任何平臺(tái)都是不同的。Java編譯器的工作方式不同,它創(chuàng)建了特殊的“Java字節(jié)碼”,可以由運(yùn)行在任何系統(tǒng)上的Java虛擬機(jī)執(zhí)行。

JVM反過(guò)來(lái)使用動(dòng)態(tài)編譯器,在應(yīng)用程序執(zhí)行期間編譯代碼。

這種方法允許在完全不同的平臺(tái)上運(yùn)行相同的代碼,只需很少甚至不需要重寫!沒(méi)錯(cuò),如果遵循指導(dǎo)原則,您可以編寫一次程序,然后在任何地方執(zhí)行它。所以如果你想用現(xiàn)代微波爐的觸摸屏玩俄羅斯方塊(或統(tǒng)治世界)一 Java是最簡(jiǎn)單的語(yǔ)言!

但非常嚴(yán)肅地說(shuō),這種稱為“一次編寫,隨處運(yùn)行”的方法允許您不必處理不同的體系結(jié)構(gòu)、操作系統(tǒng)、驅(qū)動(dòng)程序或硬件。您需要做的唯一一件事就是將虛擬機(jī)用于所選的平臺(tái),支持的虛擬機(jī)有很多,還有更多。

Java很簡(jiǎn)單,面向?qū)ο?,大家都很熟?/h3>

現(xiàn)在,Java語(yǔ)法已經(jīng)不再是最簡(jiǎn)單的了……至少現(xiàn)在是這樣,因?yàn)檎陂_發(fā)的許多新特性使代碼更易于讀寫。然而,在構(gòu)思之時(shí),它比競(jìng)爭(zhēng)對(duì)手更有組織性。Java語(yǔ)言規(guī)范是一組規(guī)則,確保所有創(chuàng)新遵循相同的邏輯,并按照J(rèn)ava意識(shí)形態(tài)創(chuàng)建。所有API都是為了相互兼容和Java規(guī)范而創(chuàng)建的,因此它擁有您所需要的一切,不僅可以有效地編寫代碼,還可以檢查和利用其他人的工作。實(shí)現(xiàn)新技術(shù)的新編程方法,如交換機(jī)模式匹配和向量API,正在不斷實(shí)現(xiàn)。

Java是健壯和安全的

作為一個(gè)開源項(xiàng)目,OpenJDK的代碼可供任何想要檢查或增強(qiáng)其安全性的人使用。這意味著新發(fā)現(xiàn)的漏洞將不斷通過(guò)每季度的CPU版本進(jìn)行修補(bǔ),對(duì)于Liberica JDK,我們的支持人員將修復(fù)這些漏洞。

而且,有了廣泛的安全工具選擇,如漏洞掃描器,您可以確保破壞應(yīng)用程序和基礎(chǔ)設(shè)施安全的嘗試不會(huì)成功。

Java是高性能的

有很多方法可以提升您的OpenJDK應(yīng)用程序。JVM中的編譯器優(yōu)化代碼以獲得最佳性能。如果啟動(dòng)時(shí)間更重要,則可以使用GraalVM本機(jī)映像技術(shù),將應(yīng)用程序與運(yùn)行時(shí)打包到單個(gè)可執(zhí)行二進(jìn)制文件中。

OpenJDK是如何開發(fā)的

OpenJDK作為太空競(jìng)賽的基礎(chǔ)

您可以將編程語(yǔ)言與發(fā)射宇宙飛船的太空港進(jìn)行比較。當(dāng)開發(fā)人員構(gòu)建他們的應(yīng)用程序“宇宙飛船”時(shí),他們希望基礎(chǔ)設(shè)施能夠工作并使他們的生活更加輕松。這意味著編程平臺(tái)和運(yùn)行時(shí)功能上的每一個(gè)錯(cuò)誤都會(huì)使他們陷入危險(xiǎn)的境地,因?yàn)樗麄冏龅囊磺卸际菍?duì)的,但發(fā)射失敗了,造成了時(shí)間和金錢的浪費(fèi)。

那么他們?yōu)槭裁催x擇OpenJDK呢?因?yàn)樗怯梢粋€(gè)可靠的大型社區(qū)管理的“太空港”。

讓我們了解一下OpenJDK中的一切工作原理。

OpenJDK的升級(jí)過(guò)程

OpenJDK的開發(fā)可以分為幾個(gè)方向:

  • Bug修復(fù);
  • 新功能的實(shí)施和過(guò)時(shí)功能的棄用;
  • 主要分支機(jī)構(gòu)以外的項(xiàng)目。

讓我們深入討論它們。

錯(cuò)誤修復(fù)

今天,當(dāng)GitHub用于OpenJDK開發(fā)時(shí),這個(gè)過(guò)程大部分是自動(dòng)化的,比以前快了很多。為了報(bào)告新發(fā)現(xiàn)的錯(cuò)誤,開發(fā)人員使用郵件列表來(lái)描述錯(cuò)誤,然后給出一個(gè)數(shù)字。。

當(dāng)開發(fā)人員希望修復(fù)bug時(shí),他們會(huì)在存儲(chǔ)庫(kù)中創(chuàng)建一個(gè)fork,它基本上是整個(gè)項(xiàng)目的副本。然后在這個(gè)fork中,開發(fā)人員編輯代碼的必要部分來(lái)修復(fù)bug。測(cè)試成功后,他們會(huì)發(fā)出將新代碼拉回主分支的請(qǐng)求。然后對(duì)代碼進(jìn)行審查,如果符合要求,則將其實(shí)現(xiàn)到OpenJDK下一版本的主分支中。該系統(tǒng)允許任何開發(fā)人員嘗試修復(fù)任何發(fā)現(xiàn)的bug。

新功能的實(shí)施和過(guò)時(shí)功能的棄用

新特性通常通過(guò)幾個(gè)步驟來(lái)實(shí)現(xiàn)。首先,它是由開發(fā)人員作為概念(草案)提出的。名為OpenJDK lead的管理委員會(huì)成員決定該功能是否值得開發(fā)。

批準(zhǔn)后,草案更新了必要的說(shuō)明和基本實(shí)施建議,成為JEP(JDK增強(qiáng)建議)。它在完成之前經(jīng)歷了許多階段。

實(shí)現(xiàn)過(guò)程本身類似于前面描述的bug修復(fù),是通過(guò)GitHub上的fork分支完成的。由于新功能分階段發(fā)布,此過(guò)程可能需要很長(zhǎng)時(shí)間才能完成。預(yù)覽涉及語(yǔ)義和語(yǔ)法,孵化器一 API更改。在該功能的最終實(shí)現(xiàn)發(fā)布之前,可能會(huì)有多達(dá)3個(gè)預(yù)覽或孵化器。這樣做是為了讓開發(fā)人員能夠測(cè)試新功能,并查看它與新代碼和現(xiàn)有代碼的配合情況,以免破壞已經(jīng)在工作的應(yīng)用程序。通常在兩次預(yù)覽或孵化器之后,新代碼要么以最終形式添加到版本中,要么在被認(rèn)為不安全或性能不佳時(shí)刪除。

主要分支機(jī)構(gòu)以外的項(xiàng)目

一些對(duì)Java功能影響很大的項(xiàng)目是在主分支之外開發(fā)的。如果成功的話,他們會(huì)徹底改變語(yǔ)言,但他們需要很多時(shí)間來(lái)完善。如果需要,它們?nèi)匀豢梢栽诋?dāng)前狀態(tài)下實(shí)現(xiàn)到OpenJDK中,一些開發(fā)人員通常會(huì)這樣做。隨著時(shí)間的推移,它們將成為JEP,并成為下一版本的一部分。

規(guī)范變更

以JSR的形式提出并開發(fā)規(guī)范升級(jí)一 Java規(guī)范請(qǐng)求。這些都要經(jīng)過(guò)由指導(dǎo)Java技術(shù)發(fā)展的公司和人員組成的執(zhí)行委員會(huì)的公開審查和投票。BellSoft與阿里巴巴、亞馬遜、IBM、英特爾和甲骨文等公司也是該委員會(huì)的一員。

釋放節(jié)奏

OpenJDK有三種類型或版本:

  • 之前討論過(guò)的季度CPU發(fā)布。它是在考慮安全性的基礎(chǔ)上構(gòu)建的,由漏洞和bug修復(fù)組成。
  • 技術(shù)發(fā)布一 帶有新功能的編號(hào)版本,主要用于試用。對(duì)于開發(fā)人員來(lái)說(shuō),測(cè)試新技術(shù)、讓他們的應(yīng)用程序?yàn)榕f技術(shù)的棄用做好準(zhǔn)備,以及規(guī)劃他們未來(lái)的工作都很有用。
  • LTS(長(zhǎng)期支持)編號(hào)的版本。這些都是經(jīng)過(guò)測(cè)試的實(shí)現(xiàn),將得到供應(yīng)商最長(zhǎng)時(shí)間的支持。它們是在企業(yè)環(huán)境中開發(fā)和運(yùn)行程序的基礎(chǔ)。

在2017年Java 9發(fā)布之前,可能需要將近5年的時(shí)間才能推出新的編號(hào)版本。從那以后,Oracle轉(zhuǎn)向了新的發(fā)布cadence,每年發(fā)布兩個(gè)編號(hào)的版本,每?jī)赡臧l(fā)布一個(gè)新的LTS版本。Java 17是最新的LTS版本,下一個(gè)版本將于2023年9月發(fā)布Java 21,以下版本將每?jī)赡臧l(fā)布一次。

支持本身由許多供應(yīng)商提供,包括BellSoft,新版本的Liberica JDK與其他主要發(fā)行版同時(shí)發(fā)布。

為什么開源優(yōu)于閉源

必須記住,OpenJDK是一個(gè)開源項(xiàng)目。這很重要,因?yàn)樗蟹忾]源代碼的替代方案本質(zhì)上都是黑盒子。理論上他們會(huì)更安全嗎?對(duì)但從理論上講,它們可能包含大量無(wú)人知曉的漏洞……或者可能除了那些已經(jīng)利用這些漏洞與開發(fā)人員竊取資金或信息的數(shù)據(jù)竊賊之外,沒(méi)有人知道。

在開源中,這是不可能的。你總是知道什么有效,什么無(wú)效,以及為什么。當(dāng)然,惡意參與者可以研究代碼,但大量開發(fā)人員和安全管理人員也可以!所有漏洞都會(huì)很快被發(fā)現(xiàn)并修復(fù)。所有加密算法和安全措施都可供測(cè)試。

還有一件事一 如果你認(rèn)為你能做得更好一 你可以直接去做!這就引出了下一個(gè)問(wèn)題。

為什么有那么多OpenJDK供應(yīng)商和實(shí)現(xiàn)?

除了原始的OpenJDK之外,還有許多供應(yīng)商出售或免費(fèi)提供自己的版本,包括生產(chǎn)Liberica JDK的BellSoft。為什么有這么多可供選擇,有什么區(qū)別?

答案很簡(jiǎn)單一 功能、安全和支持。所有Java開發(fā)工具包,包括Oracle Java SE,都基于OpenJDK。它們都可以按預(yù)期的方式運(yùn)行Java代碼,并且在一切正常的情況下,它們是相似的。當(dāng)出現(xiàn)問(wèn)題時(shí),差異就會(huì)出現(xiàn)。

結(jié)論

OpenJDK是一個(gè)驚人的應(yīng)用程序開發(fā)平臺(tái),它只會(huì)隨著年齡的增長(zhǎng)而變得更好!

到此這篇關(guān)于Java中的OpenJDK使用原理的文章就介紹到這了,更多相關(guān) Java OpenJDK 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java 替換docx文件中的字符串方法實(shí)現(xiàn)

    java 替換docx文件中的字符串方法實(shí)現(xiàn)

    這篇文章主要介紹了java 替換docx文件中的字符串方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • 解決Mybatis返回update后影響的行數(shù)問(wèn)題

    解決Mybatis返回update后影響的行數(shù)問(wèn)題

    這篇文章主要介紹了解決Mybatis返回update后影響的行數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • SpringRetry重試框架的具體使用

    SpringRetry重試框架的具體使用

    在項(xiàng)目開發(fā)中,經(jīng)常會(huì)遇到需要重試的地方。本文主要介紹了SpringRetry重試框架的具體使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • SpringBoot整合mybatis的方法詳解

    SpringBoot整合mybatis的方法詳解

    這篇文章主要為大家詳細(xì)介紹了SpringBoot整合mybatis的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • 一次詭異的full gc查找問(wèn)題全過(guò)程

    一次詭異的full gc查找問(wèn)題全過(guò)程

    這篇文章主要給大家分享介紹了一次詭異的full gc查找問(wèn)題全部過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧啊
    2018-11-11
  • Java 反射機(jī)制的實(shí)例詳解

    Java 反射機(jī)制的實(shí)例詳解

    這篇文章主要介紹了Java 反射機(jī)制的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握反射機(jī)制,需要的朋友可以參考下
    2017-10-10
  • JAVA操作MongoDB數(shù)據(jù)庫(kù)實(shí)例教程

    JAVA操作MongoDB數(shù)據(jù)庫(kù)實(shí)例教程

    MongoDB是一個(gè)文檔型數(shù)據(jù)庫(kù),是NOSQL家族中最重要的成員之一,下面這篇文章主要給大家介紹了關(guān)于JAVA操作MongoDB數(shù)據(jù)庫(kù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • Spring注解 TX聲明式事務(wù)實(shí)現(xiàn)過(guò)程解析

    Spring注解 TX聲明式事務(wù)實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Spring注解 - TX 聲明式事務(wù)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • springboot+feign+Hystrix整合(親測(cè)有效)

    springboot+feign+Hystrix整合(親測(cè)有效)

    本文主要介紹了springboot+feign+Hystrix整合,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-11-11
  • Java?不同版本的?Switch語(yǔ)句

    Java?不同版本的?Switch語(yǔ)句

    本文主要介紹了Java不同版本的Switch語(yǔ)句,自Java13以來(lái),Switch表達(dá)式就被添加到Java核心庫(kù)中,下面我們將介紹舊的Java?Switch語(yǔ)句和新的Switch語(yǔ)句的區(qū)別,需要的朋友可以參考一下
    2022-06-06

最新評(píng)論