JAVA 8
- 기본 GC > Parallel GC
- Lambda Expression
- Repeating Annotation
import java.lang.annotation.Repeatable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Repeatable(Colors.class) @interface Color { String name(); } @Retention(RetentionPolicy.RUNTIME) @interface Colors { Color[] value(); } @Color(name = "red") @Color(name = "blue") @Color(name = "green") class Shirt { }
사용
public class RepeatingAnnotations {
public static void main(String args[]) {
Color[] colorArray = Shirt.class.getAnnotationsByType(Color.class);
for (Color color : colorArray) {
System.out.println(color.name());
}
}
}
- 새로운 날짜와 시간 API(LocalDate, LocalTIme, LocalDateTime)
- Interface Default Method
- Stream API
JAVA 9
- Java를 인터프리터 언어 셸처럼 사용할 수 있는 JShell이 추가
- private 인터페이스 메소드
- immutable collection
- 64비트 버전만 출시
- 프로퍼티 파일에 UTF-8 지원
JAVA 10
- var 키워드를 이용한 지역 변수 타입 추론
- 병렬 처리 가비지 컬렉션
- 개별 쓰레드로 분리된 Stop-The-World
- 루트 CA 목록
JAVA 11
- 기본 GC > G1 GC
- 람다 파라미터에 대한 지역 변수 문법
- 엡실론 가비지 컬렉터
- 엡실론 가비지 수집기는 할당을 처리하지만 메모리를 회수하지는 않는고 힙이 소진되면 JVM이 종료된다. 엡실론은 수명이 짧은 서비스와 가비지를 사용하지 않는 것으로 알려진 애플리케이션에 유용하다.
- Epsilon GC를 사용할 경우 우리가 작성한 어플리케이션이 외부 환경으로부터 고립된 채로 실행되기 때문에 실제 내 어플리케이션이 얼마나 메모리를 사용하는 지에 대한 임계치나 어플리케이션 퍼포먼스 등을 보다 정확하게 측정할 수 있다.
- HTTP 클라이언트 표준화(HttpClient 추가)
JAVA 12
- Shenandoah GC 추가. Shenandoah는 ZGC와 비슷하게 대량의 메모리 처리에 우수한 퍼포먼스를 내지만 좀 더 많은 옵션을 제공한다는 장점이 있다. Shenandoah는 레드 햇에서 개발한 GC인데, 실제로는 ZGC보다 앞선 Java 8부터 개발하기 시작해서 12가 나올 때 release를 하였다
- Switch 문 확장
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); }
-
Microbenchmarking(마이크로밴치마킹) : org.openjdk.jmh
JAVA 13
- switch yield 예약어가 추가
var a = switch (day) {
case MONDAY, FRIDAY, SUNDAY:
yield 6;
case TUESDAY:
yield 7;
case THURSDAY, SATURDAY:
yield 8;
case WEDNESDAY:
yield 9;
};
JAVA 14
- instanceof 패턴 매칭
if (!(obj instanceof String s)) {
.. s.contains(..) ..
} else {
.. s.contains(..) ..
}
- record 타입 지원
record Point(int x, int y) { }
JAVA 15
- EdDSA 암호화 알고리즘 추가
- 패턴 매칭
- 스케일링 가능한 낮은 지연의 가비지 컬렉터 추가(ZGC)
- Solaris 및 SPARC 플랫폼 지원 제거
- 외부 메모리 접근 API (인큐베이팅)
- 클래스 봉인 (미리보기)
- 상속 가능한 클래스를 지정할 수 있는 봉인 클래스가 제공된다.
- 상속 가능한 대상은 상위 클래스 또는 인터페이스 패키지 내에 속해 있어야 한다.
package com.example; public sealed class Animal Dog, com.example.Monkey, com.example.Leopard { // ... }
- 다중 텍스트 블록
String html = """
Hello, world
""";
'Develop > java,spring' 카테고리의 다른 글
Okta(옥타) SSO(OIDC - Open ID Connect Application) 로그인 (1) | 2020.11.30 |
---|---|
Java Stream GroupingBy 사용 (0) | 2020.11.26 |
JAVA var 키워드 (0) | 2020.11.18 |
JPA 순환 참조 해결 방법 (0) | 2020.11.17 |
Intellij 단축키 (0) | 2020.11.12 |