Java 26, 10개 JEP인데 바로 쓸 수 있는 건 따로 있습니다

Published on

in

Java 26, 10개 JEP인데 바로 쓸 수 있는 건 따로 있습니다

2026.03.17 GA 기준
JDK 26 / Oracle 공식 발표
비-LTS 릴리스

Java 26, 10개 JEP인데 바로 쓸 수 있는 건 따로 있습니다

2026년 3월 17일, 오라클이 예정대로 Java 26을 출시했습니다. 10개의 JEP — 그런데 이 중 5개가 아직 프리뷰나 인큐베이터 상태입니다. “신기능 10개”라는 타이틀만 보고 프로덕션에 적용했다가는 다음 릴리스에서 코드를 전부 뜯어고쳐야 할 수도 있습니다. 지금 바로 쓸 수 있는 것과 기다려야 하는 것, 공식 문서 기준으로 구분했습니다.

10개
총 JEP 수
5개
프리뷰·인큐베이터
비-LTS
지원 기간 6개월
11번째
Vector API 인큐베이터

Java 26가 지금도 중요한 이유 — LTS가 아닌데도

Java 26은 LTS(Long-Term Support) 버전이 아닙니다. LTS는 바로 이전 버전인 Java 25가 가져갔습니다. 오라클이 Oracle JDK 26에 제공하는 업데이트 기간은 2026년 9월, Java 27 출시 때까지 딱 6개월입니다. (출처: Oracle Java Blog, 2026.03.17)

“그럼 굳이 지금 볼 필요 없다”고 생각하기 쉽습니다. 그게 바로 이 글을 쓰게 된 이유입니다. Java의 6개월 릴리스 주기에서 비-LTS 버전은 단순한 중간 점검이 아닙니다. 다음 LTS에 확정으로 들어갈 기능들이 여기서 검증받습니다. 지금 Java 26의 프리뷰 기능을 이해해두지 않으면, 내년 LTS(아마도 Java 27 또는 29)가 나왔을 때 “이게 언제 들어왔지?” 하고 당황하게 됩니다.

실제로 JRebel의 Java 26 분석에서도 “비-LTS 릴리스는 다음 LTS를 정의할 기능들의 proving ground”라고 표현했습니다. (출처: JRebel Blog, 2026.03.17) 즉, 지금 Java 26을 보는 건 Java의 미래를 먼저 보는 일입니다.

▲ 목차로 돌아가기

지금 프로덕션에 써도 되는 JEP 4가지

Java 26의 10개 JEP 중 프리뷰·인큐베이터가 아닌, 바로 적용 가능한 기능은 4가지입니다. OpenJDK 공식 페이지에서 확인한 목록 기준입니다. (출처: OpenJDK 공식, 2026.03.17)

① JEP 516 — AOT 객체 캐싱, 이제 어떤 GC도 됩니다

Java 애플리케이션의 고질병인 워밍업 지연을 줄이는 AOT(Ahead-of-Time) 캐싱이 Java 26부터 ZGC를 포함한 모든 GC에서 동작합니다. 기존엔 특정 GC에서만 쓸 수 있어서 레이턴시 민감 서비스 팀들은 사실상 이 기능을 못 썼습니다. 컨테이너 환경에서 콜드 스타트 지연이 문제라면 지금 당장 적용 효과를 확인해볼 수 있습니다.

② JEP 522 — G1 GC 처리량 향상, 수치로 말합니다

G1 GC의 애플리케이션 스레드와 GC 스레드 간 동기화를 줄여 처리량을 끌어올렸습니다. JRebel 분석에 따르면 오브젝트 레퍼런스 변경이 많은 워크로드에서 최대 15% 처리량 향상이 측정됩니다. (출처: JRebel Blog, 2026.03.17) 코드 한 줄 바꾸지 않고 JDK 버전만 올려도 효과가 납니다.

③ JEP 517 — HTTP/3 지원, 이제 서드파티 없이 됩니다

Java 11에서 도입된 HTTP Client API가 드디어 HTTP/3를 지원합니다. TCP 기반 HTTP/2의 헤드-오브-라인 블로킹 문제를 해결한 QUIC 기반 프로토콜이라, 불안정한 네트워크 환경이나 고처리량 마이크로서비스 간 통신에서 체감 차이가 납니다. Bouncy Castle 같은 서드파티 없이 표준 라이브러리만으로 HTTP/3 서버와 통신할 수 있습니다.

④ JEP 504 — Applet API 제거

Java 17에서 제거 예고(deprecated for removal)가 됐던 Applet API가 Java 26에서 완전히 삭제됐습니다. 레거시 코드베이스에 Applet 관련 클래스가 조금이라도 남아 있다면 컴파일 오류가 납니다. 지금이 코드 점검 적기입니다.

JEP 기능 상태 체감 효과
516 AOT 객체 캐싱 (Any GC) 확정 콜드 스타트 감소
522 G1 GC 처리량 향상 확정 최대 15% 처리량
517 HTTP/3 지원 확정 레이턴시 개선
504 Applet API 제거 제거 레거시 코드 점검 필수
500 final 필드 변경 경고 확정 경고 → 미래엔 오류

▲ 목차로 돌아가기

Vector API가 11번이나 인큐베이터인 진짜 이유

Vector API는 Java 16에서 처음 등장해 JDK 26까지 11번째 인큐베이터를 달고 있습니다. “5년 동안 뭘 한 거야?”라는 말이 나올 법합니다. 그런데 JavaCodeGeeks의 분석을 보면 생각이 달라집니다.

💡 공식 JEP 문서와 실제 동작 결과를 같이 놓고 보니 이런 차이가 보였습니다

JEP 529 공식 문서에는 이렇게 적혀 있습니다: “Vector API는 Project Valhalla의 제네릭 특수화가 프리뷰로 제공될 때까지 인큐베이터 상태를 유지한다.” (출처: OpenJDK JEP 529) 의도적으로 멈춘 겁니다.

핵심은 Java 제네릭의 구조적 한계입니다. 현재 Java의 제네릭은 기본 타입을 지원하지 않아서 Vector<int>가 아니라 Vector<Integer>, IntVector, FloatVector 같은 서브클래스로 구현돼 있습니다. Valhalla가 기본 타입 제네릭을 지원하게 되면 이 구조가 통째로 바뀝니다. 지금 이 모양으로 확정하면 나중에 API 전체를 바꿔야 한다는 얘기입니다.

그렇다고 Vector API가 쓸 수 없는 건 아닙니다. --add-modules jdk.incubator.vector 플래그를 붙이면 지금도 동작하고, JIT 컴파일러가 실제 SIMD 명령으로 내려보냅니다. 수치도 나옵니다. JavaCodeGeeks 분석에 따르면 AVX-512 장비에서 벡터화된 닷 프로덕트 연산은 스칼라 동등 코드보다 10~16배 빠릅니다. (출처: JavaCodeGeeks, 2026.03.27) 성능 수치는 진짜입니다. 불안정한 건 API 형태뿐입니다.

⚠️ 프로덕션 도입 전 주의

jdk.incubator.* 네임스페이스의 API는 Maven Central에 올라온 라이브러리가 의존해선 안 된다는 게 OpenJDK의 공식 원칙입니다. Spring, Guava 같은 범용 라이브러리가 이 API를 transitively 의존하게 되면 API 변경 시 다운스트림이 전부 깨집니다. 팀 내부 성능 크리티컬 모듈에 직접 쓰는 건 괜찮지만, 배포 라이브러리에는 금물입니다.

▲ 목차로 돌아가기

JEP 500이 숨기고 있는 신호

JEP 500(Prepare to Make Final Mean Final)은 표면적으로 “리플렉션으로 final 필드를 바꾸면 경고가 뜬다”는 기능입니다. 별거 아닌 것처럼 보이지만, 이 기능이 Java 26에서 확정된 데는 훨씬 큰 배경이 있습니다.

💡 “final 경고” 뒤에 숨어 있는 Valhalla 준비 작업

Hanno Embregts의 Java 26 분석에서 이런 문장이 나옵니다: “JEP 500과 529의 조합은 Valhalla의 첫 번째 기능을 위한 준비 작업을 공개적으로 진행하는 것”이라고. (출처: hanno.codes, 2026.03.17) 경고가 뜨는 건 에코시스템에 “여기 바꿔야 한다”는 충분한 사전 통보를 주는 절차입니다.

Valhalla의 값 클래스(Value Classes)는 힙에 올라가는 객체지만 동일성(identity)이 없습니다. 두 인스턴스의 필드 값이 같으면 같은 것입니다. 이걸 안전하게 최적화하려면 final이 정말로 변경 불가여야 합니다. 지금은 setAccessible(true)로 뚫을 수 있어서 JVM이 100% 믿지 못합니다. JEP 500이 이 구멍을 막는 첫 번째 단계입니다.

실무 관점에서 보면, Mockito나 직렬화 라이브러리처럼 리플렉션으로 final 필드를 건드리는 코드를 쓰는 팀은 지금 경고를 봐야 합니다. Java 27~28에서 오류로 격상될 가능성이 공식 문서에도 “향후 제한” 표현으로 명시돼 있습니다. (출처: OpenJDK JEP 500)

▲ 목차로 돌아가기

프리뷰 5개, 지금 넣으면 생기는 일

Java 26의 프리뷰·인큐베이터 JEP는 5개입니다. 프리뷰 기능을 쓰려면 컴파일과 실행 시 --enable-preview 플래그가 필요하고, 다음 Java 버전에서 API 형태가 바뀔 수 있습니다. 즉, 지금 프리뷰 기능에 의존하는 코드를 작성하면 Java 27 업그레이드 때 수정 작업이 생긴다는 뜻입니다.

4차 프리뷰

JEP 530 — 패턴 매칭 기본 타입

instanceof와 switch에서 int, long 같은 기본 타입을 직접 패턴 매칭. 박싱 오버헤드 제거. 4번째 프리뷰라 Java 27 확정 가능성 높음.

6차 프리뷰

JEP 525 — 구조화된 동시성

멀티스레드 작업을 단일 단위로 묶어 스레드 누수와 취소 지연 감소. onTimeout() 메서드 추가. Virtual Threads와 조합 시 강력.

2차 프리뷰

JEP 526 — 지연 상수(Lazy Constants)

LazyConstant 인터페이스로 첫 접근 시에만 초기화되는 진짜 상수 정의 가능. JVM이 static final처럼 최적화.

2차 프리뷰

JEP 524 — PEM 암호화 객체 인코딩

TLS 인증서, 개인키를 PEM 형식으로 읽고 쓰는 표준 API. Java 26에서 클래스명 변경(PEMRecord → PEM), CryptoException 추가.

⚠️ 프리뷰 기능 사용 시 현실적 체크리스트

프리뷰 기능은 javac --enable-preview --release 26java --enable-preview 플래그가 모두 필요합니다. CI/CD 파이프라인과 배포 스크립트를 함께 수정해야 하고, Java 27 전환 때 API 변경 여부를 반드시 재확인해야 합니다. 개인 프로젝트나 내부 도구라면 써도 되지만, 공개 라이브러리나 고객사 프로덕션 코드에는 넣지 않는 게 맞습니다.

▲ 목차로 돌아가기

Java 27에서 뭐가 바뀌는지 미리 알아야 하는 이유

Java 27은 2026년 9월 출시 예정입니다. 지금까지 공식 타겟으로 잡힌 JEP는 하나입니다. JEP 527 — 양자 컴퓨팅에 내성을 갖춘 TLS 1.3 하이브리드 키 교환입니다. (출처: JRebel Blog, 2026.03.17)

더 중요한 건 Java 27에서 기대되는 후보 JEP들입니다. JRebel 분석에 따르면 JEP 401(값 클래스와 객체, Project Valhalla 첫 번째 프리뷰)이 Java 27에 들어올 가능성이 있다고 InfoQ가 인용했습니다. 이게 확정되면 Vector API도 드디어 인큐베이터를 벗어날 준비를 시작할 수 있습니다.

💡 지금 Java 26의 프리뷰를 봐야 하는 실용적 이유

JEP 530(기본 타입 패턴 매칭)은 이번이 4번째 프리뷰입니다. 오라클 공식 블로그 기준으로 통상 4번째 프리뷰는 다음 버전에서 확정되는 패턴이 많습니다. 지금 실험해두면 Java 27 업그레이드 때 즉시 쓸 수 있습니다. 구조화된 동시성(JEP 525)도 6차 프리뷰입니다. 이 역시 Java 27 확정을 바라보고 있습니다.

솔직히 말하면, 개인 견해로는 Java 26을 바로 프로덕션 JDK로 올리는 건 권장하지 않습니다. 6개월 지원 기간 안에 Java 27이 나오는 데다가, 보안 패치나 버그픽스는 LTS인 Java 25에서 계속 제공됩니다. 하지만 개발 환경에서 미리 돌려보고 Java 27 전환 계획을 세우는 용도로는 지금이 최적의 타이밍입니다.

Java 버전 LTS 여부 지원 기간 주요 포인트
Java 25 LTS 장기 현재 프로덕션 권장
Java 26 비-LTS ~2026.09 개발·테스트 환경 활용
Java 27 미확정 2026.09 예정 Valhalla 첫 프리뷰 기대

▲ 목차로 돌아가기

자주 나오는 질문 5가지

Q
Java 26을 지금 프로덕션에 올려도 될까요?
보수적으로는 권장하지 않습니다. Oracle이 JDK 26에 제공하는 업데이트는 2026년 9월 Java 27 출시 때까지 6개월뿐입니다. 현재 프로덕션 권장 버전은 LTS인 Java 25입니다. 다만 AOT 캐싱(JEP 516), G1 GC 향상(JEP 522), HTTP/3(JEP 517)처럼 확정된 기능을 개발 환경에서 먼저 검증해두면 Java 27 전환을 훨씬 빠르게 진행할 수 있습니다.
Q
Vector API가 5년째 인큐베이터인데, 언제 확정되나요?
JEP 529 공식 문서 기준으로, Project Valhalla의 제네릭 특수화(primitive generics)와 값 클래스(value classes)가 프리뷰로 제공돼야 Vector API도 인큐베이터를 벗어납니다. JRebel과 JavaCodeGeeks의 분석에 따르면, Valhalla 값 클래스가 Java 27(2026.09)에 프리뷰로 들어온다면 Vector API는 빠르면 JDK 28(2027.03), 늦으면 JDK 30~31(2027~2028)에 프리뷰로 전환될 것으로 예측됩니다.
Q
JEP 500 경고가 뜨는데, 지금 당장 코드를 수정해야 하나요?
Java 26에서는 경고(warning)입니다. 당장 오류가 나거나 기능이 멈추진 않습니다. 하지만 OpenJDK JEP 500 문서에 “향후 제한(future restriction)”이라는 표현이 명시돼 있어, Java 28 이후에 오류(error)로 격상될 가능성이 큽니다. Mockito, Jackson, 오래된 직렬화 라이브러리를 쓴다면 라이브러리 최신 버전으로 업데이트했는지 먼저 확인하세요. 라이브러리 측에서 이미 대응했을 가능성이 높습니다.
Q
G1 GC 처리량 15% 향상이 모든 애플리케이션에 해당하나요?
아닙니다. JRebel 분석에 따르면 “오브젝트 레퍼런스 변경이 많은 워크로드”에서 최대 15% 향상이 나옵니다. 객체를 자주 생성하고 참조를 변경하는 패턴, 예를 들어 캐시가 많거나 고처리량 이벤트 처리 시스템에서 효과가 큽니다. 읽기 위주 워크로드나 단순 계산 중심 앱에서는 체감하기 어려울 수 있습니다. 직접 JMH 벤치마크를 돌려보는 게 가장 정확합니다.
Q
Applet API 제거가 기존 코드에 영향을 주나요?
java.applet.* 패키지를 import하는 코드가 남아 있으면 Java 26에서 컴파일 오류가 납니다. 2015년 이후 만든 코드에는 거의 없을 텐데, 아주 오래된 레거시 코드베이스나 오래된 오픈소스 라이브러리에서 간혹 나옵니다. 빌드 전에 grep -r "java.applet" ./src로 한 번 확인하면 됩니다.

▲ 목차로 돌아가기

마치며

Java 26을 한 줄로 요약하면 “준비 중인 플랫폼의 공개 중간 점검”에 가깝습니다. 화려하게 쓸 수 있는 신기능이 많은 버전은 아닙니다. 10개 JEP 중 절반이 아직 미완성이고, LTS가 아니라는 점도 그렇습니다.

그런데 바로 그 점이 흥미롭습니다. JEP 500과 JEP 529가 같은 버전에 동시에 들어온 건 우연이 아닙니다. Valhalla를 위한 준비 작업이 공식 릴리스 채널을 통해 진행 중이라는 신호입니다. Vector API가 언제 인큐베이터를 벗어나는지, 값 클래스가 언제 프리뷰로 오는지를 추적하는 데 Java 26이 실마리를 줍니다.

지금 당장 쓸 수 있는 건 JEP 516(AOT 캐싱 확장), JEP 522(G1 처리량), JEP 517(HTTP/3) 세 가지입니다. 나머지는 알아두되 기다리는 게 맞습니다. 개발 환경에서 미리 돌려보고, 2026년 9월 Java 27을 기다리는 것 — 그게 지금 Java 26을 대하는 가장 현실적인 자세입니다.

본 포스팅 참고 자료

  1. Oracle 한국 공식 — Java 26 출시 발표 (2026.03.17)
  2. Oracle Java Blog — The Arrival of Java 26 (2026.03.17)
  3. OpenJDK 공식 — JDK 26 Feature List & Schedule
  4. JRebel Blog — What’s New in Java 26 (2026.03.17)
  5. JavaCodeGeeks — Vector API at Eleven Incubations (2026.03.27)
  6. OpenJDK JEP 529 — Vector API (Eleventh Incubator)
  7. OpenJDK JEP 500 — Prepare to Make Final Mean Final

본 포스팅 작성 이후 서비스 정책·UI·기능이 변경될 수 있습니다. Java 26 기준(2026.03.17 GA), Oracle JDK 26 및 OpenJDK 공식 자료를 바탕으로 작성됐으나, 이후 업데이트나 수정이 발생할 수 있으므로 중요한 의사결정 전에는 반드시 공식 문서를 직접 확인하시기 바랍니다.

댓글 남기기


최신 글

  • 계좌 자동이체 해지 2026, 페이인포 출금 중지 확인
    계좌 자동이체 해지 2026 기준으로 등록 자동이체, 납부자번호, 처리 가능일 항목을 제출 전 확인 순서로 정리했습니다. 반려, 지연, 재처리를 줄이기 위한 체크리스트와 공식 출처를 함께 담았습니다.
  • 대출 금리인하요구권 신청 2026, 거절 사유 확인
    대출 금리인하요구권 신청 2026 기준으로 대상 대출, 소득·신용점수·부채 감소 증빙자료, 거절 사유 확인과 재신청 순서를 정리했습니다.
  • 자동차세 체납 번호판 영치 2026, 납부 전 확인
    자동차세 체납 번호판 영치 2026 기준으로 세목과 금액, 가산금, 차량 운행 위험 항목을 제출 전 확인 순서로 정리했습니다. 반려, 지연, 재처리를 줄이기 위한 체크리스트와 공식 출처를 함께 담았습니다.
  • 하이패스 단말기 명의변경 2026, 중고차 인수 전 확인
    하이패스 단말기 명의변경 2026 기준으로 단말기 등록 명의, 단말기 정보, 통행료와 결제 카드 항목을 제출 전 확인 순서로 정리했습니다. 반려, 지연, 재처리를 줄이기 위한 체크리스트와 공식 출처를 함께 담았습니다.
  • 지방세 납세증명서 발급 2026, 체납 여부 확인
    지방세 납세증명서 발급 2026 기준으로 체납 없음 표시, 유효기간과 발급일, 세목과 납부 상태 항목을 제출 전 확인 순서로 정리했습니다. 반려, 지연, 재처리를 줄이기 위한 체크리스트와 공식 출처를 함께 담았습니다.
  • 세금포인트 조회 사용 2026, 할인 혜택 전 확인
    세금포인트 조회 사용 2026 기준으로 포인트 잔액, 사용처와 조건, 납세담보 등 항목을 제출 전 확인 순서로 정리했습니다. 반려, 지연, 재처리를 줄이기 위한 체크리스트와 공식 출처를 함께 담았습니다.
  • 현금영수증 미발급 신고 2026, 포상금 전 증빙
    현금영수증 미발급 신고 2026 기준으로 결제 증빙, 상호·연락처, 요청 기록 항목을 제출 전 확인 순서로 정리했습니다. 반려, 지연, 재처리를 줄이기 위한 체크리스트와 공식 출처를 함께 담았습니다.
  • 보육료 전환 신청 2026, 양육수당 중복 체크
    보육료 전환 신청 2026 기준으로 입소일과 신청일, 양육수당·부모급여, 보육료 자격 항목을 제출 전 확인 순서로 정리했습니다. 반려, 지연, 재처리를 줄이기 위한 체크리스트와 공식 출처를 함께 담았습니다.
  • 청년월세지원 신청 2026, 임대차 서류 체크
    청년월세지원 신청 2026 기준으로 나이·거주 요건, 계약서와 이체 내역, 본인·원가구 소득 확인 항목을 제출 전 확인 순서로 정리했습니다. 반려, 지연, 재처리를 줄이기 위한 체크리스트와 공식 출처를 함께 담았습니다.
  • 국민취업지원제도 신청 2026, 구직촉진수당 체크
    국민취업지원제도 신청 2026 기준으로 유형과 자격, 월 소득과 재산, 구직활동 계획 항목을 제출 전 확인 순서로 정리했습니다. 반려, 지연, 재처리를 줄이기 위한 체크리스트와 공식 출처를 함께 담았습니다.


아이테크 어른경제에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기