JAVA 10
1. var (local variable)
타입 추론 변수사용이 가능하다.
- 제약조건
- 지역변수에서 사용가능.(클래스에서 x)
- 초기화가 필수, null초기화 불가
- 배열에 사용불가
var arr = {1,2,3};
- Lambda식 사용 불가
- 주의
- double, float / int, long 구분 주의
- diamond 사용시 object로 생성되므로 주의해야한다.
// DANGEROUS: infers as PriorityQueue<Object> var itemQueue = new PriorityQueue<>();
- 예
chaining을 끊을때 var를 유용하게 사용할 수 있다.
var freqMap = strings.stream() .collect(groupingBy(s -> s, counting())); var maxEntryOpt = freqMap.entrySet() .stream() .max(Map.Entry.comparingByValue()); return maxEntryOpt.map(Map.Entry::getKey);
2. unmodifiable Collections
수정 시도시
UnsupportedOperationException
발생- copyOf가 새로생겼고, immutable을 반환한다.
List.copyOf(someList); Set.copyOf(someSet);
- Collectors.toUnmodifiable*()
List<Integer> evenList = someIntList.stream() .filter(i -> i % 2 == 0) .collect(Collectors.toUnmodifiableList());
3. Optional*.orElseThrow()
Exception을 지정해주지않아도
NoSuchElementException
가 throw된다.4. Performance
- G1 GC
-
5. Container awareness
- copyOf가 새로생겼고, immutable을 반환한다.
# docker와 같은 container환경에서 실행시, cpu, total memory등을 장비전체에서 쿼리하지않고, 해당 컨테이너에 할당받은 양 만을 조회한다.
-XX:-UseContainerSupport
# jvm이 사용할 cpu수를 직접 입력 가능.
-XX:ActiveProcessorCount=count
# container가 java Heap에 사용될 메모리를 설정할수있다.
-XX:InitialRAMPercentage
-XX:MaxRAMPercentage
-XX:MinRAMPercentage
6. Root Certificates
출처