보안 업데이트를 계속 받고 기술 지원을 받으려면 애플리케이션을 지원되는 최신 런타임 버전으로 업그레이드해야 합니다.
기존 앱을 업그레이드하는 프로세스는 앱에서 현재 사용하는 런타임 버전에 따라 다릅니다.
- 자바 8: 지원되는 최신 자바 버전으로 앱을 마이그레이션해야 합니다. Java 8은 2024년 1월 31일에 지원을 종료합니다. 기존 Java 8 애플리케이션은 계속 실행되고 트래픽을 수신합니다. 그러나 지원 종료 날짜 이후에 런타임을 사용하는 새 애플리케이션을 배포하거나 기존 애플리케이션을 업데이트할 수 없습니다. 
- Java 2세대 런타임(지원 종료 후): 지원되는 Java 버전으로 업그레이드하려면 다음을 수행합니다. - 앱을 실행할 Java 버전을 지정하여 - app.yaml파일을 업데이트합니다. 예를 들면 다음과 같습니다.- runtime: javaVERSION- 여기서 VERSION은 - MAJOR버전 번호입니다. 예를 들어 최신 Java 버전인 Java 21을 사용하려면- 21을 지정합니다. 자세한 내용은 Java 런타임 개요를 참조하세요.
- 기존 번들 서비스를 사용하는 경우 다음 중 하나에서 실행되도록 앱을 업그레이드해야 합니다. - Java Enterprise 버전 10(EE10 - 기본값, 권장): Java EE10은 - javax.servlet.*API를 지원하지 않으며- Jakarta네임스페이스와 같은 새로운 Java 아티팩트를 사용하려면 앱과 서드 파티 종속성을 업데이트해야 합니다.
- Java Enterprise Edition 8(EE8): Java EE8을 사용하면 - javax.servlet.*API를 사용할 수 있지만- appengine-web.xml파일에 대한 구성을 약간 변경해야 합니다.- 모든 옵션에 대한 기존 번들 서비스를 위해 자바 21로 업그레이드에서 확인하세요. 
 
 
- Java 17: - App Engine은 이 버전을 지원합니다. 계속해서 최신 지원 버전으로 업그레이드하려면 다음을 수행합니다. - 앱을 실행할 Java 버전을 지정하여 - app.yaml파일을 업데이트합니다. 예를 들면 다음과 같습니다.- runtime: javaVERSION- 여기서 VERSION은 - MAJOR버전 번호입니다. 예를 들어 최신 Java 버전인 Java 21을 사용하려면- 21을 지정합니다. 자세한 내용은 Java 런타임 개요를 참조하세요.
- 기존 번들 서비스를 사용하는 경우 다음 중 하나에서 실행되도록 앱을 업그레이드해야 합니다. - Java Enterprise 버전 10(EE10 - 기본값, 권장): Java EE10은 - javax.servlet.*API를 지원하지 않으며- Jakarta네임스페이스와 같은 새로운 Java 아티팩트를 사용하려면 앱과 서드 파티 종속성을 업데이트해야 합니다.
- Java Enterprise Edition 8(EE8): Java EE8을 사용하면 - javax.servlet.*API를 사용할 수 있지만- appengine-web.xml파일에 대한 구성을 약간 변경해야 합니다.
 - 모든 옵션에 대한 기존 번들 서비스를 위해 자바 21로 업그레이드에서 확인하세요. 
 
기존 번들 서비스를 위해 자바 21로 업그레이드
Java 런타임 호환성
다음 표를 참고하여 서블릿 버전과 호환되는 Java 버전을 확인하세요.
| Enterprise 버전(EE) | 자바 버전 | 서블릿 | 호환성 | 
|---|---|---|---|
| EE7 | 11 | 2.5 또는 3.1 | EE7에는 커뮤니티 지원이 없습니다. Java 11은 지원 종료되었습니다. 앱을 업그레이드하여 최신 버전의 Java를 사용하는 것이 좋습니다. | 
| EE7 | 17 | 2.5 이상 | EE7에는 커뮤니티 지원이 없습니다. 앱을 업그레이드하여 EE8을 사용하는 것이 좋습니다. | 
| EE8 | 17/21 | 2.5 이상 | 자바 EE8은 자바 EE6 이상과 하위 호환됩니다. 자세한 내용은 EE8에서 Java 21로 업그레이드를 참조하세요. | 
| EE10 | 17/21 | 6.0(권장) Java 21은 기본적으로 EE10을 실행하도록 구성됩니다. | Java EE10을 사용하려면 Jakarta네임스페이스를 포함하도록 애플리케이션 서블릿 및 종속 항목을 업데이트해야 합니다. 자세한 내용은 EE10에서 자바 21로 업그레이드를 참조하세요. | 
EE10에서 Java 21로 업그레이드
Enterprise 버전 10(EE10)에서 자바 21을 사용하려면 Jakarta 네임스페이스를 포함하도록 Maven 및 Gradle 파일의 애플리케이션 서블릿 및 종속 항목을 업그레이드해야 합니다.
- web.xml구성 파일의 버전 번호를- version=6.0으로 변경합니다. 예를 들면 다음과 같습니다.- <web-app xmlns="https://jakarta.ee/xml/ns/jakartaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_6_0.xsd" version="6.0"> ... </web-app>
- 애플리케이션 서블릿 및 종속 항목 이름을 - javax.servlet.*에서- jakarta.servlet.*로 바꿉니다.- import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @WebServlet(name = "viewer", urlPatterns = {"/view"}) public class MyServlet extends HttpServlet { ......
- Jakarta네임스페이스에 따라 남은 애플리케이션 타사 종속 항목을 새로운 Java 아티팩트로 업데이트합니다.
- appengine-web.xml파일에 다음 시스템 속성을 추가합니다.- <?xml version="1.0" encoding="utf-8"?> <appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> <runtime>java21</runtime> <!-- or java17 --> <system-properties> <property name="appengine.use.EE10" value="true"/> </system-properties> <app-engine-apis>true</app-engine-apis> </appengine-web-app>
- 선택사항: Java 21에는 가상 스레드 지원이 포함됩니다. 가상 스레드를 사용 설정하려면 - appengine-web.xml파일의- system-properties태그 내에- appengine.use.virtualthreads속성을 추가합니다.
EE8에서 Java 17 또는 21로 업그레이드
EE8은 Java EE6 이상에 대한 하위 호환성을 제공하므로 주요 애플리케이션 구성 변경 없이 Java EE8에서 javax.servlet.* API를 계속 사용할 수 있습니다. 자바 EE8에서 애플리케이션을 실행하려면 appengine-web.xml 파일에 기본값이 아닌 app.engine.use.EE8 구성을 사용하여 새 system-properties 태그를 선언해야 합니다.
   <?xml version="1.0" encoding="utf-8"?>
   <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
      <runtime>java21</runtime> <!-- or java17 -->
      <system-properties>
        <property name="appengine.use.EE8" value="true"/>
      </system-properties>
      <app-engine-apis>true</app-engine-apis>
   </appengine-web-app>
선택사항: Java 21에는 가상 스레드 지원이 포함됩니다. 가상 스레드를 사용 설정하려면 system-properties 태그 내에서 appengine.use.virtualthreads 속성을 추가합니다. 예를 들면 <property name="appengine.use.virtualthreads" value="true"/>입니다.