OpenJDK 11的問題,透過圖書和論文來找解法和答案更準確安心。 我們找到下列懶人包和總整理

OpenJDK 11的問題,我們搜遍了碩博士論文和台灣出版的書籍,推薦KevlinHenney,TrishaGee寫的 Java程式設計師應該知道的97件事:來自專家的集體智慧 和楊易的 深入解析Java虛擬機器HotSpot都 可以從中找到所需的評價。

另外網站尋找Oracle JDK 之外好用的OpenJDK. 先說結論,推薦使用 ...也說明:Amazon Corretto 11 ,Amazon Corretto 8. 有Windows msi安裝檔:預設勾選JAVA_HOME、Windows Registry. 有支援MAC OS ...

這兩本書分別來自歐萊禮 和機械工業所出版 。

國立交通大學 資訊科學與工程研究所 蔡淳仁所指導 林祐辰的 符合 Java 8 標準之 InvokeDynamic 指令在 CVM 之實作 (2018),提出OpenJDK 11關鍵因素是什麼,來自於爪哇、虛擬機器、調用。

而第二篇論文國立交通大學 資訊科學與工程研究所 蔡淳仁所指導 顏義洋的 符合JAVA SE8標準CVM之設計與實作 (2018),提出因為有 程式語言、虛擬機器、嵌入式系統的重點而找出了 OpenJDK 11的解答。

最後網站Upgrading From jdk 8 to OpenJDK 11 - Development則補充:Hello community I suggest we use OpenJDK 11 instead of OpenJDK 12 for this issue because the former is LTS though the latter is the latest release.

接下來讓我們看這些論文和書籍都說些什麼吧:

除了OpenJDK 11,大家也想知道這些:

Java程式設計師應該知道的97件事:來自專家的集體智慧

為了解決OpenJDK 11的問題,作者KevlinHenney,TrishaGee 這樣論述:

  行為引起的問題很「簡單」,困難的是由狀態引起的問題 —Edson Yanaga      學習Java慣用寫法並且儲存在大腦的快取記憶體裡 —Jeanne Boyarsky      從JVM績效的觀點看Java程式設計 —Monica Beckwith      垃圾回收機制是你的好朋友 —Holly Cummins      Java之中難以說明的匿名型態 —Ben Evans      浴火重生的Java —Sander Mak      你知道現在幾點嗎? —Christin Gorman      如果你希望精進Java技術能力,這本教戰手冊提供了來自Java生態系統裡多位頂

尖高手根據自身實務經驗淬鍊而出的專家建議。本書鼓勵你學習新技巧、以新方法審視問題、負起工作責任以及努力精通程式設計工藝,藉此精益求精。      《Java程式設計師應該知道的97件事》由資深程式人Kevlin Henney、Trisha Gee彙編,反映出程式人撰寫Java軟體以及他們與軟體開發流程共處時累積的人生經驗。本書邀請多位優秀程式設計師分享他們的集體智慧,不論你的工作是處理舊有系統或是在Java 8釋出之後,穩定整併資料流的變化,本書都期盼他們的智慧能幫助你思考、重新省思Java實務。

符合 Java 8 標準之 InvokeDynamic 指令在 CVM 之實作

為了解決OpenJDK 11的問題,作者林祐辰 這樣論述:

CVM是由昇陽電腦公司所設計的Java virtual machine (JVM)。其主要執行的環境為有網路連結的設備。相較於其它用於嵌入式系統的JVM,CVM的優點除了程式碼本身較小、具有高效能的 Just-In-Time編譯技術、支援基本Java程式執行所需的最小核心 class libraries只要一百二十六個classes、並且是目前能支援最多處理器平台的Java VM。然而昇陽電腦所釋出的開放原始碼版本的CVM僅支援到Java 2 Micro Edition (J2ME)的VM規範,在甲骨文公司收購昇陽電腦之後,他們就停止釋出新版CVM的原始碼了。本論文的主要目的是要修改J2ME

的CVM原始碼,以支援新的JVM規格中InvokeDynamic bytecode的執行。InvokeDynamic指令為Java 7新增的功能,提供使用者一個較簡潔的 method 呼叫界面。特別是在Java 8的標準中,廣泛使用了Lambda表示式進行method 呼叫,而在VM底層,Lambda 表示式會產生出InvokeDynamic的bytecode指令。本論文提出對CVM作修改的方法,使其能夠支援符合Java 8規範之InvokeDynamic指令,並且補上該指令所需要之class library,論文目標是讓修改後的J2ME CVM可以通過OpenJDK 8 內附的lambda

測試並執行包含lambda表示式之Java程式,並進而執行一些 Java 8 的應用程式。

深入解析Java虛擬機器HotSpot

為了解決OpenJDK 11的問題,作者楊易 這樣論述:

很多JVM的底層技術細節你是否只瞭解表面? 面對JVM Crash或性能調優方面的問題時你是否會束手無策? 面對上層Java應用發生的偏離預期的行為是否會不知所措? …… 這本書以源碼分析為基礎,從運行時、垃圾回收器、即時編譯器3個維度全面、深入解析HotSpot VM的底層實現和工作機制,同時與上層的Java語言和庫結合,指導讀者解決JVM開發、JVM調優和JVM排錯方面遇到的各種問題。 廣度與深度兼顧:廣度上涵蓋Graal VM、CDS、Instrumentation、編譯重放、非標準位元組碼、RTM鎖、JIT調試工具、EpsilonGC/ShenandoahGC/ZGC、G1字串去重等

重要知識點;深度上深入解析了C1、C2、G1GC、ObjectMonitor、Mutex、範本解譯器等的底層實現。 全書共 11 章,參考 OpenJDK 社區的劃分方式來組織內容,分為運行時、即時編譯器、垃圾回收器三個部分。   第一部分(第1~6章) 運行時 首先,從Java生態系統的角度,簡單介紹了JDK、JVM、JEP、HotSpot VM、Graal VM,引導讀者快速進入Java虛擬機器的世界;然後從源碼的角度深入解析了HotSpot VM的類可用機制、物件和類、運行時、範本解譯器和併發設施。 第二部分(第7~9章) 即時編譯器 首先重點介紹了即時編譯器技術、編譯理論、編譯器調試

方法等編譯器的基礎知識;然後詳細講解了C1和C2兩個即時編譯器的實現原理、工作機制和優化方法。 第三部分(第10~11章) 垃圾回收器 首先全面介紹了Epsilon GC、Serial GC、Parallel GC、CMS GC、G1 GC、Shenandoah GC、ZGC等各種垃圾回收器,然後重點剖析了G1 GC。 楊易 Java開發工程師,就職于阿裡雲基礎設施部。.熱衷於研究程式設計語言的設計與實現,對Java語言的設計與實現有非常深入的研究,尤其是Java的虛擬機器HotSpot VM,在JVM的開發、調優和排錯方面積累了豐富的經驗。此外,在編譯器領域也有較深厚的

積累。.有著自由軟體精神的開發者,是GitHub中國區followers數量排名前100的開源項目維護者。 第1章 Java大觀園 1 1.1 OpenJDK 1 1.2 JEP 2 1.3 Java虛擬機器 4 1.4 HotSpot VM 5 1.4.1 源碼模組 7 1.4.2 構建和調試 7 1.4.3 回歸測試 12 1.5 Graal VM 14 1.6 本章小結 16 第2章 類可用機制 17 2.1 類的載入 17 2.1.1 位元組碼 17 2.1.2 類載入器 19 2.1.3 文件解析 21 2.2 類的連結 23 2.2.1 位元組碼驗證 24 2

.2.2 位元組碼重寫 24 2.2.3 方法連結 26 2.3 類的初始化 32 2.4 類的重定義 35 2.5 本章小結 36 第3章 對象和類 38 3.1 對象與類 38 3.2 對象 39 3.2.1 創建對象 39 3.2.2 對象頭 41 3.2.3 對象雜湊值 43 3.3 類 44 3.3.1 欄位遍歷 45 3.3.2 虛表 46 3.4 本章小結 48 第4章 運行時 49 4.1 執行緒創生紀 49 4.1.1 容器化支持 51 4.1.2 Java執行緒 52 4.1.3 虛擬機器執行緒 54 4.1.4 編譯器執行緒 57 4.1.5 服務執行緒 58 4.1

.6 計時器執行緒 58 4.2 Java執行緒 58 4.2.1 執行緒啟動 60 4.2.2 執行緒停止 61 4.2.3 睡眠與中斷 63 4.3 棧幀 66 4.4 Java/JVM溝通 68 4.4.1 JNI 69 4.4.2 JavaCalls 72 4.5 Unsafe類 74 4.5.1 堆外記憶體 75 4.5.2 記憶體屏障 75 4.5.3 阻塞和喚醒 76 4.5.4 物件資料修改 76 4.6 本章小結 77 第5章 範本解譯器 78 5.1 解譯器體系 78 5.1.1 C++解譯器行為 78 5.1.2 範本解譯器行為 79 5.2 機器代碼片段 81 5.3

 CodeCache 82 5.4 指令緩存刷新 84 5.5 解譯器生成 86 5.5.1 普通方法入口 86 5.5.2 方法加鎖 89 5.5.3 本地方法入口 90 5.5.4 標準位元組碼 91 5.5.5 非標準位元組碼 106 5.6 本章小結 107 第6章 併發設施 108 6.1 指令重排序 108 6.1.1 編譯器重排序 109 6.1.2 處理器重排序 110 6.2 記憶體模型 112 6.2.1 happens-before記憶體模型 113 6.2.2 Java記憶體模型 114 6.3 基礎設施 116 6.3.1 原子操作 116 6.3.2 ParkEv

ent 116 6.3.3 Parker 118 6.3.4 Monitor 120 6.4 鎖優化 126 6.4.1 偏向鎖 127 6.4.2 基本物件鎖 128 6.4.3 重量級鎖 128 6.4.4 RTM鎖 131 6.5 本章小結 132 第7章 編譯概述 133 7.1 編譯器簡介 133 7.1.1 運行時代碼生成 134 7.1.2 JIT編譯器 135 7.1.3 AOT編譯器 136 7.1.4 JVMCI JIT編譯器 136 7.2 即時編譯技術 137 7.2.1 分層編譯 137 7.2.2 棧上替換 138 7.2.3 退優化 139 7.3 編譯理論基礎

139 7.3.1 中間表示 139 7.3.2 基本塊與控制流圖 140 7.3.3 靜態單賦值 142 7.3.4 規範化 142 7.3.5 值編號 143 7.3.6 自頂向下重寫系統 144 7.3.7 迴圈不變代碼外提概述 144 7.4 調試方法 145 7.4.1 編譯日誌 145 7.4.2 編譯神諭 146 7.4.3 視覺化工具 146 7.5 本章小結 149 第8章 C1編譯器 150 8.1 編譯流程 150 8.1.1 進入C1 150 8.1.2 高級中間表示 152 8.1.3 低級中間表示 153 8.2 從位元組碼到HIR 155 8.2.1 識別基本

塊 155 8.2.2 抽象解釋 156 8.3 HIR代碼優化 158 8.3.1 規範化 158 8.3.2 內聯 159 8.3.3 基本塊優化 160 8.3.4 值編號 160 8.3.5 陣列範圍檢查 162 8.3.6 迴圈不變代碼外提 162 8.4 從HIR到LIR 164 8.4.1 return生成 165 8.4.2 new生成 165 8.4.3 goto生成 166 8.4.4 線性掃描寄存器分配 167 8.5 本章小結 171 第9章 C2編譯器 172 9.1 編譯流程 172 9.1.1 進入C2 172 9.1.2 理想圖 174 9.1.3 理想圖流程

概述 180 9.1.4 C2代碼優化 183 9.1.5 代碼生成流程 185 9.1.6 設置機器代碼 186 9.2 構造理想圖 187 9.2.1 構造示例 187 9.2.2 Identity、Ideal、GVN 191 9.3 機器無關優化 193 9.3.1 IGVN 193 9.3.2 逃逸分析 194 9.3.3 向量化 197 9.4 代碼生成 199 9.4.1 指令選擇 199 9.4.2 圖著色寄存器分配 200 9.5 本章小結 203 第10章 垃圾回收 204 10.1 垃圾回收基礎概述 204 10.1.1 GC Root 205 10.1.2 安全點 20

6 10.1.3 執行緒局部握手 208 10.1.4 GC屏障 209 10.2 Epsilon GC 209 10.2.1 源碼結構 209 10.2.2 EpsilonHeap 210 10.2.3 對象分配 211 10.2.4 回收垃圾 212 10.3 Serial GC 212 10.3.1 弱分代假說 212 10.3.2 卡表 213 10.3.3 Young GC 214 10.3.4 Full GC 218 10.3.5 世界停頓 221 10.4 Parallel GC 221 10.4.1 多執行緒垃圾回收 221 10.4.2 GC工作管理員 223 10.4.3 

並行與併發 226 10.5 CMS GC 227 10.5.1 回收策略 227 10.5.2 物件丟失問題 228 10.5.3 Old GC週期 229 10.5.4 併發模式失敗 234 10.5.5 堆碎片化 235 10.6 G1 GC 235 10.6.1 簡介 235 10.6.2 混合回收 236 10.7 Shenandoah GC 237 10.8 ZGC 239 10.9 本章小結 241 第11章 G1 GC 242 11.1 G1 GC簡介 242 11.1.1 基於Region的堆 242 11.1.2 記憶集RSet 243 11.1.3 停頓預測模型 244

11.2 Young GC 245 11.2.1 選擇CSet 245 11.2.2 清理根集 246 11.2.3 處理RSet 247 11.2.4 對象複製 247 11.3 Mixed GC 248 11.3.1 SATB 249 11.3.2 全域併發標記 251 11.3.3 對象複製 254 11.4 Full GC 254 11.5 字串去重 255 11.6 本章小結 257

符合JAVA SE8標準CVM之設計與實作

為了解決OpenJDK 11的問題,作者顏義洋 這樣論述:

CVM 是由Sun Microsystems為J2ME/CDC標準所開發的一個開源碼JVM (Java virtual machine),它實作了Just-in-Time (JIT) compilation加速功能。CVM廣泛支援各種不同嵌入式處理器,但是只符合Java2的規範,本論文將修改並擴充CVM的架構,以符合Java SE8標準,並且在嵌入式MIPS開發平台上驗證結果。而符合Java 8規格之class library是由OpenJDK所移植而來的。跟原本OpenJDK的HotSpot VM相比,除了可以支援更多的處理器平台,CVM所採用的method-based JIT (Just

In Time Compilation),相對於Hotspot VM需要較小的runtime memory和compilation overhead,更適合在資源有限的嵌入式系統下應用。我們處理CVM不支援的Java 8語法功能以及OpenJDK針對底層JVM銜接設計的接口,以方便用CVM來取代掉原本OpenJDK下的Hotspot VM。後續的工作則是修改擴增CVM內建的函式庫,以達到執行一個開源的伺服器框架:Apache Felix以及Jembench跑分測試的目標。