JAVA 버전별 특징
출처1 : https://thatisgood.tistory.com/entry/Java-10-버전-특징
출처2 : https://ggomi.github.io/jdk-version/
JDK 1.0
- 1996년, JDK 1.0발표
 
JDK1.1
- 
1997년
 - 
JDBC, RMI, Reflection, JIT, Inner Class
 
JDK 1.2
- 
1998년
 - 
자바를 세가지 버전으로 나눴다(Java SE 1.2, ME 1.2, EE 1.2 발표)
 
JDK 1.3
- 
2000년
 - 
HotSpot(Sun에서 만든 JIT구현)
 - 
JNDI
 
JDK 1.4
- 
2002년
 - 
Regular Expression, Assert keyword, Security 2 version, Non Blocking IO(NIO)
 
Java 5
- 
2004년
 - 
Generics , annotation, auto boxing, enum,vararg ,foreach, static imports
 - 
java.util.concurrent API, scanner class
 
Java 6
- 
2006년
 - 
G1(Garbage First) GC 지원
 
Java 7
- 
2011년
 - 
try-resource, generics 내 타입추론, 숫자에서 underscore 사용 가능
 - 
Type Inference (타입 추론)
// 7 버전 이전 List<String> list = new ArrayList<String>(); //7 버전 이후 List<String> list2 = new ArrayList<>(); - 
String in switch
switch (a) { case "jeongmin": System.out.println("asd"); break; case "jeongmin2": System.out.println("qweqwe"); break; default: break; } - 
Catching Multiple Exception Type in Single Catch Block
 
Java 8
- 
2014년
 - 
오라클 인수 후 첫번째 버전
 - 
2개 버전으로 나뉨(Oracle JDK, OpenJDK)
 - 
Lambda, new Date and Time API(LocalDateTime, …)
 - 
interface default method
 - 
interface static method
 - 
Optional
 - 
Stream
 - 
PermGen Area 제거
 
Java 9
- 
2017년
 - 
모듈시스템 등장(jigsaw)
 - 
interface private method
 
Java 10
- 
2018.03
 - 
var 키워드
 - 
병렬 처리 가비지 컬렉션 도입으로 인한 성능 향상
 - 
JVM 힙 영역을 시스템 메모리가 아닌 다른 종류의 메모리에도 할당 가능
 
Java 11
- 
2018.09
 - 
Oracle JDK와 OpenJDK 통합
 - 
Oracle JDK가 구독형 유료 모델로 전환
 - 
서드파티 JDK 로의 이전 필요
 - 
lambda 지역변수 사용법 변경
(var x, var y) -> x.process(y) => (x, y) -> x.process(y) 
Java 12
- 
2019.03
 - 
switch문 확장
 
Java 13
- 
2019.09
 - 
Multiline Strings (Preview)
 
Java 14
- 
2020.03
 - 
record (Preview)
 
Java 15
- 
2020.09
 - 
Multiline Strings
 - 
Sealed Classes (Preview)
 
Java 16
- 2021.03
 
Java 17
- 
2021.09
 - 
Java LTS
 - 
Sealed Classes
 - 
Deprecating the Security Manager