나의 경우, 학원에서는 11버전을 쓰고 회사에서는 8 버전을 쓰고 궁금한 건 17버전이다 (?)
자바 버전은 왜이렇게 많으며, 어떤걸 써야 좋은지 모르겠어서 좀 찾아봤다.
자바 JDK LTS버전
https://www.java.com/releases/
여기서 jdk 버전에 대한 내용을 모두 확인할 수 있다.
보면 LTS가 붙은게 있고, 아닌게 있다.
LTS는 Long Term Support로, 오랜 기간 지원하는 특별한 버전의 에디션이다. (대부분 LTS버전을 사용)
Java 버전 | 지원기간 |
8 version | ~ 2030, 12 |
11 version | ~ 2026, 9 |
17 version | ~ 2029, 9 |
8,11,17 버전만 굉장히 긴 시간 지원하는 것을 알 수 있다. (8버전이 제일 김!)
8버전 이후로 사용하는 것을 무조건 추천하며, 8버전 이후는 업그레이드 된 부분이 조금씩 생겼다고 볼 정도로 8버전과 그 이하 버전은 차이가 크다. 이제 버전별로 알아보자.
Java 8 (Java 1.8)
- 오라클이 java를 인수한 후 첫번째 LTS 출시 버전
- 32비트를 지원하는 공식적인 마지막 버전
- 유료버전(Oracle JDK)과 무료버전(Open JDK)으로 나뉨
- LocalDateTime과 같은 새로운 날짜,시간 API제공
- Unsigned Integer 계산
- 람다식 제공
- Stream API제공
- PermGem 영역 삭제 - 참고 : https://johngrib.github.io/wiki/java8-why-permgen-removed/
- Static Link JNI Library 제공
Java 11
- Open JDK와 Oracle JDK 통합
- Oracle JDK가 구독형 유료모델로 전환
- G1 GC가 기본 GC로 설정 (GC : Garbage Collection)
- 람다 지역변수 var 키워드 사용 가능
- 컬렉션, 스트림 등에 메소드 추가
Java 17
- recode class 키워드 사용 가능
- 애플 M1 및 이후 프로세서 탑재 제품군에 대한 정식 지원
- 난수 생성 API 추가
- 봉인 클래스(Sealed Class) 정식 추가
- String 여러줄 사용시 텍스트 블록 기능 사용 가능
- NumberFormat,DateTimeFormatter 기능 향상
- Stream.toList() 사용 가능
Java 버전 사용비율
2022년 자료인데, 2021년에 비해 자바 8버전 사용 비율이 줄고, 17버전의 사용 비율이 현저히 증가했다.
Java 8버전이 기간도 제일 길게 지원하고 여전히 사용량 1등인 버전이지만, Java 17버전의 사용량이 급격히 증가한 것을 보면 무시할 수 없는 수치라는 생각이 든다.
Java 17을 채택하는 이유
여기어때 기술 블로그를 보면, JDK 17을 도입한 이유를 다음과 같이 말하고 있다.
- Java 서포트 기간이 길다. (LTS)
- 신규 버전을 위한 대비용으로 도입. (java 8에서 바로 최신버전을 쓰려고 할 때보다 마이그레이션이 수월할 것으로 예상)
- Spring Boot 3.0 부터는 자바 17 이상을 지원
이 중 3번째가 가장 중요한 이유라고 한다.
대부분 스프링 부트를 사용하지 않는 SI, 공공기관 프로젝트에서는 와닿지 않는 사용 이유라고 생각되며 회사에서 왜 1.8버전을 사용하는지 알게 되었다. (SI다님..)
위에 미처 작성하지 못한 많은 업데이트 내용이 있으므로, 초심자라면 1.8버전부터 해서 바뀐점에 대해 숙지해가며 17버전까지 사용해 보는 것이 좋을 것 같다.
나도 다음 개인 프로젝트는 17버전으로 해봐야겠다 :)