자바 버전8, 11, 17

코딩하는 포로리·2022년 1월 21일
0
post-thumbnail

📌 1. Java 버전


📎 Intro: 자바 버전 어떤걸 써야하나요?

개발 중에 버전 17까지 나와있는 자바를 보며 도대체 어떤 버전을 써야하나 막막해질 때가 있다.

나 역시 개발 공부를 시작한지 6개월 정도 지난 지금, 그 기준이 막막하여 직접 조사해 봐야겠다는 생각을 했다. 실제로 명확하게 '이러한 기준을 가지고 해당 버전을 사용하세요' 라고 지침을 알려주는 글은 발견한적이 없다. 그러나 오랜시간 동안 자바 버전에 대해 찾다보니 자바8, 11, 17을 가장 많이 사용한다는 사실을 발견할 수 있었다.

정확히 말하면 자바8을 가장 많이 사용하지만, 사람들이 3가지 버전을 선택하는 이유가 있는 듯 보였고 LTS(Long Term Support)가 바로 그것이었다.

📎 LTS(Long Term Support)장기 지원 버전

LTS(Long Term Support)는 일반적인 경우보다 장기간에 걸쳐 지원하도록 특별히 고안된 소프트웨어의 버전 또는 에디션이다.

LTS지원 버전은 출시 이후 8년간 보안 업데이트와 버그 수정이 지원되다. 그리고 다음 LTS가 나오기 전까지 6개월 간격으로 non-LTS 버전이 출시된다. 주기가 짧은 이유는 그만큼 업데이트되는 양도 적고, 6개월 동안만 해당 버전을 지원하기 때문이다. 이 non-LTS 버전과 새로운 업데이트 내역을 모아 다음 LTS버전을 출시하게되는데, 자바8 포함하여 자바11, 자바17가 모두 LTS지원 버전이다.

결론적으로 가장 많이 사용하는 자바8, 11, 17은 3~4년 동안 모인 업데이트들을 토탈 지원하는 LTS인 것이다. 실제로, Intellij에서 spring boot로 프로젝트를 생성할 때 지원하는 자바 버전이 8, 11, 17 이 3가지 밖에 없다. 어차피 non-LTS인 자바9, 10, 12, 13, 14, 15, 16은 각각 자바8, 11, 17에 업데이트 내역이 모두 들어있기 때문에 LTS버전만 지원해도 크게 무리가 없는 것이다.

📎 자바8을 많이 사용하는 이유

3가지 LTS 버전 중에서도 자바8 사용 비율이 72%에 육박한다. 자바8을 사용하는 가장 큰 이유는 가장 기본적인 자바 기능이 구축되어 있는 버전 이기 때문이다. 그래서 영문 기사에 따르면 자바8 이후의 버전들은 '버전8 위에 조금씩 업그레이드된 부분을 쌓아 올렸다' 라고 표현하기도 한다. 더불어 아래 3가지 이유로 자바8을 가장 많이 쓴다.

  1. 라이센스 문제
  2. 버전8의 안정성 및 호환성
  3. 첫 LTS버전

그래서 처음에는 가장 기본이되는 자바8을 배우고, 나중에 익숙해졌다 싶을때 다른 버전을 도전해보는 것을 추천한다고 한다.

나 역시 지금은 자바8 공부를 하고 있지만 나중에 새로운 LTS버전을 도전하기 위해 각 버전의 특징을 알아보려고 한다.


📌 2. 각 버전의 특징


📎 Java8

👉 오라클이 자바 인수 후 출시한 첫번째 LTS 버전
👉 32비트를 지원하는 마지막 공식 Java버전
👉 2개의 버전으로 나뉨: Oracle JDK, Open JDK
👉 Nashorn JavaScript 엔진 탑재
👉 새로운 날짜와 시간 API
👉 Unsigned Integer 계산
👉 Annotation on Java Types
👉 Static Link JNI Library
👉 Interface Default Method
👉 PermGen 영역 삭제
👉 Stream API

📎 Java11

👉 Oracle JDK와 Open JDK 통합
👉 Oracle JDK가 구독형 유료 모델로 전환
👉 람다 파라미터에 대한 지역 변수 문법
👉 엡실론 가비지 컬렉터
👉 서드파티 JDK로의 이전 필요
👉 HTTP 클라이언트 표준화 기능

📎 Java17

👉 가장 최근 LTS버전으로, 2021년9월15일 출시
👉 패턴 매칭은 여전히 Preview 단계
👉 봉인 클래스 정식 추가
👉 컨텍스트 기반의 역직렬화 필터링
👉 의사난수 생성기를 통해 예측하기 어려운 난수를 생성하는 API추가
👉 애플 M1 및 이후 프로세서 탑재 컴퓨터 제품군에 대한 정식 지원


📌 3. 마무리


솔직히 한참을 조사하면서 이 글을 썼지만, 아직까지 LTS와 non-LTS 차이 말고는 각 버전별로 업데이트된 기능의 차이는 잘 모르겠다. 하지만 계속 공부하다보면 각 버전별 업데이트 내역을 바로 적용하고 트라이할수 있는 실력을 갖추게될 것이라 믿는다. ✨


📖 참고

0개의 댓글