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

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

기존 애플리케이션을 업그레이드하는 프로세스는 애플리케이션에서 사용하는 런타임 버전에 따라 다릅니다.

  • Java 8: 지원되는 최신 Java 버전으로 애플리케이션을 마이그레이션합니다. Java 8은 2024년 1월 31일에 지원이 종료되었으며 2026년 1월 31일에 지원 중단됩니다. 지원 중단 후에는 조직에서 이전에 조직 정책을 사용하여 레거시 런타임의 배포를 다시 사용 설정한 경우에도 Java 8 애플리케이션을 배포할 수 없습니다. 기존 Java 8 애플리케이션은 지원 중단 날짜 이후에도 계속 실행되고 트래픽을 수신합니다.

  • Java 11: 지원되는 최신 Java 버전으로 애플리케이션을 업그레이드합니다. Java 11은 2024년 10월 31일에 지원이 종료되었으며 2025년 10월 31일에 지원 중단됩니다. 지원 중단 후에는 Java 11 애플리케이션을 배포할 수 없습니다. 기존 Java 11 애플리케이션은 지원 중단 날짜 이후에도 계속 실행되고 트래픽을 수신합니다.

  • 지원되는 2세대 런타임(Java 17 및 Java 21):

    App Engine은 Java 17, Java 21과 같은 2세대 Java 런타임 버전을 지원합니다. Java 25(프리뷰)로 업그레이드하려면 다음 단계를 따르세요.

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

        runtime: javaVERSION
      

      여기서 VERSIONMAJOR 버전 번호입니다. 예를 들어 최신 Java 버전인 Java 25(프리뷰)를 사용하려면 25를 지정합니다. 자세한 내용은 Java 런타임 개요를 참조하세요.

    • 기존 번들 서비스를 사용하는 경우 다음 중 하나에서 실행되도록 애플리케이션을 업그레이드하세요.

      • Java Enterprise Edition 11(EE11): EE 11은 javax.servlet.* API를 지원하지 않으며 Jakarta 네임스페이스와 같은 새로운 Java 아티팩트를 사용하려면 애플리케이션과 서드 파티 종속 항목을 업데이트해야 합니다. Java 25(프리뷰)는 기본적으로 EE 11에서 실행되며 EE 10을 지원하지 않습니다.

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

기존 번들 서비스를 위해 지원되는 Java 버전으로 업그레이드

Java 런타임 호환성

다음 표를 참고하여 서블릿 버전과 호환되는 Java 버전을 확인하세요. 진입점 기능, 시스템 속성 구성, 결과 Jetty 지원, 호환되는 EE 버전에 대한 자세한 내용은 진입점 기능을 참조하세요.

Enterprise 버전(EE) 자바 버전 서블릿 호환성
EE7 11 2.5 또는 3.1 EE7에는 커뮤니티 지원이 없습니다. Java 11은 지원 종료되었습니다. 앱을 업그레이드하여 최신 버전의 Java를 사용하는 것이 좋습니다.
EE7 17 2.5 이상 EE7에는 커뮤니티 지원이 없습니다. 앱을 업그레이드하여 EE 8 이상 버전을 사용하는 것이 좋습니다.
EE 8 17/21/25(프리뷰) 2.5 이상 자바 EE 8은 자바 EE6 이상과 하위 호환됩니다. 자세한 내용은 호환되는 Enterprise Edition(EE) 버전에서 Java 업그레이드를 참고하세요.
EE 10 17/21 6.0(기본값, 권장). Java 21은 기본적으로 EE 10을 실행하도록 구성됩니다. Java EE 10을 사용하려면 Jakarta 네임스페이스를 포함하도록 애플리케이션 서블릿 및 종속 항목을 업데이트하세요. 자세한 내용은 호환되는 Enterprise Edition(EE) 버전에서 Java 업그레이드를 참고하세요. EE10에서는 Java 25(프리뷰)를 사용할 수 없습니다.
EE 11 25 6.1(기본값, 권장). Java 25(프리뷰)는 기본적으로 EE 11을 실행하도록 구성됩니다. Java EE 11을 사용하려면 Jakarta 네임스페이스를 포함하도록 애플리케이션 서블릿 및 종속 항목을 업데이트하세요. 자세한 내용은 호환되는 Enterprise Edition(EE) 버전에서 Java 업그레이드를 참고하세요.

호환되는 Enterprise Edition(EE) 버전에서 Java 업그레이드

Enterprise Edition 11(EE 11)에서 Java 25(프리뷰)를 사용하거나 Enterprise Edition 10(EE 10)에서 Java 21을 사용하려면 Jakarta 네임스페이스를 포함하도록 Maven 및 Gradle 파일의 애플리케이션 서블릿 및 종속 항목을 업그레이드하세요.

Java 25(프리뷰, EE 11)

Enterprise Edition 11(EE 11)에서 Java 25(프리뷰)를 사용하려면 다음 단계를 따르세요.

  1. web.xml 구성 파일의 버전 번호를 version=6.1으로 변경합니다. 예를 들면 다음과 같습니다.

        <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_1.xsd"
          version="6.1">
          ...
        </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. appengine-web.xml 파일에 다음 시스템 속성을 추가합니다.

    <?xml version="1.0" encoding="utf-8"?>
    <appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
        <runtime>java25</runtime>
        <system-properties>
          <property name="appengine.use.EE11" value="true"/>
        </system-properties>
        <app-engine-apis>true</app-engine-apis>
    </appengine-web-app>
    
  5. 선택사항: Java 25에는 가상 스레드 지원이 포함됩니다. 가상 스레드를 사용 설정하려면 appengine-web.xml 파일의 system-properties 태그 내에 appengine.use.virtualthreads 속성을 추가합니다.

Java 21(EE 10)

Enterprise Edition 10(EE 10)에서 Java 21을 사용하려면 다음 단계를 따르세요.

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

Java 17 이상(EE 8)

주요 애플리케이션 구성 변경 없이 Java EE 8에서 javax.servlet.* API를 사용합니다. EE 8은 Java EE 6 이상에 대한 하위 호환성을 제공합니다.

Java EE 8에서 애플리케이션을 실행하려면 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>java17</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"/>입니다.