기존 애플리케이션 업그레이드

보안 업데이트를 계속 받고 기술 지원을 받으려면 애플리케이션을 지원되는 최신 런타임 버전으로 업그레이드해야 합니다.

기존 앱을 업그레이드하는 프로세스는 앱에서 현재 사용하는 런타임 버전에 따라 다릅니다.

  • 자바 8: 지원되는 최신 자바 버전으로 앱을 마이그레이션해야 합니다. Java 8은 2024년 1월 31일에 지원을 종료합니다. 기존 Java 8 애플리케이션은 계속 실행되고 트래픽을 수신합니다. 그러나 지원 종료 날짜 이후에 런타임을 사용하는 새 애플리케이션을 배포하거나 기존 애플리케이션을 업데이트할 수 없습니다.

  • Java 2세대 런타임 (지원 종료 후): 지원되는 Java 버전으로 업그레이드하려면 다음을 실행합니다.

    • 앱을 실행할 Java 버전을 지정하여 app.yaml 파일을 업데이트합니다. 예를 들면 다음과 같습니다.

        runtime: javaVERSION
      

      여기서 VERSIONMAJOR 버전 번호입니다. 예를 들어 최신 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
      

      여기서 VERSIONMAJOR 버전 번호입니다. 예를 들어 최신 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 런타임 호환성

다음 표를 참조하여 Jetty 및 서블릿 버전과 호환되는 Java 버전을 확인하세요.

Enterprise 버전(EE) Jetty 버전 자바 버전 서블릿 호환성
EE7 9.4 11 2.5 또는 3.1
EE7 9.4 17 2.5 또는 3.1
EE8 12 21 2.5 이상 자바 EE8은 자바 EE6 이상과 하위 호환됩니다. 자세한 내용은 EE8에서 Java 21로 업그레이드를 참조하세요.
EE10 12 21 6.0(권장) Java 21은 기본적으로 EE10을 실행하도록 구성됩니다. Java EE10을 사용하려면 Jakarta 네임스페이스를 포함하도록 애플리케이션 서블릿 및 종속 항목을 업데이트해야 합니다. 자세한 내용은 EE10에서 자바 21로 업그레이드를 참조하세요.

EE10에서 Java 21로 업그레이드

Enterprise 버전 10(EE10)에서 자바 21을 사용하려면 Jakarta 네임스페이스를 포함하도록 Maven 및 Gradle 파일의 애플리케이션 서블릿 및 종속 항목을 업그레이드해야 합니다.

  1. 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>
    
  2. 애플리케이션 서블릿 및 종속 항목 이름을 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 {
        ......
    
  3. Jakarta 네임스페이스에 따라 남은 애플리케이션 타사 종속 항목을 새로운 Java 아티팩트로 업데이트합니다.

  4. 선택사항: Java 21에는 가상 스레드 지원이 포함됩니다. 가상 스레드를 사용 설정하려면 appengine-web.xml 파일의 system-properties 태그 내에 appengine.use.virtualthreads 속성을 추가합니다.

EE8에서 Java 21로 업그레이드

Jetty 12는 자바 EE6 이상에 대한 하위 호환성을 제공하므로 주요 애플리케이션 구성 변경 없이 자바 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>
      <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"/>입니다.