顯示具有 Java 標籤的文章。 顯示所有文章
顯示具有 Java 標籤的文章。 顯示所有文章

2024年3月5日 星期二

[研究]Java : Scan progress is slowing due to JVM garbage collection

[研究]Java : Scan progress is slowing due to JVM garbage collection

2024-03-01

Fortify SCA掃描程式原始碼,16GB RAM 幾乎耗盡。

sourceanalyzer.exe -Xmx10000M -Xss16M 

[warning]: Scan progress is slowing due to JVM garbage collection, which may indicate low memory or low cpu power allocated for GC. For details on making more memory or GC resources available, please consult the user manual.

[警告]:由於 JVM 垃圾收集,掃描進度變慢,這可能表示分配給 GC 的記憶體或 CPU 功率較低。 有關使更多內存或 GC 資源可用的詳細信息,請參閱用戶手冊。

********************************************************************************

User

請推薦解決方法 

[warning]: Scan progress is slowing due to JVM garbage collection, which may indicate low memory or low cpu power allocated for GC. For details on making more memory or GC resources available, please consult the user manual.

ChatGPT

這個警告表明 JVM 垃圾回收(GC)進程正在影響掃描進度,可能是因為內存不足或為 GC 分配的 CPU 功率不足。要解決這個問題,你可以考慮以下幾個方法:

  1. 增加內存分配: 檢查你的應用程序運行的 JVM 配置,確保給 JVM 分配的內存足夠。你可以通過調整 -Xmx 參數增加 Java 虛擬機的最大內存。例如,-Xmx4g 將最大內存設置為 4GB。
  2. 優化垃圾回收設置: 調整垃圾回收相關的參數以優化性能。這包括調整 -Xms 和 -Xmx 之間的比例,以及選擇正確的 GC 算法。例如,如果你的應用程序具有長時間的停頓,你可以考慮切換到 G1 GC 或者其他更適合你的應用程序的算法。
  3. 監控系統資源: 使用監控工具(如JConsole、VisualVM等)來監視系統資源使用情況,特別是內存和 CPU 使用情況。這可以幫助你確定是否需要增加硬件資源來解決問題。
  4. 分析和優化代碼: 優化應用程序代碼以減少對內存和 CPU 的使用。這可能涉及減少對象的創建和優化算法以減少計算量。
  5. 使用分佈式系統: 如果單個服務器無法滿足你的應用程序的需求,考慮將應用程序部署到多個服務器上,並使用負載均衡器來分發流量。

通過實施這些方法中的一個或多個,你應該能夠解決 JVM 垃圾回收對掃描進度的影響。

https://docs.oracle.com/cd/E19957-01/820-0104/gazce/index.html

https://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html

**********

似乎加 RAM 是較好解法,但因某緣故較難。

[研究]哪種發行版 JRE 效能較佳
https://shaurong.blogspot.com/2024/03/jre.html

(完)

[研究]哪種發行版 JRE 效能較佳

[研究]哪種發行版 JRE 效能較佳

2024-03-05

哪一種 distribution 的 JRE 效能較好?

ChatGPT

選擇哪種發行版(distribution)的 Java 執行環境(JRE)在很大程度上取決於你的特定需求和偏好。 不同的發行版可能會針對不同的應用程式場景進行了最佳化,並提供了不同的功能和工具。

以下是一些常見的 Java 發行版:

  • Oracle JDK(Java Development Kit):Oracle JDK 是 Oracle 公司官方發布的 Java 開發工具包,提供了全面的功能和工具支援。 它通常在企業環境中使用,具有較好的效能和穩定性。 但要注意的是,自 Java 11 開始,Oracle JDK 的授權發生了變化,需要購買商業授權才能在商業環境中使用。
  • OpenJDK:OpenJDK 是一個開源的 Java 開發工具包,由全球各個社群共同開發和維護。 它與 Oracle JDK 具有相同的核心程式碼,但通常會稍微落後於 Oracle JDK 的發布。 OpenJDK 提供了免費的使用許可證,可以在商業環境中免費使用。
  • AdoptOpenJDK:AdoptOpenJDK 是一個由社群維護的 OpenJDK 發行版,提供了不同平台上的預編譯二進位。 它致力於提供高品質、免費的 OpenJDK 發行版,並提供了長期支援版本(LTS)和最新版本。
  • Amazon Corretto:Amazon Corretto 是亞馬遜提供的免費 OpenJDK 發行版,專注於提供長期支援和高效能。 它提供了相容 Oracle JDK 的替代方案,並且可以在亞馬遜雲端服務上直接使用。
  • Zulu OpenJDK:Zulu OpenJDK 是由 Azul Systems 提供的 OpenJDK 發行版,提供了廣泛的平台支援和客製化的效能優化。 它提供了免費的使用許可證,並且支援不同的發行版,例如基於 OpenJDK 8、11、17 等的版本。

根據你的特定需求和偏好,你可以選擇適合你的應用程式場景的 Java 發行版。 如果你需要長期支援和穩定性,可以考慮選擇 Oracle JDK、AdoptOpenJDK、Amazon Corretto 或 Zulu OpenJDK 等;如果你更注重開源和免費,可以選擇 OpenJDK 或 AdoptOpenJDK 等。

********************************************************************************

User

  請問各種 distribution 的 JRE 效能排名,從較佳排到較差 ? 包含 Oracle JDK(Java Development Kit), OpenJDK,AdoptOpenJDK,Zulu OpenJDK, Microsoft OpenJDK

ChatGPT

要準確地排名各種 Java 發行版的效能可能有些困難,因為效能取決於多個因素,包括硬體配置、作業系統、應用程式的特性等等。 而且,Java 發行版通常會不斷更新和優化,這也會影響效能。

然而,以下是一些可能的一般性觀察和評估標準:

  1. Oracle JDK:作為官方發行版,Oracle JDK 通常被認為在效能和穩定性方面表現良好。 它經過了嚴格的測試和優化,並且在商業環境中廣泛應用。
  2. Zulu OpenJDK:Zulu OpenJDK 由 Azul Systems 提供,通常也被認為是效能較好的發行版之一。 它提供了廣泛的平台支援和客製化的性能優化。
  3. AdoptOpenJDK:AdoptOpenJDK 是一個由社群維護的 OpenJDK 發行版,通常也被認為是效能良好的選擇之一。 它提供了長期支援版本(LTS)和最新版本,並提供了預先編譯的二進位。
  4. Microsoft OpenJDK:Microsoft OpenJDK 是微軟提供的 OpenJDK 發行版,雖然相對較新,但在效能方面可能會有所最佳化,尤其是在 Windows 平台上。
  5. OpenJDK:作為官方的開源 Java 開發工具包,OpenJDK 通常也會有良好的效能表現。 但由於它是基礎的發行版,可能缺少一些特定平台或特定功能的最佳化。

需要注意的是,以上排名僅供參考,實際的效能可能會因應用程式的特性和環境而有所不同。 建議在選擇 Java 發行版時,根據自己的需求和環境進行評估和測試。

(完)

相關

Oracle Java Downloads
https://www.oracle.com/java/technologies/downloads/

Zulu
https://www.azul.com/downloads/?package=jdk#zulu

AdoptOpenJDK (搬到 Eclipse Adoptium)
https://adoptopenjdk.net/
https://adoptium.net/

Microsoft OpenJDK
https://www.microsoft.com/openjdk


2022年6月17日 星期五

[研究]Microsoft Build of OpenJDK 17.0.3 LTS 下載、安裝

[研究]Microsoft Build of OpenJDK 17.0.3 LTS 下載、安裝

2022-06-17

官方網站

https://www.microsoft.com/openjdk
https://docs.microsoft.com/zh-tw/java/openjdk/download

直接下載
https://aka.ms/download-jdk/microsoft-jdk-17.0.3-windows-x64.msi

安裝很容易,本篇只是做個紀錄。












Microsoft Windows [版本 10.0.20348.707]
(c) Microsoft Corporation. 著作權所有,並保留一切權利。

C:\Users\Administrator>java -version
openjdk version "17.0.3" 2022-04-19 LTS
OpenJDK Runtime Environment Microsoft-32931 (build 17.0.3+7-LTS)
OpenJDK 64-Bit Server VM Microsoft-32931 (build 17.0.3+7-LTS, mixed mode, sharing)

C:\Users\Administrator>


(完)

相關

2021年7月30日 星期五

[研究]AdoptOpenJDK Update Watcher 2.0.2.0 - JAVA, JRE, JDK 自動更新程式

[研究]AdoptOpenJDK Update Watcher 2.0.2.0 - JAVA, JRE, JDK 自動更新程式

2021-07-30

AdoptOpenJDK Update Watcher官方網站
https://github.com/tushev/aojdk-updatewatcher
AdoptOpenJDK Update Watcher 2.0.2.0 於2020-12-29釋出。

Click 圖片可以看 100% 尺寸圖片。



































(完)

2021年7月20日 星期二

[研究]Java安裝與版本切換 (CentOS 8.4 x64)

[研究]Java安裝與版本切換 (CentOS 8.4 x64)

2021-07-20

CentOS 8.4 提供的 Java 版本,不提供單純的 JRE,都是 JDK。


[john@localhost ~]$ yum list | grep java
HdrHistogram-javadoc.noarch                            2.1.11-3.module_el8.4.0+721+9e20c0c2              appstream        
abrt-java-connector.x86_64                             1.1.0-16.el8                                      appstream        
brlapi-java.x86_64                                     0.6.7-32.el8                                      appstream        
byteman-javadoc.noarch                                 4.0.4-2.el8                                       appstream        
directory-maven-plugin-javadoc.noarch                  0.3.1-2.module_el8.4.0+721+9e20c0c2               appstream        
google-noto-sans-javanese-fonts.noarch                 20161022-7.el8.1                                  appstream        
icedtea-web-javadoc.noarch                             1.8.4-4.el8                                       appstream        
jaf-javadoc.noarch                                     1.2.1-5.module_el8.4.0+721+9e20c0c2               appstream        
java-1.8.0-openjdk.x86_64                              1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-accessibility.x86_64                1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-demo.x86_64                         1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-devel.x86_64                        1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-headless.x86_64                     1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-headless-slowdebug.x86_64           1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-javadoc.noarch                      1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-javadoc-zip.noarch                  1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-slowdebug.x86_64                    1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-src.x86_64                          1:1.8.0.292.b10-1.el8_4                           appstream        
java-11-openjdk.x86_64                                 1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-demo.x86_64                            1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-devel.x86_64                           1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-headless.x86_64                        1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-javadoc.x86_64                         1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-javadoc-zip.x86_64                     1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-jmods.x86_64                           1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-src.x86_64                             1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-static-libs.x86_64                     1:11.0.11.0.9-2.el8_4                             appstream        
java-atk-wrapper.x86_64                                0.33.2-6.el8                                      appstream        
javapackages-filesystem.noarch                         5.3.0-1.module_el8.0.0+11+5b8c10bd                appstream        
javapackages-tools.noarch                              5.3.0-1.module_el8.0.0+11+5b8c10bd                appstream        
jmc-core-javadoc.noarch                                8.0.0-2.module_el8.4.0+721+9e20c0c2               appstream        
libguestfs-java.x86_64                                 1:1.40.2-27.module_el8.4.0+783+f8734d30           appstream        
libguestfs-java-devel.x86_64                           1:1.40.2-27.module_el8.4.0+783+f8734d30           appstream        
libguestfs-javadoc.noarch                              1:1.40.2-27.module_el8.4.0+783+f8734d30           appstream        
lz4-java.x86_64                                        1.7.1-14.module_el8.4.0+708+63f8a724              appstream        
lz4-java-javadoc.noarch                                1.7.1-14.module_el8.4.0+708+63f8a724              appstream        
mariadb-java-client.noarch                             2.2.5-3.el8                                       appstream        
owasp-java-encoder.noarch                              1.2.2-3.module_el8.4.0+721+9e20c0c2               appstream        
owasp-java-encoder-javadoc.noarch                      1.2.2-3.module_el8.4.0+721+9e20c0c2               appstream        
postgresql-jdbc-javadoc.noarch                         42.2.3-3.el8_2                                    appstream        
subversion-javahl.noarch                               1.10.2-4.module_el8.3.0+703+ba2f61b7              appstream        
systemtap-runtime-java.x86_64                          4.4-10.el8                                        appstream        
tzdata-java.noarch                                     2021a-1.el8                                       appstream        
[john@localhost ~]$

[john@localhost ~]$ yum list | grep jre

[john@localhost ~]$ yum list | grep jdk
copy-jdk-configs.noarch                                3.7-4.el8                                         appstream        
java-1.8.0-openjdk.x86_64                              1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-accessibility.x86_64                1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-demo.x86_64                         1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-devel.x86_64                        1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-headless.x86_64                     1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-headless-slowdebug.x86_64           1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-javadoc.noarch                      1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-javadoc-zip.noarch                  1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-slowdebug.x86_64                    1:1.8.0.292.b10-1.el8_4                           appstream        
java-1.8.0-openjdk-src.x86_64                          1:1.8.0.292.b10-1.el8_4                           appstream        
java-11-openjdk.x86_64                                 1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-demo.x86_64                            1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-devel.x86_64                           1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-headless.x86_64                        1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-javadoc.x86_64                         1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-javadoc-zip.x86_64                     1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-jmods.x86_64                           1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-src.x86_64                             1:11.0.11.0.9-2.el8_4                             appstream        
java-11-openjdk-static-libs.x86_64                     1:11.0.11.0.9-2.el8_4                             appstream        
[john@localhost ~]$ 

安裝Java,預設會安裝 Java 8 ( 1.8.0)


[john@localhost ~]$ yum -y install java
Error: This command has to be run with superuser privileges (under the root user on most systems).
[john@localhost ~]$ sudo yum -y install java
[sudo] password for john: 
Sorry, try again.
[sudo] password for john: 
Last metadata expiration check: -1 day, 17:46:58 ago on Tue 20 Jul 2021 03:48:03 AM EDT.
Dependencies resolved.
===============================================================================================================================================
 Package                                   Architecture         Version                                          Repository               Size
===============================================================================================================================================
Installing:
 java-1.8.0-openjdk                        x86_64               1:1.8.0.292.b10-1.el8_4                          appstream               335 k
Installing dependencies:
 copy-jdk-configs                          noarch               3.7-4.el8                                        appstream                27 k
 java-1.8.0-openjdk-headless               x86_64               1:1.8.0.292.b10-1.el8_4                          appstream                34 M
 javapackages-filesystem                   noarch               5.3.0-1.module_el8.0.0+11+5b8c10bd               appstream                30 k
 lksctp-tools                              x86_64               1.0.18-3.el8                                     baseos                  100 k
 ttmkfdir                                  x86_64               3.0.9-54.el8                                     appstream                62 k
 tzdata-java                               noarch               2021a-1.el8                                      appstream               192 k
 xorg-x11-fonts-Type1                      noarch               7.5-19.el8                                       appstream               522 k
Enabling module streams:
 javapackages-runtime                                           201801                                                                        

Transaction Summary
===============================================================================================================================================
Install  8 Packages

Total download size: 35 M
Installed size: 119 M
Downloading Packages:
(1/8): copy-jdk-configs-3.7-4.el8.noarch.rpm                                                                   435 kB/s |  27 kB     00:00    
(2/8): javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch.rpm                                   1.6 MB/s |  30 kB     00:00    
(3/8): ttmkfdir-3.0.9-54.el8.x86_64.rpm                                                                        1.9 MB/s |  62 kB     00:00    
(4/8): tzdata-java-2021a-1.el8.noarch.rpm                                                                      2.8 MB/s | 192 kB     00:00    
(5/8): java-1.8.0-openjdk-1.8.0.292.b10-1.el8_4.x86_64.rpm                                                     1.4 MB/s | 335 kB     00:00    
(6/8): xorg-x11-fonts-Type1-7.5-19.el8.noarch.rpm                                                              3.8 MB/s | 522 kB     00:00    
(7/8): lksctp-tools-1.0.18-3.el8.x86_64.rpm                                                                    309 kB/s | 100 kB     00:00    
(8/8): java-1.8.0-openjdk-headless-1.8.0.292.b10-1.el8_4.x86_64.rpm                                            3.2 MB/s |  34 MB     00:10    
-----------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                          2.2 MB/s |  35 MB     00:16     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: copy-jdk-configs-3.7-4.el8.noarch                                                                                     1/1 
  Running scriptlet: java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.x86_64                                                            1/1 
  Preparing        :                                                                                                                       1/1 
  Installing       : lksctp-tools-1.0.18-3.el8.x86_64                                                                                      1/8 
  Running scriptlet: lksctp-tools-1.0.18-3.el8.x86_64                                                                                      1/8 
  Installing       : tzdata-java-2021a-1.el8.noarch                                                                                        2/8 
  Installing       : ttmkfdir-3.0.9-54.el8.x86_64                                                                                          3/8 
  Installing       : xorg-x11-fonts-Type1-7.5-19.el8.noarch                                                                                4/8 
  Running scriptlet: xorg-x11-fonts-Type1-7.5-19.el8.noarch                                                                                4/8 
  Installing       : javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch                                                     5/8 
  Installing       : copy-jdk-configs-3.7-4.el8.noarch                                                                                     6/8 
  Installing       : java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.x86_64                                                            7/8 
  Running scriptlet: java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.x86_64                                                            7/8 
  Installing       : java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64                                                                     8/8 
  Running scriptlet: java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64                                                                     8/8 
  Running scriptlet: copy-jdk-configs-3.7-4.el8.noarch                                                                                     8/8 
  Running scriptlet: java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64                                                                     8/8 
  Verifying        : copy-jdk-configs-3.7-4.el8.noarch                                                                                     1/8 
  Verifying        : java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64                                                                     2/8 
  Verifying        : java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.x86_64                                                            3/8 
  Verifying        : javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch                                                     4/8 
  Verifying        : ttmkfdir-3.0.9-54.el8.x86_64                                                                                          5/8 
  Verifying        : tzdata-java-2021a-1.el8.noarch                                                                                        6/8 
  Verifying        : xorg-x11-fonts-Type1-7.5-19.el8.noarch                                                                                7/8 
  Verifying        : lksctp-tools-1.0.18-3.el8.x86_64                                                                                      8/8 
Installed products updated.

Installed:
  copy-jdk-configs-3.7-4.el8.noarch                                  java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64                        
  java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.x86_64         javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch        
  lksctp-tools-1.0.18-3.el8.x86_64                                   ttmkfdir-3.0.9-54.el8.x86_64                                             
  tzdata-java-2021a-1.el8.noarch                                     xorg-x11-fonts-Type1-7.5-19.el8.noarch                                   

Complete!
[john@localhost ~]$ 

測試


[john@localhost ~]$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
[john@localhost ~]$ 

先安裝 Java 8,再安裝 Java 11 後,測試發先系統仍使用 Java 8

xxx
[john@localhost ~]$ sudo yum -y install java-11
Last metadata expiration check: 0:00:45 ago on Mon 19 Jul 2021 09:49:16 PM EDT.
Dependencies resolved.
================================================================================   
 Package                    Arch     Version                  Repository   Size
================================================================================
Installing:
 java-11-openjdk            x86_64   1:11.0.11.0.9-2.el8_4    appstream   260 k
Installing dependencies:
 java-11-openjdk-headless   x86_64   1:11.0.11.0.9-2.el8_4    appstream    39 M

Transaction Summary
================================================================================
Install  2 Packages

Total download size: 40 M
Installed size: 171 M
Downloading Packages:
(1/2): java-11-openjdk-11.0.11.0.9-2.el8_4.x86_ 2.5 MB/s | 260 kB     00:00    
(2/2): java-11-openjdk-headless-11.0.11.0.9-2.e 2.2 MB/s |  39 MB     00:18    
--------------------------------------------------------------------------------
Total                                           2.1 MB/s |  40 MB     00:19     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: java-11-openjdk-headless-1:11.0.11.0.9-2.el8_4.x86_6   1/1 
  Preparing        :                                                        1/1 
  Installing       : java-11-openjdk-headless-1:11.0.11.0.9-2.el8_4.x86_6   1/2 
  Running scriptlet: java-11-openjdk-headless-1:11.0.11.0.9-2.el8_4.x86_6   1/2 
  Installing       : java-11-openjdk-1:11.0.11.0.9-2.el8_4.x86_64           2/2 
  Running scriptlet: java-11-openjdk-1:11.0.11.0.9-2.el8_4.x86_64           2/2 
  Verifying        : java-11-openjdk-1:11.0.11.0.9-2.el8_4.x86_64           1/2 
  Verifying        : java-11-openjdk-headless-1:11.0.11.0.9-2.el8_4.x86_6   2/2 
Installed products updated.

Installed:
  java-11-openjdk-1:11.0.11.0.9-2.el8_4.x86_64                                  
  java-11-openjdk-headless-1:11.0.11.0.9-2.el8_4.x86_64                         

Complete!
[john@localhost ~]$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
[john@localhost ~]$ 


********************************************************************************

VM快照還原

先安裝  Java 11

xxx
[john@localhost ~]$ sudo yum install -y java-11-openjdk
CentOS Linux 8 - AppStream                      2.4 MB/s | 8.1 MB     00:03    
CentOS Linux 8 - BaseOS                         894 kB/s | 3.6 MB     00:04    
CentOS Linux 8 - Extras                          14 kB/s | 9.8 kB     00:00    
Last metadata expiration check: -1 day, 16:00:04 ago on Tue 20 Jul 2021 05:41:40 AM EDT.
Dependencies resolved.
================================================================================
 Package                  Arch   Version                        Repo       Size
================================================================================
Installing:
 java-11-openjdk          x86_64 1:11.0.11.0.9-2.el8_4          appstream 260 k
Installing dependencies:
 copy-jdk-configs         noarch 3.7-4.el8                      appstream  27 k
 java-11-openjdk-headless x86_64 1:11.0.11.0.9-2.el8_4          appstream  39 M
 javapackages-filesystem  noarch 5.3.0-1.module_el8.0.0+11+5b8c10bd
                                                                appstream  30 k
 lksctp-tools             x86_64 1.0.18-3.el8                   baseos    100 k
 ttmkfdir                 x86_64 3.0.9-54.el8                   appstream  62 k
 tzdata-java              noarch 2021a-1.el8                    appstream 192 k
 xorg-x11-fonts-Type1     noarch 7.5-19.el8                     appstream 522 k
Enabling module streams:
 javapackages-runtime            201801                                        

Transaction Summary
================================================================================
Install  8 Packages

Total download size: 41 M
Installed size: 173 M
Downloading Packages:
(1/8): copy-jdk-configs-3.7-4.el8.noarch.rpm    1.0 MB/s |  27 kB     00:00    
(2/8): javapackages-filesystem-5.3.0-1.module_e 2.3 MB/s |  30 kB     00:00    
(3/8): ttmkfdir-3.0.9-54.el8.x86_64.rpm         2.5 MB/s |  62 kB     00:00    
(4/8): java-11-openjdk-11.0.11.0.9-2.el8_4.x86_ 2.9 MB/s | 260 kB     00:00    
(5/8): xorg-x11-fonts-Type1-7.5-19.el8.noarch.r 4.7 MB/s | 522 kB     00:00    
(6/8): tzdata-java-2021a-1.el8.noarch.rpm       1.1 MB/s | 192 kB     00:00    
(7/8): lksctp-tools-1.0.18-3.el8.x86_64.rpm     389 kB/s | 100 kB     00:00    
(8/8): java-11-openjdk-headless-11.0.11.0.9-2.e 5.2 MB/s |  39 MB     00:07    
--------------------------------------------------------------------------------
Total                                           4.4 MB/s |  41 MB     00:09     
warning: /var/cache/dnf/appstream-a520ed22b0a8a736/packages/copy-jdk-configs-3.7-4.el8.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream                      1.6 MB/s | 1.6 kB     00:00    
Importing GPG key 0x8483C65D:
 Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"
 Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
 From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: copy-jdk-configs-3.7-4.el8.noarch                      1/1 
  Running scriptlet: java-11-openjdk-headless-1:11.0.11.0.9-2.el8_4.x86_6   1/1 
  Preparing        :                                                        1/1 
  Installing       : lksctp-tools-1.0.18-3.el8.x86_64                       1/8 
  Running scriptlet: lksctp-tools-1.0.18-3.el8.x86_64                       1/8 
  Installing       : tzdata-java-2021a-1.el8.noarch                         2/8 
  Installing       : ttmkfdir-3.0.9-54.el8.x86_64                           3/8 
  Installing       : xorg-x11-fonts-Type1-7.5-19.el8.noarch                 4/8 
  Running scriptlet: xorg-x11-fonts-Type1-7.5-19.el8.noarch                 4/8 
  Installing       : javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b   5/8 
  Installing       : copy-jdk-configs-3.7-4.el8.noarch                      6/8 
  Installing       : java-11-openjdk-headless-1:11.0.11.0.9-2.el8_4.x86_6   7/8 
  Running scriptlet: java-11-openjdk-headless-1:11.0.11.0.9-2.el8_4.x86_6   7/8 
  Installing       : java-11-openjdk-1:11.0.11.0.9-2.el8_4.x86_64           8/8 
  Running scriptlet: java-11-openjdk-1:11.0.11.0.9-2.el8_4.x86_64           8/8 
  Running scriptlet: copy-jdk-configs-3.7-4.el8.noarch                      8/8 
  Running scriptlet: java-11-openjdk-1:11.0.11.0.9-2.el8_4.x86_64           8/8 
  Verifying        : copy-jdk-configs-3.7-4.el8.noarch                      1/8 
  Verifying        : java-11-openjdk-1:11.0.11.0.9-2.el8_4.x86_64           2/8 
  Verifying        : java-11-openjdk-headless-1:11.0.11.0.9-2.el8_4.x86_6   3/8 
  Verifying        : javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b   4/8 
  Verifying        : ttmkfdir-3.0.9-54.el8.x86_64                           5/8 
  Verifying        : tzdata-java-2021a-1.el8.noarch                         6/8 
  Verifying        : xorg-x11-fonts-Type1-7.5-19.el8.noarch                 7/8 
  Verifying        : lksctp-tools-1.0.18-3.el8.x86_64                       8/8 
Installed products updated.

Installed:
  copy-jdk-configs-3.7-4.el8.noarch                                             
  java-11-openjdk-1:11.0.11.0.9-2.el8_4.x86_64                                  
  java-11-openjdk-headless-1:11.0.11.0.9-2.el8_4.x86_64                         
  javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch             
  lksctp-tools-1.0.18-3.el8.x86_64                                              
  ttmkfdir-3.0.9-54.el8.x86_64                                                  
  tzdata-java-2021a-1.el8.noarch                                                
  xorg-x11-fonts-Type1-7.5-19.el8.noarch                                        

Complete!
[john@localhost ~]$ 

測試

xxx
[john@localhost ~]$ java -version
openjdk version "11.0.11" 2021-04-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.11+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9-LTS, mixed mode, sharing)
[john@localhost ~]$ 

再安裝 Java 8

xxx
[john@localhost ~]$ sudo yum -y install java
Last metadata expiration check: -1 day, 16:01:41 ago on Tue 20 Jul 2021 05:41:40 AM EDT.
Dependencies resolved.
================================================================================
 Package                      Arch    Version                  Repository  Size
================================================================================
Installing:
 java-1.8.0-openjdk           x86_64  1:1.8.0.292.b10-1.el8_4  appstream  335 k
Installing dependencies:
 java-1.8.0-openjdk-headless  x86_64  1:1.8.0.292.b10-1.el8_4  appstream   34 M

Transaction Summary
================================================================================
Install  2 Packages

Total download size: 34 M
Installed size: 118 M
Downloading Packages:
(1/2): java-1.8.0-openjdk-1.8.0.292.b10-1.el8_4 2.8 MB/s | 335 kB     00:00    
(2/2): java-1.8.0-openjdk-headless-1.8.0.292.b1 6.1 MB/s |  34 MB     00:05    
--------------------------------------------------------------------------------
Total                                           5.5 MB/s |  34 MB     00:06     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.   1/1 
  Preparing        :                                                        1/1 
  Installing       : java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.   1/2 
  Running scriptlet: java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.   1/2 
  Installing       : java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64      2/2 
  Running scriptlet: java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64      2/2 
  Verifying        : java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64      1/2 
  Verifying        : java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.   2/2 
Installed products updated.

Installed:
  java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64                             
  java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.x86_64                    

Complete!
[john@localhost ~]$ 

測試,是 Java 8


[john@localhost ~]$ java -version
openjdk version "1.8.0_292"
OpenJDK Runtime Environment (build 1.8.0_292-b10)
OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)
[john@localhost ~]$ 

********************************************************************************

先安裝 Java 8,再安裝 Java 11 後,測試發先系統仍使用 Java 8。

先安裝 Java 11,再安裝 Java 8 後,測試發先系統改用新安裝的Java 8。

********************************************************************************

切換版本

強行指定系統使用的 Java 版本


[john@localhost ~]$ alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-2.el8_4.x86_64/bin/java)
*+ 2           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el8_4.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 1
failed to create /var/lib/alternatives/java.new: Permission denied

[john@localhost ~]$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
   1           java-11-openjdk.x86_64 (/usr/lib/jvm/java-11-openjdk-11.0.11.0.9-2.el8_4.x86_64/bin/java)
*+ 2           java-1.8.0-openjdk.x86_64 (/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el8_4.x86_64/jre/bin/java)

Enter to keep the current selection[+], or type selection number: 1

[john@localhost ~]$ java -version
openjdk version "11.0.11" 2021-04-20 LTS
OpenJDK Runtime Environment 18.9 (build 11.0.11+9-LTS)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9-LTS, mixed mode, sharing)
[john@localhost ~]$ 


(完)