

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Amazon Q Developer が Java 言語アップグレードのコードを変換する仕組み
<a name="how-CT-works"></a>

コードを変換するために、Amazon Q Developer はプロジェクトのコード言語バージョンのアップグレードに使用する変換プランを生成します。コードを変換すると、変換の概要とファイルの差分が表示され、変更を受け入れる前に内容を確認できます。Amazon Q Developer は、アップグレードされたコードにターゲット JDK との互換性を持たせるための必要最小限の変更を行うため、プロジェクトのライブラリと依存関係をアップグレードするには追加の変換が必要です。以下のセクションでは、Amazon Q が変換を実行する方法について詳しく説明します。

## コードをビルドし、変換プランを作成する
<a name="build-code-create-plan"></a>

コードの変換を開始するために、Amazon Q はプロジェクトをローカルでビルドし、ソースコード、プロジェクトの依存関係、ビルドログを含むビルドアーティファクトを生成します。

ビルドアーティファクトを生成した後、Amazon Q は安全なビルド環境にコードをビルドし、アップグレードするプロジェクトまたはモジュールに合わせてカスタマイズされた変換プランを作成します。変換プランでは、Amazon Q が行おうとしている特定の変更点の概要が説明されます。これには、新しい依存関係バージョン、主要なコード変更、廃止されたコードの代替案が含まれます。こうした変更は、コードの予備ビルドに基づいており、変換中に変更される可能性があります。

## コードを変換する
<a name="transform-code"></a>

コードを変換するために、Amazon Q は変換プランで提案された変更に基づいて、ターゲット Java バージョンへのコードのアップグレードを試みます。変更を行う際には、ソースコード内の既存のユニットテストを再ビルドして実行し、発生したエラーを繰り返し修正します。JDK のアップグレードは、次のソースコードバージョンからターゲットバージョンに行うことができます。
+ Java 8 から 17
+ Java 8 から 21
+ Java 11 から 17
+ Java 11 から 21
+ Java 17 から 21

Amazon Q は、コードをターゲット Java バージョンと互換性を持たせるために必要な最小限の変更を行います。Amazon Q が最小限の JDK アップグレードを実行したら、別の変換を開始して、すべてのサードパーティーの依存関係をアップグレードできます。または、サードパーティーの依存関係とそのバージョンを YAML ファイルで指定して、ライブラリのアップグレード変換中にのみそれらの依存関係をアップグレードすることもできます。

Amazon Q は、コードをアップグレードする際に次の変更を試みます。
+ ターゲット Java バージョンの推奨事項に従って、廃止されたコードコンポーネントを更新する
+ 一般的なライブラリとフレームワークをターゲット Java バージョンと互換性のあるバージョンにアップグレードする。これには、次のライブラリとフレームワークを最新の利用可能なメジャーバージョンに更新することが含まれます。
  + Apache Commons IO 
  + Apache HttpClient 
  + bc-fips 
  + Cucumber-JVM 
  + 休止 
  + jackson-annotations 
  + JakartaEE
  + Javax 
  + javax.servlet 
  + jaxb-api 
  + jaxb-impl 
  + jaxen 
  + jcl-over-slf4j 
  + json-simple 
  + jsr305 
  + junit 
  + junit-jupiter-api 
  + Log4j 
  + Micronaut 
  + Mockito 
  + mockito-core 
  + Okio 
  + PowerMockito 
  + Quarkus 
  + slf4j 
  + slf4j-api 
  + Spring Boot 
  + Spring Framework 
  + Spring Security 
  + Swagger 
  + testng 

**注記**  
クライアント側のビルドでは安定したネットワーク接続が必要であるため、コード変換中にローカルマシンをオフまたは閉じないでください。

## ローカル環境でのコードの構築
<a name="java-local-builds"></a>

変換中、Amazon Q はローカル環境で検証ビルドを実行します。Amazon Q は、サーバー側でコードを複数のステップで変換します。各ステップの後、Amazon Q はローカル環境にコードを送信し、変更をビルドしてテストします。その後、コードをサーバー側に送信して変換を続行します。

ローカル環境のビルドは、Amazon Q がプライベートリソースへのアクセスを必要とするテストを実行できるようにすることで、変換されたコードを検証するのに役立ちます。ローカル環境で AI 生成コードの構築に関連するセキュリティリスクを最小限に抑えるために、Amazon Q は生成するコードを確認し、セキュリティ上の懸念に対応するように更新します。

## 変換の概要を確認し、変更を受け入れる
<a name="review-plan-accept-changes"></a>

変換が完了すると、Amazon Q は、プロジェクト全体がアップグレードされたかどうかを示す最終ビルドのステータスなど、変更の詳細を含む変換の概要を用意します。ビルドログの概要を確認して、Amazon Q がアップグレードされたバージョンでコードをビルドできない原因となった問題を解明することもできます。

変換の概要には、変換プランの提案された変更とコードのアップグレードのために最終的に Amazon Q が行った変更の違い、元のプランになかった追加の変更についても記載されています。

変換の概要を確認したら、Amazon Q が提案している変更をファイル差分ビューで表示できます。Amazon Q が提案するコード変更は、変更を受け入れるまで現在のプロジェクトファイルには影響しません。変換されたコードは、変換が完了してから 30 日後まで使用できます。

## 部分的に成功した変換を完了する
<a name="partially-successful-transformations"></a>

コードベースの複雑さと詳細によっては、変換が部分的に成功する場合があります。これは、Amazon Q がプロジェクト内の特定のファイルやコード領域のみを変換できたことを意味します。この場合、更新された言語バージョンでビルドできるように、プロジェクトの残りのコードを手動で更新する必要があります。

残りのコードを変換するには、IDE で Amazon Q チャットを使用します。Amazon Q に部分的に更新されたファイルを確認し、コンパイルエラーなどの問題に対処するための新しいコードを提供するようにリクエストします。また、[特徴量開発](q-in-IDE-chat.md#develop-code)や [Workspace コンテキスト](workspace-context.md)などの機能を使用して、より多くのプロジェクトをコンテキストとして含め、一度に複数のファイルの提案を取得することもできます。