우당탕탕
[Java] 자바 LTS(Long Term Support)란 무엇인가? 본문
자바 LTS란 무엇인가?
자바는 프로그래밍 언어 중에서 가장 널리 사용되는 언어 중 하나로, 다양한 버전이 존재합니다.
그중에서도 LTS(Long Term Support) 버전은 특히 중요한 역할을 하고 있습니다. 이번 포스팅에서는 자바 LTS에 대해 자세히 알아보도록 하겠습니다.
LTS란?
LTS는 Long Term Support의 약자로, 장기 지원 버전을 의미해요. 자바의 LTS 버전은 특정 기간 동안 안정적인 지원과 업데이트를 제공받을 수 있는 버전이에요. 일반적으로 LTS 버전은 3년마다 출시되며, 출시 후 5년 동안 기술 지원이 제공되죠. 이로 인해 기업이나 개발자들은 안정적인 환경에서 애플리케이션을 운영할 수 있어요.
자바 버전별 특징 및 변경점
자바는 여러 버전이 출시되어 존재하며, 각 버전마다 특징과 변경사항들이 있습니다. 각 버전의 특징과 변경사항에 대해서 알아보겠습니다.
Java 8 (LTS)
자바 8의 변경점으로는 크게 람다 표현식과 함수형 프로그래밍을 지원하게 되었습니다. 이로 인해 코드의 가독성이 높아지고, 더 간결한 코드를 작성할 수 있게 되었습니다.
자바 8은 2014년에 출시되어 2030년까지 연장지원 예정입니다.
자바 8부터는 함수형 프로그래밍을 지원하며 주요 변경사항은 아래와 같습니다.
- 람다식(Lambda expressions)
- Stream
- 함수형 인터페이스
- 디폴트 메서드
- Optional 기능
- 병렬 배열 정렬
- 그외 다양한 API ( Base64 관련 API, 날짜 및 시간 API )
Java 11 (LTS)
지역 변수 유형 추론(var) 기능이 도입되었습니다. 이 기능은 변수 선언 시 타입을 명시하지 않아도 컴파일러가 자동으로 타입을 추론해 주는 기능이에요. 또한, 여러 가지 API가 추가되었고, 불필요한 기능이 제거되었습니다.
자바 11 버전은 2018년에 출시되었으며 2032년까지 연장지원받을 예정입니다.
Java 17 (LTS)
Sealed 클래스와 패턴 매칭 기능이 추가되었습니다. Sealed 클래스는 상속을 제한할 수 있는 기능으로, 코드의 안전성을 높여줍니다. Spring Boot 3.x.x 버전부터는 자바 17 이상부터 지원합니다.
자바 17버전은 2021년에 출시되었으며 2029년까지 지원받을 예정입니다.
각 자바 버전의 지원 기간은 기업들이 안정적인 환경에서 애플리케이션을 운영할 수 있도록 도와주는 기간입니다.
Java 21 (LTS)
자바 플랫폼에 경량 가상 스레드가 도입되었습니다. SpringBoot 3.2.x부터 지원하며 기존 자바소스코드의 수정 없이 수백만 개의 가상 스레드를 실행하는 것이 가능해졌습니다. 인코딩 기본값이 UTF-8로 변경되었습니다.
자바 21버전은 2031년까지 지원 예정입니다.
LTS와 일반 버전의 차이점
LTS 버전과 일반 버전의 가장 큰 차이점은 지원 기간입니다. LTS 버전은 장기적으로 지원을 받는 반면, 일반 버전은 상대적으로 짧은 기간 동안만 지원을 받게 되죠.(일반적으로 6~8개월간 지원됩니다) 일반 버전은 새로운 기능을 빠르게 도입하는 반면, LTS 버전은 안정성과 보안에 중점을 두고 있습니다.
이러한 차이점으로 기업에서는 LTS 버전을 선택하는 경우가 많으며, 개발자들은 안정적인 환경에서 작업을 할 수 있게 됩니다.
최근 자바 버전 트렌드(기업)
최근에는 자바 17이 가장 주목받고 있는 버전입니다. 많은 개발자들이 자바 17로의 마이그레이션을 고려하고 있으며, 이는 최신 기능 지원과 함께 성능 향상을 기대할 수 있기 때문이죠. 또한, 자바 18 및 19의 출시로 인해 자바 커뮤니티에서는 새로운 기능에 대한 관심이 더욱 높아지고 있습니다.
(경량 가상 스레드 기능으로 자바 21 버전도 주목받고 있지만 아직 많은 기업들은 자바 17을 선택하고 있습니다.)
'언어 > Java' 카테고리의 다른 글
[Java] String, StringBuilder, StringBuffer의 차이와 장단점 (0) | 2024.01.29 |
---|---|
[JPA] 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock)에 대해 (1) | 2023.06.16 |
[Java] static(정적) 변수와 메모리에 대해 (0) | 2022.11.02 |
[Java] 람다 표현식, 람다(Lambda Expression)이란? (0) | 2022.09.12 |
[Java] 가비지 컬렉션(Garbage Collection) 알고리즘 (가비지 컬렉션 - 2) (0) | 2022.08.29 |