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

보안 업데이트를 계속 받고 기술 지원을 받으려면 지원되는 최신 런타임 버전 으로 애플리케이션을 업그레이드해야 합니다. 또한 Google Cloud 서버리스의 최신 발전 기술인 Cloud Run으로 마이그레이션하는 것이 좋습니다. Cloud Run은 표준 환경과 가변형 환경의 최고의 기능을 다양하게 통합하여 App Engine 환경을 개선하도록 설계되었습니다. 기능을 비교하고 마이그레이션 방법을 이해하려면 App Engine 및 Cloud Run 비교 가이드를 참조하세요.

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

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

  • 자바 11 또는 자바 17:

    이러한 런타임은 지원되는 자바 버전입니다. 최신 지원 버전으로 계속 업그레이드하려면 다음을 수행하세요.

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

        runtime: javaVERSION
      

      여기서 VERSIONMAJOR 버전 번호입니다.

      예를 들어 Java 21의 경우 runtime: java21과 같이 21을 지정합니다. 자세한 내용은 Java 런타임 개요를 참조하세요.

    • 기존 번들 서비스를 사용하는 경우 다음 중 하나에서 실행되도록 앱을 업그레이드해야 합니다.

      • 자바 Enterprise 버전 10(EE10 - 기본값, 권장): 자바 EE10은 javax.servlet.* API를 지원하지 않으며 Jakarta 네임스페이스와 같은 새로운 Java 아티팩트를 사용하려면 앱과 타사 종속성을 업데이트해야 합니다.

      • 자바 Enterprise Edition 8(EE8): 자바 EE8에서는 javax.servlet.* API를 사용할 수 있지만 appengine-web.xml 파일에 대한 구성을 약간 변경해야 합니다.

      모든 옵션에 대한 기존 번들 서비스를 위해 자바 21로 업그레이드에서 확인하세요.

기존 번들 서비스를 위해 자바 21로 업그레이드

자바 런타임 호환성

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

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에서 자바 21로 업그레이드를 참조하세요.
EE10 12 21 6.0(권장) 자바 21은 기본적으로 EE10을 실행하도록 구성됩니다. 자바 EE10을 사용하려면 Jakarta 네임스페이스를 포함하도록 애플리케이션 서블릿 및 종속 항목을 업데이트해야 합니다. 자세한 내용은 EE10에서 자바 21로 업그레이드를 참조하세요.

EE10에서 자바 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 네임스페이스에 따라 나머지 애플리케이션 타사 종속 항목을 최신 자바 아티팩트로 업데이트합니다.

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

EE8에서 자바 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>

선택사항: 자바 21에는 가상 스레드에 대한 지원이 포함됩니다. 가상 스레드를 사용 설정하려면 system-properties 태그 내에 appengine.use.virtualthreads 속성을 추가합니다. 예를 들면 <property name="appengine.use.virtualthreads" value="true"/>입니다.