그 동안의 무심함에 미안함을 조금 가지며 JAVA 근황을 좀 살펴 보았다. 보아하니 발전을 많이 했다기 보다 버전만 열심히들 올렸네. 8인가 열심히 쓰고 있었는데 16이라니... 앞으로 신규 프로젝트들은 뭘루 시작해야 하나. OpenJDK 8 과 11 사이에서 어떤 것이 현명한 선택인지 모르겠다.
Java 버전 별 변경점들을 정리해 봤다.
Java SE 17 LTS (2021.09)
- Java 8, 11 을 잇는 세번째 LTS 버전(3년마다 배포)
- 애플릿 완전 제거
Java SE 16 (2021.03)
- OpenJDK 버전관리가 Mercurial 에서 Git 으로 변경.
- jpackage 명령어로 자바 프로그램 손쉽게 배포(pkg, deb, msi 등)
- 패턴 매칭 정식 지원
- Record 형식 정식 지원
Java SE 15 (2020.09)
- EdDSA 암호화 알고리즘 추가
- 다중 텍스트 블록 (""")
Java SE 14 (2020.03)
- instanceof 패턴 매칭
- record (data object) 선언 기능 추가
Java SE 13 (2019.06)
- switch 문에 yield 예약어 추가
Java SE 12 (2019.03)
- Switch 문의 확장 : case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
Java SE 11 LTS (2018.09)
- 일반 지원은 2023년 9월, 연장 지원은 2026년 9월에 종료될 예정
- Oracle JDK 와 Open JDK 통합 (Oracle JDK는 구독형 유료 모델로 전환)
- 이클립스 재단으로 넘어간 Java EE가 JDK에서 삭제되고, JavaFX도 JDK에서 분리되어 별도의 모듈로 제공.
- 람다 파라미터에 대한 지역변수 문법 변경: (var x, var y) -> x.process(y) => (x, y) -> x.process(y)
- HTTP 클라이언트 표준화 기능 추가 (jdk.incubator.http 패키지가 표준화되어 java.net.http 패키지로 추가)
- 엡실론(Epsilon) 가지비 컬렉터 : 오버헤드의 최저지연과 할당 제한이 가능한 완전한 수동 가비지 컬렉터 적용
Java SE 10 (2018.03)
- var 키워드를 이용한 지역변수 선언 및 타입추론 가능
- 병렬 처리 가비지 컬렉션 도입으로 인한 성능 향상
- JVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당 가능
- 루트 CA 목록 추가
- JDK의 Repository가 하나로 통합
- Deprecated된 API는 Java SE 10에서 모두 삭제
Java SE 9 (2017.09)
- Jigsaw 기반 런타임 모듈화(기존 jar 방식 개선)
- JAVA 를 인터프리터 언어 쉘처럼 사용할 수 있는 JShell 추가
- immutable collection / HTTP/2 / private 인터페이스 메소드 / HTML5 Javadoc / 프로퍼티 파일에 UTF-8 지원
- 1.x 버전에서 9.0 으로 판올림이 일어나며, 6개월마다 새로운 버전 업데이트
Java SE 8 (2014.03)
- Oracle JDK vs Open JDK (오라클 인수 후 첫번째 버전)
- Lambda 표현식 및 함수형 프로그래밍
- 날짜 및 시간 API(java.time 패키지)
- Stream API 추가
- JavaScript 엔진 Rhino -> Nashorn
- 32비트를 지원하는 마지막 공식 Java 버전
Java SE 7 (2011.07)
- Switch 문에서 문자열 사용 가능 : case "MON"
- generics 타입 추론(생략 가능) : Map<String, Object> map = new HashMap<>();
- try-with-resources 자동 리소스 해제(close) : try (SomeResource resource = getResource()) { ...
- Diamond Operator <> 지원
- 멀티프로세서 처리 : Fork/Join Framework
- ECC 암호화 내장
- 이진수 표현 (2진수는 0b, 8진수는 0, 16진수는 0x로 시작)
Java SE 6 (2006.12)
- J2SE 에서 Java SE 로 표기가 바뀜.
- JDBC 4.0, Java Compiler API, Pluggable Annotation 등이 추가
- Rhino JavaScript 엔진이 기본으로 탑재
Java SE 5 (2004.09)
- generics, annotation, enum, foreach, ...
WRITTEN BY
- 손가락귀신
정신 못차리면, 벌 받는다.