티스토리 뷰

 

런타임 버전은 애플리케이션 취약점의 바닥입니다. 프레임워크를 아무리 최신으로 올려도 그 아래 JDK나 Python이 지원 종료 버전이면 인터프리터·JIT·표준 라이브러리 취약점은 그대로 남습니다.

결론부터 말하면 이 분류에서 가장 헷갈리는 것은 Java입니다. 같은 Java 17이어도 어느 배포판을 쓰느냐에 따라 지원 종료일이 몇 년씩 차이납니다. “Java 17이니까 괜찮다”는 답변은 점검에서 그대로 받아들이면 안 됩니다.

이 글은 주요 언어·런타임의 지원 종료일과 공식 확인처를 정리한 참조표입니다. 2026년 9월 기준입니다.


🧭 EOL, EOS, EOSL — 용어부터 정리

런타임은 벤더가 배포판을 따로 내는 경우가 많아 특히 구분이 중요합니다.

용어 의미 실무 판단
EOAS 기능 개선·일반 버그 수정 중단 보안 패치는 아직 나옵니다. “계획 수립” 단계.
EOL / EOS 보안 패치 포함 모든 지원 중단 실질적 마지노선. 이후 CVE는 영구 미조치로 남습니다.
EOSL / ESU 유상 연장 보안 업데이트 계약이 있어야 패치를 받습니다. 날짜만 보면 안 됩니다.
EOO 신규 주문·판매 종료 지원은 계속되나 증설이 막힙니다.

📌 흩어진 EOL 날짜를 한 화면에서 보는 법

벤더별 라이프사이클 페이지를 하나씩 찾는 대신 endoflife.date 를 쓰면 470여 개 제품의 지원 일정을 같은 형식으로 볼 수 있습니다. 오픈소스 프로젝트이고 각 페이지에 벤더 원본 링크가 붙어 있어 교차 확인이 쉽습니다.

용도 주소
제품 페이지 endoflife.date/python
이 분류 전체 endoflife.date/tags/lang
JSON API (인증 불필요) endoflife.date/api/v1/products/python/
캘린더 구독 endoflife.date/calendar/python.ics
⚠️ 감사 증적에는 벤더 원본 문서를 인용하세요. endoflife.date는 커뮤니티가 관리하는 2차 자료라 드물게 반영이 늦습니다. 빠르게 훑을 때는 이 사이트, 보고서에 넣을 때는 아래 ‘근거 문서’ 링크를 쓰는 조합이 가장 실용적입니다.

☕ Java — 배포판부터 확인해야 합니다

Java는 사양(버전 번호)과 배포판(구현체)이 분리돼 있습니다. OpenJDK를 기반으로 여러 회사가 각자 빌드를 내고, 각 회사가 자기 정책대로 지원 기간을 정합니다. 그래서 같은 숫자여도 종료일이 다릅니다.

Java 17 — 배포판별 지원 종료일 비교

가장 널리 쓰이는 LTS인 Java 17을 예로 들면 차이가 이렇게 벌어집니다.

제품 · 버전 출시일 보안 지원 종료 (EOL) 연장 지원 상태
Oracle JDK 17 2021.09.14 2026.09.30 2029.09.30 임박
Eclipse Temurin 17 2021.09.22 2027.10.31 지원
Amazon Corretto 17 2021.08.24 2029.10.31 지원
Azul Zulu 17 2021.09.15 2029.09.30 2031.09.30 지원
Red Hat build of OpenJDK 17 2021.11.11 2027.12.31 지원
Microsoft Build of OpenJDK 17 2021.09.14 2027.09.30 지원
IBM Semeru Runtime 17 2021.12.09 2027.10.31 지원
같은 Java 17인데 종료일이 2026년부터 2031년까지 흩어져 있습니다. 점검할 때 물어야 할 질문은 “Java 몇이냐”가 아니라 “어느 배포판의 Java 몇이냐”입니다. java -version 출력의 첫 줄에 배포판 이름이 같이 나옵니다.

Java 21 · 25 — 최신 LTS

제품 · 버전 출시일 보안 지원 종료 (EOL) 연장 지원 상태
Oracle JDK 25 (LTS) 2025.09.16 2030.09.30 2033.09.30 지원
Eclipse Temurin 25 (LTS) 2025.09.22 2031.09.30 지원
Amazon Corretto 25 (LTS) 2025.09.16 2032.10.31 지원
Oracle JDK 21 (LTS) 2023.09.19 2028.09.30 2031.09.30 지원
Eclipse Temurin 21 (LTS) 2023.10.10 2029.12.31 지원
Amazon Corretto 21 (LTS) 2023.08.25 2030.10.31 지원
Azul Zulu 21 (LTS) 2023.09.19 2031.09.30 2033.09.30 지원
Red Hat build of OpenJDK 21 2023.11.14 2029.12.31 지원

Java 8 · 11 — 아직 남아 있는 레거시

국내 시스템에는 Java 8이 여전히 많습니다. 흥미롭게도 배포판에 따라 Java 8이 2030년까지 지원되기도 합니다. 다만 “지원된다”는 것과 “안전하다”는 것은 다릅니다. 최신 TLS 스위트·암호 알고리즘 지원이나 최신 프레임워크 호환성 측면에서는 이미 제약이 큽니다.

제품 · 버전 출시일 보안 지원 종료 (EOL) 연장 지원 상태
Eclipse Temurin 8 2021.07.29 2030.12.31 지원
Amazon Corretto 8 2019.01.31 2030.12.31 지원
Azul Zulu 8 2014.04.08 2030.12.31 2032.12.31 지원
Red Hat build of OpenJDK 8 2014.10.01 2026.11.30 임박
Eclipse Temurin 11 2021.08.01 2027.10.31 지원
Amazon Corretto 11 2019.02.18 2032.01.31 지원
Azul Zulu 11 2018.09.25 2032.01.31 2034.01.31 지원
Red Hat build of OpenJDK 11 2018.10.01 2024.10.31 종료

🐍 Python

Python은 규칙이 명확합니다. 메이저 버전마다 5년이고, 그중 처음 1년 반이 버그 수정, 나머지가 보안 수정 전용입니다. 매년 10월 말에 한 버전씩 종료된다고 보면 됩니다.

제품 · 버전 출시일 일반 지원 종료 보안 지원 종료 (EOL) 연장 지원 상태
Python 3.14 2025.10.07 2027.10.01 2030.10.31 지원
Python 3.13 2024.10.07 2026.10.01 2029.10.31 지원
Python 3.12 2023.10.02 2025.04.02 2028.10.31 지원
Python 3.11 2022.10.24 2024.04.01 2027.10.31 지원
Python 3.10 2021.10.04 2023.04.05 2026.10.31 임박
Python 3.9 2020.10.05 2022.05.17 2025.10.31 종료
Python 3.8 2019.10.14 2021.05.03 2024.10.07 종료
OS에 기본 설치된 Python과 애플리케이션이 쓰는 Python이 다를 수 있습니다. RHEL·Ubuntu가 배포하는 시스템 Python은 배포판이 백포트 패치를 제공하므로 upstream EOL과 별개로 봐야 합니다. 반면 pyenv·conda·컨테이너로 직접 올린 Python은 upstream 일정이 그대로 적용됩니다.

🐘 PHP

PHP는 활성 지원 2년 + 보안 지원 1년, 총 3년입니다. 주기가 짧아 웹 서비스에서 가장 자주 걸리는 항목이기도 합니다.

제품 · 버전 출시일 일반 지원 종료 보안 지원 종료 (EOL) 연장 지원 상태
PHP 8.5 2025.11.20 2027.12.31 2029.12.31 지원
PHP 8.4 2024.11.21 2026.12.31 2028.12.31 지원
PHP 8.3 2023.11.23 2025.12.31 2027.12.31 지원
PHP 8.2 2022.12.08 2024.12.31 2026.12.31 임박
PHP 8.1 2021.11.25 2023.11.25 2025.12.31 종료
PHP 8.0 2020.11.26 2022.11.26 2023.11.26 종료
PHP 7.4 2019.11.28 2021.11.28 2022.11.28 종료

🔧 Go · Rust · Ruby · 기타

Go는 최신 2개 버전만 지원합니다. 새 버전이 나오면 세 번째로 밀린 버전은 그날로 종료입니다. Rust도 사실상 최신 stable만 지원됩니다. 컴파일 언어라 런타임 취약점 노출은 적지만, 표준 라이브러리와 툴체인 취약점은 최신 버전에서만 수정됩니다.

제품 · 버전 출시일 보안 지원 종료 (EOL) 연장 지원 상태
Go 1.27 2026.08.19 미정 지원
Go 1.26 2026.02.10 미정 지원
Go 1.25 2025.08.12 2026.08.19 종료
Rust 1.98 2026.08.20 미정 지원
Ruby 4.0 2025.12.25 2029.03.31 지원
Ruby 3.4 2024.12.24 2028.03.31 지원
Ruby 3.3 2023.12.25 2027.03.31 임박
Ruby 3.2 2022.12.25 2026.03.31 종료
Kotlin 2.4 2026.06.03 미정 지원
Scala 3.9 (LTS) 2026.09.03 미정 지원
Scala 3.3 (LTS) 2023.05.23 미정 지원
Perl 5.44 2026.07.15 2029.07.15 지원
Perl 5.42 2025.07.03 2028.07.03 지원
Perl 5.40 2024.06.09 2027.06.09 임박
Erlang/OTP 29 2026.05.11 2029.05.11 지원
Erlang/OTP 28 2025.05.20 2028.05.20 지원
Erlang/OTP 27 2024.05.17 2027.05.20 임박

PowerShell

Windows 관리 자동화에 쓰는 PowerShell도 두 갈래입니다. Windows PowerShell 5.1은 OS에 포함돼 별도 종료일이 없고, 크로스 플랫폼 PowerShell 7.x는 독립 주기를 갖습니다.

제품 · 버전 출시일 보안 지원 종료 (EOL) 연장 지원 상태
PowerShell 7.6 (LTS) 2026.03.18 2028.11.14 지원
PowerShell 7.5 2025.01.23 2026.11.10 임박
PowerShell 7.4 (LTS) 2023.11.16 2026.11.10 임박
Windows PowerShell 5.1 2016.08.02 미정 지원

🚨 앞으로 12개월 안에 지원이 끝나는 런타임

릴리스 주기가 6주 이하인 항목(Rust, Kotlin 등)은 제외했습니다. Java는 배포판별로 따로 나오니 우리가 쓰는 배포판이 있는지 확인하세요.

제품 버전 마지막 패치 제공일 남은 기간 비고 상태
Eclipse Temurin 26 2026.09.15 1일 임박
SapMachine 26 2026.09.15 1일 임박
Bellsoft Liberica JDK 26 2026.09.18 4일 임박
OpenJDK builds from Oracle 26 2026.09.18 4일 임박
Oracle JDK 26 2026.09.18 4일 임박
Azul Zulu 26 2026.09.30 16일 임박
IBM Semeru Runtime 26 2026.09.30 16일 임박
Oracle GraalVM 17 2026.09.30 16일 2029.09.30 임박
Oracle JDK 17 2026.09.30 16일 2029.09.30 임박
Amazon Corretto 26 2026.10.31 1개월 임박
Python 3.10 2026.10.31 1개월 임박
Microsoft PowerShell 7.5 2026.11.10 2개월 임박
Microsoft PowerShell 7.4 2026.11.10 2개월 임박
Bellsoft Liberica JDK 8 2026.11.30 2개월 2031.03.31 임박
Red Hat build of OpenJDK OpenJDK 8 (1.8) 2026.11.30 2개월 임박
PHP 8.2 2026.12.31 3개월 임박
Ruby 3.3 2027.03.31 6개월 임박
Erlang 27 2027.05.20 8개월 임박
Perl 5.40 2027.06.09 9개월 임박

🔗 언어·런타임별 공식 확인처

제품 요약 확인 (한 화면) 근거 문서 (벤더 원본)
Python endoflife.date 공식 지원 정책
PHP endoflife.date 공식 지원 정책
Go endoflife.date 공식 지원 정책
Rust endoflife.date 공식 지원 정책
Ruby endoflife.date 공식 지원 정책
Perl endoflife.date 공식 지원 정책
Kotlin endoflife.date 공식 지원 정책
Scala endoflife.date 공식 지원 정책
Erlang endoflife.date 공식 지원 정책
Elixir endoflife.date 공식 지원 정책
Microsoft PowerShell endoflife.date 공식 지원 정책
Microsoft Windows PowerShell endoflife.date 공식 지원 정책
Oracle JDK endoflife.date 공식 지원 정책
Eclipse Temurin endoflife.date 공식 지원 정책
Amazon Corretto endoflife.date 공식 지원 정책
Azul Zulu endoflife.date 공식 지원 정책
Red Hat build of OpenJDK endoflife.date 공식 지원 정책
Microsoft Build of OpenJDK endoflife.date 공식 지원 정책
IBM Semeru Runtime endoflife.date 공식 지원 정책
Bellsoft Liberica JDK endoflife.date 공식 지원 정책
SapMachine endoflife.date 공식 지원 정책
GraalVM Community Edition endoflife.date 공식 지원 정책

🛠 현재 버전 확인 명령어

제품 현재 버전 확인 비고
Python python --version # or alternatively python3 --version 시스템 Python과 애플리케이션 Python을 구분해서 확인
PHP php --version php -i | grep 'PHP Version' 로 모듈 정보까지
Go go version  
Rust rustc --version  
Ruby ruby --version  
Perl perl -v  
Kotlin kotlinc-native -version  
Scala scalac -version  
Elixir elixir --version  
Microsoft PowerShell pwsh -v  
Eclipse Temurin java -version 출력 첫 줄에 배포판 이름이 같이 나옵니다
Oracle JDK java -version  
Java는 java -version 만으로 부족할 때가 있습니다. 출력에 Temurin, Corretto, Zulu 같은 배포판 표기가 없으면 java -XshowSettings:properties -version 으로 java.vendor 값을 확인하세요.

💬 자주 나올 질문

Q. “Java 17입니다”라는 답변을 받았습니다. 양호인가요?

아직 판단할 수 없습니다. 배포판을 확인해야 합니다. 같은 Java 17이어도 Red Hat 빌드는 2027년, Temurin은 2027년, Corretto는 2029년, Azul Zulu는 2029년까지로 제각각입니다. 점검 증적에는 java -version 출력 전체를 남기는 것이 좋습니다.

Q. Oracle JDK를 쓰면 라이선스 문제가 있나요?

라이선스 조건이 여러 차례 바뀌었고 버전·시기별로 다릅니다. 보안팀 관점에서 확인할 것은 “패치를 받을 수 있는 상태인가”입니다. 유상 구독 없이 Oracle JDK를 쓰면서 업데이트를 받지 못하고 있다면, 라이선스 문제 이전에 보안 문제입니다. 이 경우 Temurin·Corretto 같은 무상 OpenJDK 배포판으로 교체하는 것이 일반적인 해법입니다. 라이선스 판단 자체는 법무·구매 부서와 함께 확인하시기 바랍니다.

Q. 시스템 Python이 3.9인데 EOL이라고 나옵니다.

배포판이 백포트 패치를 제공하고 있다면 실질적으로는 지원 상태입니다. RHEL 9의 Python 3.9는 RHEL 9의 수명 주기를 따릅니다. 다만 이 경우 근거는 upstream이 아니라 배포판 문서여야 하므로, 점검 보고서에는 해당 배포판의 라이프사이클 문서를 인용하세요.

Q. Go는 왜 지원 기간이 이렇게 짧나요?

Go 팀이 최신 두 개 버전만 유지하는 정책을 쓰기 때문입니다. 대신 업그레이드 호환성이 매우 높아 실제 업그레이드 비용은 낮은 편입니다. Go로 만든 서비스는 정기적으로 재빌드하는 파이프라인을 갖춰두는 것이 정답에 가깝습니다.

🎉 정리

  1. Java는 버전이 아니라 배포판까지 확인한다. 같은 17인데 종료일이 몇 년씩 차이난다.
  2. “Java 17입니다”는 양호 판정 근거가 못 된다. java -version 출력 전체를 증적으로 남긴다.
  3. Python은 메이저당 5년, 매년 10월 말에 한 버전씩 끝난다. 계획 세우기 가장 쉬운 축이다.
  4. PHP는 3년으로 짧다. 웹 서비스에서 가장 자주 걸리는 항목이다.
  5. Go·Rust는 사실상 최신만 지원된다. 정기 재빌드 파이프라인이 해법이다.
  6. 시스템 패키지로 설치된 런타임은 배포판 일정을 따른다. 근거 문서를 배포판 것으로 바꿔 인용한다.
  7. Java 8이 아직 ‘지원’되더라도 안전한 것은 아니다. 암호 알고리즘·프레임워크 호환성에서 이미 제약이 크다.

📚 이 시리즈의 다른 글

분류별로 나눠 정리했습니다. 필요한 분류만 골라 보셔도 됩니다.

시리즈 구성 상태
01. 애플리케이션 · 개발도구 https://sitview.tistory.com/193
02. 데이터베이스 https://sitview.tistory.com/194
03. 단말기 · 하드웨어 https://sitview.tistory.com/195
04. 프레임워크 · 라이브러리 https://sitview.tistory.com/196
05. 언어 · 런타임 지금 보는 글
06. 운영체제 https://sitview.tistory.com/198
07. 서버 애플리케이션 https://sitview.tistory.com/199
08. 클라우드 관리형 서비스 https://sitview.tistory.com/200

🔗 참고