備註:
- 本教學課程隨附於 Oracle 提供的免費實驗室環境。
- 此範例使用 Oracle Cloud Infrastructure 證明資料、租用戶及區間的範例值。完成實驗室時,請將這些值替代成雲端環境的特定值。
TASK 5:建立 Micronaut 應用程式的原生影像,並部署到 Oracle Cloud
在此實驗室中,您將瞭解如何使用 GraalVM 原生映像檔將您的 Java 應用程式轉換成原生 Linux 執行檔。部署到 Oracle Cloud 中的虛擬機器之後。
預估時間:20 分鐘
任務內容
在此工作中,您將:
- 在 Oracle Cloud 的 JVM 上執行 Micronaut 應用程式
- 建立您 Micronaut 應用程式的原生 Linux 執行檔
- 在 Oracle Cloud 中將 Micronaut 應用程式部署為原生執行檔
- 設定防火牆以允許雲端執行處理的流量 (選擇性)
步驟 1:在 Oracle Cloud 的 JVM 上執行 Micronaut 應用程式
在此步驟中,您將在 Oracle Cloud 中的 JVM (從 JAR 檔案) 傳統部署 Micronaut 應用程式。您要繼續使用 VS 程式碼,其中的 GraalVM Enterprise 22.0.0 設為預設 JDK。
-
前往終端機、新終端機,然後執行此命令來驗證 Java 版本:

java -version隨時您呼叫
java命令時,預設會套用在 GraalVM Enterprise 中啟用的最佳化 Graal JIT 編譯器。 -
您可以將 Java 專案封裝成可執行的 JAR 檔案,並從 VS Code 終端機啟動應用程式,或是呼叫執行主要動作。
-
前往終端機、新終端機,然後執行
mn:run目標:
./mvnw mn:run如果您是使用 Gradle,請執行
run工作:
./gradlew run -
或者,在 VS 程式碼中找到
Application.java類別檔案,按一下 main 方法上方的執行主要:
應用程式從連接埠 8080 開始。請注意啟動它所花費的時間 (預期會在 ~6500 毫秒內開始)。
-
-
終止應用程式:

CTLR +C
步驟 2:建立 Micronaut 應用程式的原生 Linux 執行檔
您可以使用 GraalVM 原生映像檔,將所有 Java 應用程式轉換成原生執行檔。它是一個預先時間的編譯技術,可讓您將 Java 位元組碼轉換成獨立的原生二進位檔 (不需要 JDK 執行),並且是針對特定的目標環境進行設計。
如上所述,為方便使用者,您的虛擬機器上會預先安裝 GraalVM Enterprise 22。相同「原生影像」,會與所有相依程式庫一起新增 (例如,libstdc++-static、glibc、zlib 等)。native-image 公用程式會置於 GraalVM 安裝目錄 ($JAVA_HOME/bin)。
-
在「VS 代碼終端機」視窗中,驗證「原生影像」版本:

native-image --version -
執行此單一命令以建立原生 Linux 執行檔:
- 如果您使用 Maven,請指定
native-image封裝格式:

./mvnw clean package -Dpackaging=native-image- 如果您是使用 Gradle,請執行
nativeImage工作:

./gradlew nativeCompile在某些時間後,名為
ocidemo的原生執行檔就會內建在/target/native-image/目錄中。如果您是使用 Gradle,稱為ocidemo的執行檔將會寫入/build/native/nativeCompile/資料夾。注意:建置可執行檔的時間取決於應用程式大小和複雜性,而且在低電源 VM 上可能需要一些時間。使用配置給此實驗室的 VM 執行處理容量,預期的時間為 5 分鐘。
- 如果您使用 Maven,請指定
「GraalVM 原生映像檔」會建立包含所有應用程式類別、相依程式庫類別、相依 JDK 類別以及應用程式堆集之快照的執行檔案。儘管建立原生影像需要一些時間,其優點包括啟動時間大幅減少,以及減少整體記憶體的使用。
步驟 3:在 OCI 部署您的 Micronaut 應用程式
在上一個步驟中,建立 Micronaut 應用程式的原生 Linux 執行檔。現在,您會在 Oracle Cloud 中部署此原生執行檔,然後比較從 JAR 檔案執行相同應用程式時,以及原生映像檔的啟動時間。
若要將應用程式部署為原生執行檔,請呼叫上一個步驟中產生的二進位檔:
- 如果您使用 Maven:
![]()
./target/ocidemo
- 若您使用 Gradle:
![]()
./build/native/nativeCompile/ocidemo
請注意,啟動這個 Micronaut 微服務所需的速度,比步驟 1 的 JAR 檔案還快多少 (應該從 6500 毫秒跳到 2500 毫秒)。這樣的啟動速度更快,因為執行檔是獨立的二進位檔,不需要 JDK 執行,讓應用程式可以輕鬆散佈。檔案大小也很小。
將 Java 微服務部署為原生執行檔,有助於即時啟動、降低 CPU 和記憶體使用量,讓 GraalVM Enterprise 成為建置雲端原生 Java 應用程式和雲端部署的理想人選。
應用程式目前已順利執行,但若要透過瀏覽器存取應用程式,您必須允許將內送流量傳送至虛擬機器。終止應用程式 CTRL+C,然後繼續下一個步驟。
步驟 4:設定防火牆以允許通往雲端執行處理 (選擇性)
若要確認此伺服器端應用程式在 Oracle Cloud 中執行並以瀏覽器開啟,您必須確保主機防火牆允許對您的虛擬機器進行流量。
-
回到雲端主控台,依序瀏覽至運算和執行處理。
-
當您登入 OCI 主控台時,請瀏覽至運算,然後按一下執行處理。確定您位於必要的區間 (請參閱工作 1 步驟 3)。

-
在主要檢視中尋找 VM 執行處理 (以 graal-workshop-... 開頭的名稱),然後開啟它。
-
在主要 VNIC 區段中,按一下執行處理所連附的子網路 (subnet-01)。
-
在子網路頁面上,按一下內部安全清單。
-
按新增傳入規則並填入下列資料。

此規則可讓所有來源的流量使用連接埠 8080,以便從任何地方連線至應用程式。
-
返回終端機視窗,然後執行下列命令重新啟動執行中 VM 執行處理的防火牆。

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo systemctl reload firewalld -
以原生執行檔重新啟動應用程式。
建立於 Maven:

./target/ocidemo使用 Gradle 建立的:

./build/native/nativeCompile/ocidemo -
使用
http://<SERVER_IP>:8080/pets開啟瀏覽器中的/pet端點的應用程式,以及/owners端點的http://<SERVER_IP>:8080/owners。或者,以 VS 程式碼分割終端機視窗,並使用curl傳送 GET 要求:
curl -i http://<SERVER_IP>:8080/pets
恭喜!您已順利完成此實驗室。
深入瞭解
-
使用 GraalVM 原生映像檔獲得實作實驗室體驗,並執行 GraalVM 原生映像檔快速入門實驗室,然後開始建置雲端原生 Java 應用系統。
-
請查看 GraalVM 企業文件
-
本簡介影片介紹如何運用 Micronaut 和 GraalVM 建立多雲無伺服器應用系統。
若要結束此階段作業,請按一下工具列中的「結束階段作業」按鈕。