반응형
유니코드 10 지원
16,018명의 새로운 캐릭터, 18개의 새로운 블록, 10개의 새로운 스크립트
httpClient 표준화
JDK9, 10에서 jdk.incubator.http
로 인큐베이팅되었던 내용이 java.net.http.HttpClien
으로 표준화
Collection.toArray(IntFunction) 추가
java.util.Collection 추가, 기존 stream으로 받아서 처리해야 하던 부분을 Collection으로 처리 가능
@Test
public void Test(){
List<String> list = Arrays.asList("NYC", "New Delhi");
// Java 8
String[] array = list.stream()
.toArray(String[]::new);
System.out.println(Arrays.toString(array));
// Java 11
String[] array1 = list.toArray(String[]::new);
System.out.println(Arrays.toString(array1));
}
Lazy Allocation of Compiler Threads 기능 추가
- 컴파일 스레드는 기본적으로 켜져 있으며, 계층화된 컴파일 모드에서 VM이 사용 가능한 메모리와 컴파일 요청수와 상관없이 많은 수의 리소스를 컴파일러에게 할당 시작하기 때문에 메모리를 비효율적으로 사용
-XX:+UseDynamicNumberOfCompilerThreads
옵션을 사용하여 컴파일 스레드가 효율적으로 동작하도록 변경
ZGC A Scalable Low-Latency Garbage Collector 실험용
- 기존 Garbage Collector의 저지연, 동시 가비지 수집기로 Z Garbage Collector(ZGC)
- 가바지를 위한 중지 시간이 10ms 초과하지 않음
- heap 또는 live-set size의 크기에 따라 일시 중지 시간이 증가하지 않음
- 수 테라바이트 크기 처리 가능
- Java의 스레드가 실행 중에도 작업이 이루어지기 때문에, 애플리케이션의 응답 속도에 미치는 큰 영향 없음
- ZGC는 실험 기능으로 활성화를 위해서는
-XX:+UnlockExperimentalVMOptions
,-XX:+UseZGC
옵션으로 활성화 - Linux/x64에서만 사용 가능
- Graal과 함께 ZGC를 사용하는 것은 지원되지 않음
Epsilon, A No-Op Garbage Collector
- Epsilon GC는 새로운 실험적 무작동 가비지 수집기, 메모리 할당만 진행, 회수는 하지 않음
Low-Overhead Heap Profiling
- 시스템 부하가 적은 힙 프로파일 기능 제공
- 지속적으로 활성화 가능하도록 낮은 오버 헤더
- 인터페이스(JVMTI)를 통하여 접근 가능
- 할당된 모든 자원 샘플링 가능(특정 영역, 특정 방식으로 할당된 자원을 제한하지 않음)
- 독립적 방식으로 정의 가능(특정 GC 또는 VM 구현에 의존하지 않음)
- Live, Dead 객체에 대한 정보 제공
Nest-Based Access Control
- JVM에서 클래스와 인터페이스를 중첩해서 사용 가능하지만, 중첩으로 사용된 유형에서 private Field, private Method의 접근 권한을 각 클래스에서 관리하여, 중첩 클래스에서 상위 객체로 접근이 불가능했던 부분을
nest
라는 새로운 액세스 제어 컨텍스트를 통하여 지원 - https://sejoung.github.io/2018/09/2018-09-27-JEP_181/#JEP-181-Nest-Based-Access-Control
ChaCha20 및 Poly1305 암호화 알고리즘 지원
- ChaCha20 및 ChaCha20-Poly1305 암호를 구현
TLS 1.3 지원
Lambda 매개 변수로 로컬 변수 지원
- Local-Variable Syntax for Lambda Parameters
var
keyword로 람다 매개변수를 선언할 때와 local variable 선언하여 사용 가능var
타입을 유추하여 지원- 람다 매개 변수로
var
선언시 해당 람다의 모든 변수는var
타입 사용
var arrInteger = new Integer[]{5, 9, 3, 6, 2, 4, 8, 7, 1};
long cnt = Arrays.stream(arrInteger).filter(
(@Nonnull var a) -> (a != null && a > 5)).count();
System.out.println(cnt);
Thread.destroy() 및 Thread.stop(Throwable) 메서드 제거
Nashorn JavaScript 엔진 사용 중단
- Nashorn JavaScript 스크립트 엔진과 API, jjs 도구는 향후 릴리스에서 제거할 가능성
- Nashorn 엔진과 jjs셸 도구는 사용 중단에 대한 경고 메시지가 표시되며,
--no-deprecation-warning
옵션으로 메시지 비활성화
이 외에도 변경되거나 비활성화된 내용이 더 존재하며, https://www.oracle.com/java/technologies/javase/11-relnote-issues.html에서 관련 정보의 확인이 가능
참고
반응형
'FullStack > 21. Java' 카테고리의 다른 글
JAVA - HTTP 서비스 포트 찾기 (0) | 2022.11.08 |
---|---|
Maven 란 (0) | 2022.02.15 |
[Java] The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12] (0) | 2021.09.10 |
[UTIL] String 템플릿 + Map 결합하여 문자열 생성 (0) | 2021.09.07 |
[Oracle] JDBC 변경 후 - Could not commit with auto-commit set on (0) | 2021.06.21 |