Java應用程式現代化

[watsonx Code Assistant] {: tag-blue}標準方案

您可以將應用程式現代化為 Liberty。 要現代化您的應用程序,您首先上傳遷移包或建立並分析您的應用程序,然後修復您的應用程式問題。

在開始之前,請設定您的企業Java環境

您可以選擇的應用程式伺服器來源有

  • Apache Tomcat 應用程式伺服器
  • JBOSS 應用程式伺服器
  • Weblogic Application Server
  • WebSphere Application Server 傳統 V6.1
  • WebSphere Application Server 傳統 V7.0
  • WebSphere Application Server 傳統 V8.0
  • WebSphere Application Server 傳統 V8.5.5
  • WebSphere Application Server 傳統 V9.0
  • 其他第三方應用程式伺服器

僅限 Eclipse IDE:為了讓多模組 Java 應用程式達到最佳效果,請確保您在 Eclipse 工作區中將聚合器模組及各子模組匯入為單獨的專案。Watsonx Code Assistant 如果將頂層目錄作為單一專案匯入,就不太可能成功內省您的專案。

完成上傳應用程式遷移包的步驟或分析應用程式的步驟。 完成一組步驟後,您就可以修正遷移中的問題。 遷移捆綁步驟和應用程式分析的解決問題的步驟是相同的。 解決問題後,您將擁有一個現代化的應用程式。

分析程式碼所需的時間

分析您的申請所需的時間各有不同。 以下是典型的時間。

分析所需時間
時間 應用程式詳細資料
幾秒至幾分鐘 少於 100 堂
2 至 10 分鐘 20,000 至 50,000 行代碼
10 分鐘以上 300,000 行代碼

當watsonx Code Assistant分析您的應用程式時,它預設會從程式碼分析中排除一些第三方軟體包。 有關詳細信息,請參閱 從應用程式分析中排除的第三方包

使用遷移包使您的應用程式現代化

以下步驟假設您使用 IBM Cloud® Transformation Advisor版本3.10或更高版本來產生遷移包。 遷移包包含需要解決的現代化問題清單。 它還包含自動生成的配置訊息,以使應用程式能夠在 Liberty 中正常運作。

如果您已經上傳並分析專案的移轉束,上傳新的移轉束會覆蓋現有的分析。

在您將應用程式現代化之前,請先完整建立您的應用程式,以確保您是從已知的良好應用程式建立開始。 此建立方式還可確保類別檔案是最新的原始碼,這是在執行自動化之前的必要條件,自動化會新增 Java 版本升級的變更。

如果您恢復對程式碼的更改,並且想要再次現代化您的應用程序,則必須按一下 「返回」上傳/分析並進行完整分析。

  1. 在 IDE 中,用滑鼠右鍵按一下要進行現代化的應用程式目錄中階層結構中的任何項目。

  2. 使用任一條路徑開始現代化程序。 兩者都是一樣的:

    • 按一下 watsonx Code Assistant,然後按一下 Modernize to Liberty
    • 按一下 Modernize Java Applications,然後按一下 Modernize to Liberty
  3. 在現代化<您的應用程式名稱>頁面上,上傳遷移包。

    IDE 會分析您的專案資料夾,收集有關您的應用程式的信息,然後上傳Transformation Advisor產生的遷移包。

    1. 按一下上傳遷移包

    2. 從清單中選擇應用程式包 .zip 文件,然後按一下“開啟”

      上傳遷移包的過程完成後,Modernize <您的應用程式名稱> 頁面將顯示套件中的以下設定檔:

      • server.xml 是 Liberty 的設定文件,是啟動應用程式所必需的。
      • 僅在為 Liberty 應用程式建立容器映像時才需要 Containerfile
    3. 選擇要新增至專案的文件,然後按一下 Proceed

      • (必需)選擇 server.xml 檔案。
      • (可選)只有當您正在為 Liberty 應用程式建立容器映像時,才選擇 Containerfile 檔案。

    遷移包上傳完成後,將顯示要修復或檢查的問題。

  4. 修復應用程式的問題。

    根據要解決的問題,解決問題的能力可以是自動化的、輔助的或自我指導的。 「附加資訊」 標籤上的問題不需要更改程式碼,但您可能需要驗證或測試它們,並根據需要進行程式碼變更。

分析您的應用程式以使其現代化

以下步驟假設您正在分析您的應用程序,而不是使用Transformation Advisor遷移套件來現代化您的應用程式。 該分析為您提供了要解決的問題清單以及 server.xml 檔案中的有限伺服器配置。 server.xml 檔案包含應用程式所使用的功能清單,但不包含其他設定資訊,例如資料庫連線或 JMS 設定。

如果您恢復對程式碼的更改,並且想要再次現代化您的應用程序,則必須按一下 「返回」上傳/分析並進行完整分析。

  1. 在 IDE 中,用滑鼠右鍵按一下要進行現代化的應用程式目錄中階層結構中的任何項目。

  2. 使用任一條路徑開始現代化程序。 兩者都是一樣的:

    • 按一下 watsonx Code Assistant,然後按一下 Modernize to Liberty
    • 按一下 Modernize Java Applications,然後按一下 Modernize to Liberty
  3. 在現代化<您的應用程式名稱>頁面上,展開分析應用程序,然後按一下開始分析

  4. 選擇分析參數,這些參數定義分析應用程式伺服器所依據的規則。

    1. 選擇應用程式伺服器來源和應用程式伺服器目標。

    2. 您可以選擇變更Java SE 來源,該來源會自動顯示建議值。

      建議值基於watsonx Code Assistant為應用程式伺服器來源所建議的Java SE 版本。 您的應用程式伺服器可能使用與建議版本不同的Java SE 版本。 如果是,則將Java SE 來源變更為應用程式伺服器使用的版本。

      例如,watsonx Code Assistant建議將 Java SE 8 用於WebSphere Application Server V8.5.5即使您的應用程式伺服器可能使用早期版本的Java SE。

      支援的最低Java版本是Java 5。

    3. 選擇Java SE 目標。

    4. 一下「分析」「建置並分析」

      應用程式分析是在應用程式二進位檔案上完成的。 必須在分析開始之前建立應用程式。 您可以自動或手動建立應用程式。

      • 若要自動建立和分析應用程序,請按一下建置和分析
      • 如果您手動建立應用程序,請先建立它,然後按一下 「分析」

      建置並分析您的應用程式後,將顯示要修復或審查的問題。

      當您按一下建立並分析時,應用程式會以其目前的 Java 原始碼版本建立,以便分析 Java 升級問題。 確保 IDE 有 Java 開發套件的 Java 原始碼版本,並已設定,以便 IDE 可以成功建立應用程式。

  5. 修復應用程式的問題。

    根據要解決的問題,解決問題的能力可以是自動化的、輔助的或自我指導的。 「附加資訊」 標籤上的問題不需要更改程式碼,但您可能需要驗證或測試它們,並根據需要進行程式碼變更。

為什麼分析報告中包含.class 檔案,而不是.java 檔案?

當您對二進位檔案 (JAR/WAR/EAR) 執行分析時,問題總是在類別檔案中被發現。 在 watsonx Code Assistant 以外執行二進位掃描器時,無法存取原始碼,因此.class 檔案會包含在分析報告中。 當您匯入遷移計劃,或在 watsonx Code Assistant 內執行分析時,報告會顯示對類別檔案的引用,但 watsonx Code Assistant 會將.class 檔案連結至.java 檔案,而.java 檔案會顯示在 watsonx Code Assistant UI 中。

解決問題並審查您的申請的附加信息

Modernize <您的應用程式名稱> 頁面上列出了以下資訊:

  • 應用程式伺服器來源和應用程式伺服器目標
  • Java SE 版本來源和Java SE 版本目標
  • 技術報告、庫存報告和分析報告的連結
  • 用於修復問題的選項卡(可以是自動修復、輔助修復或自我修復)以及其他資訊。

當您執行自動修復以及在進行 Java 版本目標變更後建立應用程式時,需要目標 Java 開發人員工具包。 確保為您的 IDE 配置了目標 Java 開發人員工具包。

  • Eclipse IDE 擴充功能會自動嘗試從 IDE 中所有配置的 Java 開發人員工具包中尋找與 Java 版本目標相符的正確 Java 開發人員工具包。
  • 在 Visual Studio Code IDE 中,您必須手動變更 Java 開發人員工具包配置。

完成自動修復

如果您的 「自動修復」標籤包含一項或多項修復,請選擇該標籤。

由於watsonx Code Assistant已為您完成修復,因此您無需進行任何程式碼變更。 大語言模型 (LLM) 不用於自動修復。

  1. 展開說明並閱讀它們。
  2. (可選)打開問題以查看問題的描述。
  3. 點擊運行自動修復
    • 自動修復已修復。
    • 外部問題將保留在清單中,直到您更新關聯的依賴項。
  4. 執行自動修復完成後,按一下重建並刷新以更新問題清單。

如果自動修正程式無法執行,並在主控台輸出中產生編譯錯誤,請確定將 maven-compiler 外掛程式的版本更新至 3.13.0 或更新版本。

完成輔助修復

如果您有包含一項或多項修復的 「輔助修復」 選項卡,請選擇該選項卡。

儘管您修復了程式碼,watsonx Code Assistant仍會在聊天中提供有關如何更改程式碼的建議,從而為您提供協助。

針對問題可獲得的幫助程度因問題而異。 輔助修復可以幫助您解決問題,有時一個程式碼建議就可以讓您解決所有或大部分問題。 其他時候,程式碼建議可能就像刪除舊的 API 以防止編譯失敗一樣簡單,並且不需要您採取進一步的操作。 請務必遵循每個輔助固定的步驟,以瞭解每個輔助固定的價值和限制。 在未提供完整程式碼建議的情況下,您可以將輔助修復視為聊天中的開場白。 繼續參與聊天,以加深您對問題及其解決方案的理解。

有關與輔助修復相關的問題列表,請參閱 輔助修復參考

要使用輔助修復:

  1. 展開說明並按照說明進行操作。

  2. 對於每個問題,將其展開。

  3. 按一下「閱讀全文」以展開本期內容。

  4. 按一下問題中列出的檔案。

    檔案會在編輯器中開啟。

  5. 展開問題以查看問題詳細資訊。

  6. 如果在詳細資訊中指示您選擇程式碼片段,請選擇它。

  7. 點擊 “幫助我” 以獲取解決問題的協助。

    如果您使用 Visual Studio Code,則適用下列限制:

    • 確保僅在一個活動編輯器中選擇 Java 程式碼。
    • 確保您在其中選擇 Java 程式碼的活動編輯器與 Modernize to LibertyJava Upgrade 視圖位於不同的編輯器群組中。
  8. 按照聊天中的程式碼建議,讓您修改程式碼來修正問題。

    有時候,聊天會提供資訊回覆,而不是代碼建議。

  9. 當您修復問題時,請按一下「重建」並重新整理,直到所有輔助修復都修復為止。

完成自我修復

如果您有包含一個或多個修復的 「自我引導修復」 選項卡,請選擇該選項卡。

您更改程式碼並確定如何修復程式碼,但您可以從聊天中獲得協助。

  1. 展開說明並按照說明進行操作。

  2. 展開每個問題。

  3. 按一下「閱讀全文」以展開本期內容。

  4. 按一下問題中列出的檔案。

    檔案會在編輯器中開啟。

  5. 按一下 「開始聊天」,每次出現問題時都會顯示該聊天。

    聊天視窗會開啟,讓您可以針對發生的情況獲得協助。 例如,您可以詢問代碼助理目前代碼是做什麼的。 或者,您可以詢問有問題的程式碼是否存在替代實作。

  6. 當您修復問題時,請按一下「重建」並重新整理,直到所有自我導向的修復都完成為止。

解決附加訊息

如果您的 「附加資訊」 標籤上包含一個或多個信息,請選擇該選項卡。

該標籤上所列問題的判定方式與其他標籤上問題的判定方式相同。 雖然附加資訊問題不需要變更您的程式碼,但請檢閱這些問題,以確保您的應用程式在程式碼遷移時能正常運作。

附加資訊可能會指出問題,例如 API 中的細微行為變更,或資料庫或使用者登錄中的連線問題,以及該如何處理。

例如,您有一個資料庫,您的應用程式會連接到該資料庫。 從閱讀這種情況的問題來看,您必須確保為應用程式設定的主機和連接埠在應用程式遷移時是有效且可存取的。

  • 展開說明並按照說明進行操作。

  • 點擊每個問題。

    • 按一下「閱讀全文」以展開本期內容。
    • 點擊問題中列出的文件上的連結以查看程式碼。

處理目前應用程式以外的外部問題

在您進行修復工作時,有些可能會被歸類為目前應用程式以外的外部問題發生。 這些問題的原始碼在指定的存檔中,這些存檔並非目前原始碼應用程式的一部分。

如果存檔是您組織擁有的圖書館:

  1. 您可以將其相關的原始碼作為單獨的應用程式開啟,並使用 watsonx Code Assistant 來修正其中的問題。

  2. 然後,您可以更新目前的應用程式,以使用新的修復版本。

如果存檔是您的組織不擁有的圖書館:

  1. 您需要更新到不包含此問題的版本。 如果沒有這樣的版本,您可能需要使用替代技術。

  2. 您可以與 watsonx Code Assistant 展開對話,以協助確定替代品。 首先,請嘗試詢問 What is the library X used for?Is it easy to replace?。 繼續對話,針對您對圖書館的特定使用方式取得更多資訊。