JAVA를 주언어로 사용하는 개발자라면 JAVA 버전별 특징에 대해 꾸준히 업데이트 해놓으면 좋을것 같다.
▶ JAVA 7
- 2011년 7월 7일 발표
- try-with-resource 추가
- switch문에서 String 사용 가능 (JAVA6에서는 switch문에서 String 사용할 수 없었다니..충격)
- 타입추론(Type Inference): Diamond Operator <> 추가
JAVA 7이전에는 선언시에도 제네릭 타입을 명시해야 했지만 JAVA 7부터는 컴파일러가 알아서 추론하게끔 가능해졌다.
// JAVA 7 이전 List<String> stringList1 = new ArrayList<String>(); // JAVA 7 - Diamond Operator 추가 List<String> stringList2 = new ArrayList<>();
▶ JAVA 8
- 2014년 3월 18일 발표
- 오라클 인수 후 첫번째 버전, LTS(Long-Term-Support:장기 지원) 버전
- 람다식(Lamda Expression), 함수형 프로그래밍 등장
- new Date and Time API (LocalDate, LocalTime, LocalDateTime)
- Interface default method
- 인터페이스에 default 접근자로 메소드 선언이 가능해졌다. 또한 이를 구현하는 클래스는 default 메소드를 오버라이딩할 수 있다. - Optional
- PermGen Area 제거
▶ JAVA 9
- 2017년 9월 21일 발표
- 모듈시스템 등장(jigsaw)
▶ JAVA 10
- 2018년 3월 20일 발표
- var 키워드를 이용한 지역변수 타입 추론
- 병렬처리 가비지컬렉션
- 개별 쓰레드로 분리된 Stop-The-World
- JVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당 할 수 있게됨
▶ JAVA 11
- 2018년 9월 25일 발표, JAVA8에 이은 LTS 버전
- Oracle JDK와 Open JDK의 분리 - 차이는 거의 없음
- Oracle JDK의 구독형 유료 모델로 전환
▶ JAVA 12
- 2019년 3월 19일 발표
- switch문 확장
- 이전
switch (day) { case MONDAY: case FRIDAY: case SUNDAY: System.out.println(6); break; case TUESDAY: System.out.println(7); break; case THURSDAY: case SATURDAY: System.out.println(8); break; case WEDNESDAY: System.out.println(9); break; }
- JAVA 12
switch (day) { case MONDAY, FRIDAY, SUNDAY -> System.out.println(6); case TUESDAY -> System.out.println(7); case THURSDAY, SATURDAY -> System.out.println(8); case WEDNESDAY -> System.out.println(9); }
▶ JAVA 13
- 2019년 9월 17일 발표
- switch문에 yield 예약어 추가
▶ JAVA 14
- 2020년 3월 18일 발표
- instanceof 패턴 매칭
- record라는 데이터 오브젝트 선언 추가
▶ JAVA 15
- 2020년 9월 15일 발표
- EdDSA 암호화 알고리즘 추가
- 스케일링 가능한 낮은 지연의 가비지 컬렉터 추가(ZGC)
- Solaris 및 SPARC 플랫폼 지원 제거
- 외부 메모리 접근 API
- 클래스 봉인
- 상속 가능한 클래스를 지정할 수 있는 봉인 클래스 제공
- 상속가능한 대상은 상위클래스 또는 인터페이스 패키지 내에 속해있어야 한다.
▶ JAVA 16
- 2021년 3월 16일 발표
- Vector API: 자동 병렬 프로세싱을 지원하는 자동 백터 API 추가
- Open JDK 소스를 Github에서 볼 수 있게됨.
- 자바8에서 제거된 PermGen 대신 Metaspace 방식을 지원
▶ JAVA 17
- 2021년 9월 15일 출시 예정 (두둥!)
- JAVA8, 11에 이은 LTS 버전이라고 함
모르는 것 투성이네.. 공부해야 할 것이 너무 많당 ㅠㅠ
참고
https://namu.wiki/w/Java#s-4.10
https://www.skyer9.pe.kr/wordpress/?p=287
'개발 > Java' 카테고리의 다른 글
Java의 volatile 키워드 (0) | 2021.10.21 |
---|