Be-Developer

JAVA 10 release

JAVA 10

1. var (local variable)

타입 추론 변수사용이 가능하다.

  • 제약조건
    1. 지역변수에서 사용가능.(클래스에서 x)
    2. 초기화가 필수, null초기화 불가
    3. 배열에 사용불가
       var arr = {1,2,3};
      
    4. 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 발생

    1. copyOf가 새로생겼고, immutable을 반환한다.
      List.copyOf(someList);
      Set.copyOf(someSet);
      
    2. Collectors.toUnmodifiable*()
      List<Integer> evenList = someIntList.stream()
       .filter(i -> i % 2 == 0)
       .collect(Collectors.toUnmodifiableList());
      

      3. Optional*.orElseThrow()

      Exception을 지정해주지않아도 NoSuchElementException가 throw된다.

      4. Performance

    3. G1 GC
    4. 5. Container awareness

# docker와 같은 container환경에서 실행시, cpu, total memory등을 장비전체에서 쿼리하지않고, 해당 컨테이너에 할당받은 양 만을 조회한다.
-XX:-UseContainerSupport
# jvm이 사용할 cpu수를 직접 입력 가능.
-XX:ActiveProcessorCount=count
# container가 java Heap에 사용될 메모리를 설정할수있다.
-XX:InitialRAMPercentage
-XX:MaxRAMPercentage
-XX:MinRAMPercentage

6. Root Certificates


출처