728x90
자바의 하위 호환성
자바는 이전 버전이 상위 버전의 JVM에서 동작이 보장되지만
상위 버전의 기능을 하위 버전의 JVM에서 컴파일 할 수는 없다.
즉, 8버전의 기능을 17버전에서 구동할 수는 있어도
17버전에만 있는 기능을 8버전에서 구동할 수는 없다.
JDK 1.1
- Inner Class
- JavaBeans (자바로 작성된 소프트웨어 컴포넌트)
- Remote Method Invocation (분산 애플리케이션 구축 시 사용되며 java.rmi 패키지에 제공된다)
- Reflection
J2SE 1.2
- Swing GUI
- JIT
- Collection Framework
J2SE 1.3
- Hotspot JVM
- Java Naming and Directory Interface (데이터 및 객체를 발견하고 참고하기 위해 사용)
- Java Platform Debugger Architecture
- JavaSound (오디오 재생 지원)
J2SE 1.4
- assert (단언문)
- 정규표현식
- IPv6
- Non-Blocking IO (nio)
- XML API
- JCE
- JSSE
- JAAS
- Java Web Start
J2SE 5
- Generics
- Annotation
- Concurrency API
- Enumeration
- Auto Boxing / Unboxing
- 가변 길이 파라미터
- Static import
- java.util.Scanner
Java SE 6
- 가비지 컬렉터 G1 GC를 테스트용으로만 사용하도록 추가
- Scripting Language 지원
- JDBC 4.0
Java SE 7
- Diamond Oeprator <>
- try 문에 선언된 자원들을 자동으로 관리
- Switch 문에서 String 사용 가능해짐
- Dynamic Language 지원
- 이진수 리터럴, 숫자 리터럴에 _ 지원
Java SE 8 (LTS)
- 람다 표현식
- 메서드 참조
- 인터페이스에 디폴트 메서드 구현 가능
- Optional
- Clock, ZoneId, LocalDate 등과 같은 날짜 API 추가
- 스트림 API
- Heap 영역의 PermGen 영역 제거
Java SE 9
- Jigsaw (런타임의 모듈화 지원, 애플리케이션의 경량화, 성능 향상, 유지보수 용이)
- java.net.http 패키지 추가
- JShell (테스트 프로젝트나 main 메서드 없이 신속한 테스트를 가능하게 대화식 REPL 도구 제공)
- <> 연산자를 익명 클래스에서도 사용 가능해짐
- try-with-resources 개선
- 인터페이스에서 Private 메서드 지원
- Optional의 스트림 지원
Java SE 10
- var 키워드로 지역 변수 타입 추론 가능
- 병렬 처리 GC
- 개별 쓰레드로 분리된 Stop-The-World
Java SE 11
- HTTP 클라이언트 API를 정식으로 포함
- String 클래스에 신규 메서드 추가
- 람다의 파라미터로 타입 추론 사용 가능
Java SE 12
- Switch 문의 문법 확장
- GC 개선
- 성능 개선
Java SE 13
- yield 예약어 추가
- Text-Block
Java SE 14
- instanceof의 패턴 매칭
- record 추가
Java SE 15
- Sealed 클래스 추가 (상속 가능한 클래스를 지정할 수 있는 봉인 클래스)
Java SE 16
- Unix 도메인 소켓에 연결 가능해짐
Java SE 17
- Random Generator (예측하기 어려운 난수 생성 API)
'Java > Notion' 카테고리의 다른 글
JVM Warm Up (0) | 2024.03.04 |
---|---|
Garbage Collection 파헤치기 (0) | 2024.03.03 |
JVM 뜯어보기 (컴파일, 인터프리팅, JIT, GC, 메모리) (0) | 2024.03.02 |
자바의 컴파일 과정 (0) | 2023.10.25 |
BigInteger (0) | 2023.05.08 |