

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Q Developer를 사용하여 Java 버전 업그레이드
<a name="code-transformation"></a>

Amazon Q Developer는 통합 개발 환경(IDE)에서 Java 애플리케이션을 최신 언어 버전으로 업그레이드할 수 있습니다. Amazon Q가 코드를 업그레이드하기 위해 수행할 수 있는 변경 사항에는 더 이상 사용되지 않는 코드 구성 요소 및 API 업데이트와 코드의 라이브러리, 프레임워크 및 기타 종속성 업그레이드가 포함됩니다.

코드를 트랜스포메이션하려면, Amazon Q는 먼저 소스 언어 버전에서 코드를 빌드하고 코드를 트랜스포메이션하는 데 필요한 정보가 있는지 확인합니다. Amazon Q가 코드를 성공적으로 트랜스포메이션한 후 IDE의 변경 사항을 확인하고 수락합니다. Amazon Q Developer는 업그레이드된 코드를 대상 JDK와 호환되는 데 필요한 최소한의 변경을 수행하므로 프로젝트의 라이브러리 및 종속성을 업그레이드하려면 추가 트랜스포메이션이 필요합니다. Amazon Q가 코드를 트랜스포메이션하는 방법에 대한 자세한 내용은 [Amazon Q Developer가 Java 언어 업그레이드를 위한 코드를 트랜스포메이션하는 방법](how-CT-works.md) 섹션을 참조하세요.

**Topics**
+ [지원되는 Java 업그레이드 및 IDE](#supported-languages-IDEs)
+ [1단계: 사전 조건](#java-upgrade-prerequisites)
+ [2단계: 프로젝트 구성](#configure-project)
+ [3단계: 종속성 업그레이드 파일 생성(선택 사항)](#create-dependency-upgrade-file)
+ [4단계: 코드 트랜스포메이션](#transform-code-java)
+ [Amazon Q Developer가 Java 언어 업그레이드를 위한 코드를 트랜스포메이션하는 방법](how-CT-works.md)

## 지원되는 Java 업그레이드 및 IDE
<a name="supported-languages-IDEs"></a>

Amazon Q는 현재 트랜스포메이션을 위해 다음과 같은 Java 소스 코드 버전 및 대상 버전을 지원합니다. 코드를 동일한 Java 버전으로 트랜스포메이션하면 소스 코드 버전의 라이브러리 및 기타 종속성 업그레이드가 포함됩니다.


**지원되는 Java 업그레이드**  

| 소스 코드 버전 | 지원되는 대상 버전 | 
| --- | --- | 
| Java 8  | Java 17 및 Java 21 | 
| Java 11 | Java 17 및 Java 21 | 
| Java 17 | Java 17 및 Java 21  | 
| Java 21 | Java 21  | 

Amazon Q는 다음 IDE에서 Java 업그레이드를 지원합니다.
+ JetBrains IDE의 모듈
+ Visual Studio Code의 프로젝트 및 워크스페이스

## 1단계: 사전 조건
<a name="java-upgrade-prerequisites"></a>

계속하기 전에 [IDE의 Amazon Q 설정](q-in-IDE-setup.md) 단계를 완료했는지 확인하세요.

코드 트랜스포메이션 작업을 시작하기 전에 다음 사전 조건이 충족되는지 확인합니다.
+ 프로젝트는 [지원되는 Java 버전](#supported-languages-IDEs)으로 작성되며 Maven에 구축됩니다.
+ 프로젝트는 IDE에서 Maven을 사용하여 성공적으로 빌드됩니다. 현재 Maven 3.8 이상이 지원됩니다.
+ 프로젝트 소스 JDK는 로컬에서 사용할 수 있으며 소스 코드의 버전입니다. 예를 들어 Java 8 코드를 트랜스포메이션하는 경우 로컬 JDK 설치는 JDK 8이어야 합니다.
+ 프로젝트가 55분 이내에 빌드됩니다.
+ 프로젝트가 올바르게 구성되고 올바른 JDK 버전이 지정됩니다. 자세한 내용은 [2단계: 프로젝트 구성](#configure-project) 단원을 참조하십시오.
+ 프로젝트는 가상 프라이빗 클라우드(VPC) 또는 온프레미스 네트워크를 포함한 프라이빗 네트워크의 리소스에 액세스할 필요가 없습니다. 예를 들어 프로젝트에 네트워크의 데이터베이스에 연결하는 유닛 테스트가 포함된 경우 트랜스포메이션이 실패합니다.
+ 프로젝트는 Java 프로젝트에서 Java 이외의 언어를 패키징하는 플러그인을 사용하지 않습니다. 예를 들어 프로젝트에서 [frontend-maven-plugin](https://github.com/eirslett/frontend-maven-plugin)을 사용하여 Java 소스 코드 외에도 프론트엔드 JavaScript 코드를 실행하는 경우 트랜스포메이션이 실패합니다.
+ 로컬 네트워크는 Amazon Q가 코드를 트랜스포메이션하는 데 사용하는 Amazon S3 버킷에 대한 업로드를 허용합니다. 자세한 내용은 [데이터 경계의 Amazon S3 버킷에 대한 액세스 허용](firewall.md#data-perimeters)을 참조하세요.
+ 애플리케이션은 UTF-8 문자만 사용합니다. 애플리케이션이 non-UTF-8 문자를 사용하는 경우에도 Amazon Q는 코드를 트랜스포메이션하려고 시도합니다.

## 2단계: 프로젝트 구성
<a name="configure-project"></a>

프로젝트를 구성하려면 사용 중인 IDE에 다음 정보를 사용합니다.

### JetBrains에서 프로젝트 구성
<a name="configure-jetbrains"></a>

JetBrains에서 프로젝트를 구성하려면 다음 프로젝트 및 모듈 설정을 지정해야 할 수 있습니다.

모듈이 프로젝트와 동일한 JDK 및 언어 수준을 사용하는 경우 모듈 설정을 업데이트할 필요가 없습니다.
+ 프로젝트 SDK - 프로젝트를 컴파일하는 데 사용되는 JDK입니다.
+ 프로젝트 언어 수준 - 프로젝트에 사용되는 Java 버전입니다.
+ 모듈 SDK - 모듈을 컴파일하는 데 사용되는 JDK입니다.
+ 모듈 언어 수준 - 모듈에 사용되는 Java 버전입니다.
+ Maven Runner JRE - 모듈을 빌드하는 JDK입니다.

**프로젝트 및 모듈 설정 업데이트**

프로젝트 또는 모듈의 SDK 및 언어 수준 설정을 업데이트하려면 다음 단계를 완료하세요.

1. JetBrains IDE에서 **파일**을 선택한 다음 **프로젝트 구조**를 선택합니다.

1. 프로젝트 구조 창이 열립니다. **프로젝트 설정**에서 **프로젝트**를 선택합니다.

   1. 프로젝트 JDK를 업데이트하려면 **SDK** 옆의 드롭다운 목록에서 선택합니다.

   1. 프로젝트 언어를 업데이트하려면 **언어 수준** 옆의 드롭다운에서 선택합니다.

1. **Project Settings**에서 **Modules**를 선택합니다.

   1. 모듈 JDK를 업데이트하려면 **SDK** 옆의 드롭다운 목록에서 선택합니다.

   1. 모듈 언어를 업데이트하려면 **언어 수준** 옆의 드롭다운에서 선택합니다.

자세한 내용은 JetBrains 설명서의 [프로젝트 구조 설정](https://www.jetbrains.com/help/idea/project-settings-and-structure.html) 및 [모듈 구조 설정](https://www.jetbrains.com/help/idea/configure-modules.html)을 참조하세요.

**Maven 설정 업데이트**

Maven Runner JRE를 업데이트하려면 다음 단계를 완료하세요.

1. JetBrains IDE에서 기어 아이콘을 선택한 다음 나타나는 메뉴에서 **설정**을 선택합니다.

1. **설정** 창에서 **빌드, 실행, 배포**를 선택한 다음 **빌드 도구**, **Maven**, **Runner**를 차례로 선택합니다.

1. JRE 필드에서 트랜스포메이션하려는 모듈을 빌드하는 데 사용되는 JDK를 선택합니다.

### VS Code에서 프로젝트 구성
<a name="configure-vsc"></a>

VS Code에서 프로젝트를 구성하려면 프로젝트에 다음이 포함되어야 합니다.
+ 프로젝트 루트 폴더의 `pom.xml` 파일
+ 프로젝트 디렉터리의 `.java` 파일

프로젝트에 Maven 래퍼 실행 파일(macOS용 `mvnw` 또는Windows용 `mvnw.cmd`)이 포함된 경우 프로젝트의 루트에 있는지 확인합니다. Amazon Q는 래퍼를 사용하므로 다른 Maven 구성은 필요하지 않습니다.

Maven 래퍼를 사용하지 않는 경우 Maven을 설치합니다. 자세한 내용은 Apache Maven 설명서에서 [Apache Maven 설치](https://maven.apache.org/install.html)를 참조하세요.

Maven을 설치한 후 `PATH` 변수에 추가합니다. 자세한 내용은 [내 `PATH`에 Maven을 추가하려면 어떻게 해야 합니까?](troubleshooting-code-transformation.md#add-maven-to-path)를 참조하세요. Java `runtime` 변수도 JRE가 아닌 JDK를 가리켜야 합니다. 구성이 올바른지 확인하려면 `mvn -v`를 실행합니다. 출력에는 JDK 경로를 가리키는 Maven 버전과 `runtime` 변수가 표시되어야 합니다.

## 3단계: 종속성 업그레이드 파일 생성(선택 사항)
<a name="create-dependency-upgrade-file"></a>

Amazon Q에 *종속성 업그레이드 파일*을 제공할 수 있습니다. 이 파일은 프로젝트의 종속성과 트랜스포메이션 중 업그레이드할 버전을 나열하는 YAML 파일입니다. 종속성 업그레이드 파일을 제공하여 Amazon Q가 업그레이드할 때 모르는 서드 파티 및 퍼스트 파티 종속성을 지정할 수 있습니다.

퍼스트 파티 종속성은 조직이 유지 관리하고 로컬 또는 조직의 프라이빗 네트워크에서만 사용할 수 있는 라이브러리, 플러그인 및 프레임워크를 나타냅니다. Amazon Q는 로컬 환경에서 빌드를 수행할 때 퍼스트 파티 종속성에 액세스할 수 있습니다. 자세한 내용은 [로컬 환경에서 코드 빌드](how-CT-works.md#java-local-builds) 단원을 참조하십시오. 서드 파티 종속성은 조직에 고유하지 않은 공개적으로 사용 가능한 또는 오픈 소스 종속성입니다.

YAML 파일에서 업그레이드하려는 퍼스트 파티 종속성을 지정할 수 있으며, Amazon Q는 JDK 업그레이드 중에 종속성을 업그레이드합니다(예: Java 8에서 17로). 초기 JDK 업그레이드 후 별도의 트랜스포메이션(17에서 17로 또는 21에서 21로)을 시작하여 서드 파티 종속성을 업그레이드할 수 있습니다.

Amazon Q가 최소 JDK 업그레이드를 수행하면 별도의 트랜스포메이션을 시작하여 모든 서드 파티 종속성을 업그레이드할 수 있습니다. 또는 서드 파티 종속성과 해당 버전을 YAML 파일에 지정하여 라이브러리 업그레이드 트랜스포메이션 중에만 해당 종속성을 업그레이드할 수 있습니다.

Amazon Q는 트랜스포메이션 중에 종속성 업그레이드 파일을 제공하라는 메시지를 표시합니다. 제공하려면 먼저 파일을 올바르게 구성했는지 확인합니다. YAML 파일에는 다음 필드가 필요합니다.
+ name - 종속성 업그레이드 파일의 이름입니다.
+ description(선택 사항) - 종속성 업그레이드 파일 및 트랜스포메이션에 대한 설명입니다.
+ dependencyManagement - 업그레이드할 종속성 및 플러그인 목록을 포함합니다.
+ dependencies - 업그레이드할 라이브러리의 이름과 버전을 포함합니다.
+ plugins - 업그레이드할 플러그인의 이름과 버전을 포함합니다.
+ identifier - 라이브러리, 플러그인 또는 기타 종속성의 이름입니다.
+ targetVersion - 업그레이드할 종속성의 버전입니다.
+ versionProperty(선택 사항) - 정의 중인 종속성의 버전으로, 애플리케이션의 `pom.xml` 파일에 `properties` 태그로 설정됩니다.
+ originType - 종속성이 퍼스트 파티인지 서드 파티인지를 나타내며, FIRST\_PARTY 또는 THIRD\_PARTY에 의해 지정됩니다.

다음은 종속성 업그레이드 YAML 파일의 예와 Amazon Q가 구문 분석하는 데 필요한 구성입니다.

```
name: dependency-upgrade
  
description: "Custom dependency version management for Java migration from JDK 8/11/17 to JDK 17/21"
  
  
dependencyManagement:
  
  dependencies:
  
    - identifier: "com.example:library1"
  
      targetVersion: "2.1.0"
  
      versionProperty: "library1.version"  # Optional
  
      originType: "FIRST_PARTY"   
  
    - identifier: "com.example:library2"
  
      targetVersion: "3.0.0"
  
      originType: "THIRD_PARTY"
  
  plugins:
  
    - identifier: "com.example.plugin"
  
      targetVersion: "1.2.0"
  
      versionProperty: "plugin.version"  # Optional
            
      originType: "THIRD_PARTY"
```

## 4단계: 코드 트랜스포메이션
<a name="transform-code-java"></a>

IDE 설정을 테스트하려면 샘플 프로젝트를 다운로드하여 압축을 풀고 IDE에 대해 다음 단계를 완료합니다. 제안된 변경 사항 및 트랜스포메이션 요약을 볼 수 있는 경우 자체 코드 프로젝트를 트랜스포메이션할 준비가 된 것입니다. 트랜스포메이션에 실패하면 IDE가 올바르게 구성되지 않은 것입니다. 구성 문제를 해결하려면 [2단계: 프로젝트 구성](#configure-project) 및 [문제 해결](troubleshooting-code-transformation.md)을 검토합니다.

**참고**  
코드 트랜스포메이션 중에 로컬 시스템을 끄거나 닫거나 절전 모드로 전환하지 마세요. 초기 및 검증 빌드는 안정적인 네트워크 연결이 필요한 클라이언트 측 환경을 사용합니다.

코드 프로젝트 또는 모듈의 언어 버전을 업그레이드하려면 IDE에 대해 다음 단계를 완료합니다.

------
#### [ JetBrains ]

1. JetBrains에서 업그레이드하려는 모듈을 엽니다. IDE에서 프로젝트를 성공적으로 구축했는지 확인합니다.

1. Amazon Q 로고를 선택하고 열리는 채팅 패널에서 애플리케이션을 변환하도록 Amazon Q에 요청합니다.

1. **애플리케이션 트랜스포메이션** 팝업이 나타납니다. 드롭다운 목록에서 업그레이드할 프로젝트를 선택한 다음 **트랜스포메이션**을 선택합니다.

1. Amazon Q는 업그레이드 종속성 파일을 제공하라는 메시지를 표시합니다. 업그레이드할 종속성 및 버전으로 YAML을 구성한 경우 파일을 추가합니다. Amazon Q는 파일을 검증하여 파일이 올바르게 구성되었는지 확인합니다. 오류가 발생하면 [3단계: 종속성 업그레이드 파일 생성(선택 사항)](#create-dependency-upgrade-file)에 설명된 형식과 필수 필드를 검토합니다.

1. Amazon Q가 트랜스포메이션을 시작합니다. **트랜스포메이션 세부 정보** 탭에서 진행 상황을 볼 수 있습니다.

1. 트랜스포메이션이 완료되면 프로젝트를 업데이트하기 전에 업그레이드된 코드를 확인할 수 있습니다. 새 코드를 보려면 **트랜스포메이션 세부 정보** 탭으로 이동한 다음 **diff 보기**를 선택합니다. 표시되는 **패치 적용** 창에서 파일을 선택하여 소스 코드와 업그레이드된 코드가 포함된 diff 보기를 엽니다.

1. Amazon Q의 변경 사항을 수락하려면 **diff 보기**를 선택하여 **패치 적용** 창을 엽니다. 업데이트된 파일을 모두 선택하고 **확인**을 선택하여 프로젝트를 업데이트합니다.

1. 코드가 업그레이드되고 제안된 다음 단계에 대한 세부 정보를 얻으려면 **트랜스포메이션 세부 정보** 탭에서 **트랜스포메이션 요약 보기**를 선택합니다.

------
#### [ Visual Studio Code ]

1. VS Code에서 업그레이드하려는 프로젝트 또는 작업 영역을 엽니다. IDE에서 프로젝트를 성공적으로 구축했는지 확인하세요.

1. Amazon Q 로고를 선택하고 열리는 채팅 패널에서 애플리케이션을 변환하도록 Amazon Q에 요청합니다.

1. IDE 상단의 검색 창에서 업그레이드할 프로젝트를 선택합니다.

1. Amazon Q가 소스 코드의 버전을 찾을 수 없는 경우 코드 버전을 선택하라는 메시지가 표시됩니다. 소스 코드가 기록되는 버전을 선택한 다음 팝업에서 **트랜스포메이션**을 선택하여 계속 진행합니다.

1. 메시지가 표시되면 JDK `JAVA_HOME` 경로를 입력합니다. 자세한 내용은 [VS Code 프로젝트 구성](#configure-vsc)을 참조하세요.

1. Amazon Q는 업그레이드 종속성 파일을 제공하라는 메시지를 표시합니다. 업그레이드할 종속성 및 버전으로 YAML을 구성한 경우 파일을 추가합니다. Amazon Q는 파일을 검증하여 파일이 올바르게 구성되었는지 확인합니다. 오류가 발생하면 [3단계: 종속성 업그레이드 파일 생성(선택 사항)](#create-dependency-upgrade-file)에 설명된 형식과 필수 필드를 검토합니다.

1. Amazon Q가 트랜스포메이션을 시작합니다. **Transformation Hub** 탭에서 진행 상황을 볼 수 있습니다.

1. 트랜스포메이션이 완료되면 **제안된 변경 사항** 탭이 열립니다. 프로젝트를 업데이트하기 전에 업그레이드된 코드를 확인하려면 **제안된 변경 사항 다운로드**를 선택합니다. 파일을 선택하여 소스 코드와 업그레이드된 코드가 포함된 diff 보기를 엽니다.

1. Amazon Q의 변경 사항을 수락하려면 **제안된 변경 사항** 탭으로 이동하여 **수락**을 선택합니다.

1. 코드가 업그레이드되고 제안된 다음 단계에 대한 세부 정보를 얻으려면 **Transformation Hub**에서 **보기 및 추가 작업** 줄임표 버튼을 선택한 다음 **트랜스포메이션 요약 표시**를 선택합니다.

------