Java
Java 9부터 변경점
9
  • Java Platform Module System(JPMS) → 라이브러리 만들때 제외하고는 사용이 드물다
  • 확장된 try-with-resources → try 밖 지역변수도 사용 가능
  • @SafeVarargs를 private 메소드에서도 사용 가능
  • 익명 Inner Class에도 diamon syntax(Generic 타입 명시 생략) 가능
  • Interface안에 private 메소드 사용 가능
  • '_' 하나만으로 변수,함수 이름 사용 불가능
  • Collection에서 정적(불변) 팩토리 메소드 'of' 추가
  • Optional에서 ifPresentOrElse, or, stream 메소드 추가
  • Stream
    • takewhile(predicate)1), dropWhile(predicate)2)
    • ofNullable(t)
    • iterate가 for문 인자와 비슷하게 개선 (limit 메서드 대체) → iterate(0, i -> i < 10, i -> i + 1);
  • CompletableFuture에 타임아웃(orTimeout(long)), 지연(CompletableFuture.delayedExecutor()) 기능 추가
  • Process API에서 native 프로세스를 제어할 수 있는 ProcessHandle 인터페이스 추가
  • StackWalker → Stack을 훑는 기능. Debug할 때 좋을 듯.
  • 내부 문자열 처리 방식 개선으로 메모리 절약. 기존에는 UTF-16 char 배열이었지만 문자에 따라 1byte 혹은 2byte가 필요한지에 따라 다르게 저장 → isLatin()
  • G1GC가 default GC. 이전 Parallel GC가 메모리를 물리적으로 나누었다면, G1GC는 메모리를 바둑판처럼 쪼갠 region이라는 논리적 개념으로 관리한다.
  • OOM 발생시 사용할 수 있는 옵션 두 가지 추가
    • ExitOnOutOfMemoryError
    • CrashOnOutOfMemoryError
  • Flow → Java에서 공식적으로 Reactive Stream API 추가. 직접 구현을 해보면 Observer 패턴
10
  • 타입 추론이 가능한, 가변 변수 예약어 'var'
  • Collection에서 깊은 복사 'copyOf' 팩토리 메소드 추가
  • G1GC 성능 개선
11(LTS)
  • var에 람다식 매개변수에 적용 가능
  • String, Predicate 기능 추가
  • Files 클래스에 파일 전체↔문자열 변환(readString/WriteString) 기능 추가
  • 새로운 Http Client 모듈
  • ZGC(experimetnal) → 25에서 정식 GC로 승격

1) 참인 경우 뒤에 버림
2) 참인 경우 앞에 버림
language/java.txt · Last modified: by ledyx