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