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

Java中的OpenJDK使用原理

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

前言:

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

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

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

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

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

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

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

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

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

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

  • Java很簡單,面向?qū)ο螅蠹叶己苁煜ぁ?/li>
  • Java是健壯和安全的。
  • Java語言與體系結(jié)構(gòu)無關(guān),JVM是可移植的。
  • Java能夠以高性能執(zhí)行。

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

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

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

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

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

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

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

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

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

Java是健壯和安全的

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

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

Java是高性能的

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

OpenJDK是如何開發(fā)的

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

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

那么他們?yōu)槭裁催x擇OpenJDK呢?因為它是由一個可靠的大型社區(qū)管理的“太空港”。

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

OpenJDK的升級過程

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

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

讓我們深入討論它們。

錯誤修復(fù)

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

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

新功能的實施和過時功能的棄用

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

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

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

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

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

規(guī)范變更

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

釋放節(jié)奏

OpenJDK有三種類型或版本:

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

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

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

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

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

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

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

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

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

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

結(jié)論

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

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

相關(guān)文章

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

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

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

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

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

    SpringRetry重試框架的具體使用

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

    SpringBoot整合mybatis的方法詳解

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

    一次詭異的full gc查找問題全過程

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

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

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

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

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

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

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

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

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

    Java?不同版本的?Switch語句

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

最新評論