🔙뒤로가기
<aside>
💡 Java는 오랫동안 6개월마다 새로운 주 버전을 출시하는 전략을 따르고 있다. 이는 개발자들에게 최신 기능을 빠르게 제공할 수 있도록 해주지만, 매번 모든 새로운 버전을 채택하기는 어렵다.
따라서 개발자와 기업들은 자바의 LTS(Long Term Support) 버전에 주로 집중한다. LTS 버전은 주로 3년마다 출시되며, 오라클과 다른 자바 커뮤니티에 의해 장기적인 지원이 제공된다. 이로 인해 이 버전들은 보통 안정성과 지원 기간을 중시하는 현업에서 더욱 선호한다.
</aside>
Java 5 ~ 7
Java 5 : 2004년 출시, 제네릭스, 어노테이션, 자동 박싱/언박싱, 가변인자, 향상된 for 루프 등의 새로운 기능이 도입됨
Java 6 : 2006년 출시, 언어 측면의 눈에 띄는 특징이 추가되지는 않음. 대부분의 플랫폼과 라이브러리가 이 버전으로 업그레이드됨.
Java 7 : 2011년 출시, switch문에 문자열을 사용할 수 있게 되었고, try-with-resource, 다이아몬드 연산자, 자동 타입 추론, 병렬 배열 등의 기능이 추가됨.
Java 8 (LTS)
2014년 출시, 아주 널리 사용되는 버전 중 하나이며, 많은 중요한 변화를 가져왔다.
- 람다 표현식 도입
- 람다는 이름이 없는 메소드로, 클래스를 만들거나 객체를 생성하지 않고도 함수를 정의하고 전달할 수 있게 해줬다.
- 스트림 API
- 데이터를 좀 더 선언적, 함수형으로 처리하는 새로운 방법을 제공한다. 복잡한 멀티스레딩 코드 없이도 컬렉션 데이터를 효과적으로 처리할 수 있게 되었다.
- Optional 클래스
- null 값을 가질 수 있는 객체를 감싸는 래퍼 클래스이다. NullPointerException이 발생하기 전에 Optional객체에서 유효성 검사를 먼저 처리할 수 있다.
- 날짜/시간 API
- 이전의 날짜와 시간 API는 사용하기 어렵고 오류를 유발하기 쉬웠다. Java 8의 새로운 날짜/시간 API는 불변이며, 훨씬 더 직관적이다.
- Default 메소드, static 메소드 인터페이스
- 라이브러리 설계자가 기존 인터페이스에 새로운 메소드를 추가하면서도 그 인터페이스를 구현하는 모든 클래스에 대한 이전 버전 호환성을 유지할 수 있게 한다.
Java 9 ~ 10
Java 9 (2017년)
- 모듈 시스템(JPMS: Java Platform Module System)
- 이것은 자바 9의 가장 큰 변화로, 이를 통해 큰 코드 베이스를 더 작은 모듈로 분할할 수 있다. 이렇게 하면 코드의 재사용성, 유지 관리성, 성능이 향상될 수 있다.
- jshell(REPL: Read-Eval-Print Loop)
- 셸 기반 환경에서 간단한 자바 코드를 즉시 실행할 수 있다. 이 기능을 통해 개발자들은 더욱 빠르게 코드를 테스트하고 디버그할 수 있게 되었다.
- HTTP/2 클라이언트 API
- 이것은 자바 11에서는 정식으로 승격되었지만, 자바 9에서 처음 소개되었다. 이 API는 HTTP/2 프로토콜을 지원하며, 자바 9에서는 아직 실험적인 기능이었다.
- 향상된 Javadoc
- HTML5 마크업을 지원하고, 검색 기능을 통해 개발자들이 API 문서를 더 쉽게 탐색할 수 있다.
Java 10 (2018년) 이 버전은 많은 새로운 기능을 도입하진 않았지만, 몇 가지 중요한 변화를 가져왔다.