Be-Developer

JAVA 12 release

JAVA 12

  • preview 제외
  • 2019/03

    기능

    New String Methods

    indent

  • 들여쓰기 삽입, 삭제 가능
    "Hello".indent(5)           //      Hello
    "     Hello".indent(-30)     //Hello
    

    transform

  • 람다를 넘겨서 조작가능
    "Hello".transform(value -> new StringBuilder(value).reverse().toString());  //olleH
    

    File::mismatch

  • 두 파일의 내용이 다른 첫번째 바이트 위치 반환
  • 같으면 -1L 반환

    Teeing Collector

  • 2개의 collector를 거쳐 마지막 merger function에서 결과가 취합되는방식
    @Test
    public void givenSetOfNumbers_thenCalculateAverage() {
      double mean = Stream.of(1, 2, 3, 4, 5)
        .collect(
          Collectors.teeing(
              Collectors.summingDouble(i -> i),       // 첫번째 collector, 15.0
              Collectors.counting(),                  // 두번째 collector, 5
              (sum, count) -> sum / count));          // 첫번째 collector의 결과 sum, 두번째 collector의 결과 count
      assertEquals(3.0, mean);
    }
    

    Compact NumberFormatting

  • korea 의 경우, Style.SHORT, Style.LONG 이 같음.
    NumberFormat likesShort =
              NumberFormat.getCompactNumberInstance(Locale.KOREA, NumberFormat.Style.SHORT);
          likesShort.setMaximumFractionDigits(2);
          likesShort.format(12345);   // 1.23만
    

    JVM Changes

    experimental Shenandoah GC

  • heap사이즈와 관련없이 GC의 pause time은 비슷해야한다는것이 목표.

    Microbenchmark Suite

  • 성능측정 도구가 포함되었다.

    Default CDS Archive : Class Data Sharing

  • 하나의 장비에서 여러개의 JVM 구동시 시작시간을 줄일 수 있고, 자원에 미치는 영향을 줄일 수 있다.
  • 공통으로 사용하는 클래스들을 공유저장소에 위치하고 공유해서 사용한다. .jsa
  • 특정 코어 라이브러리가 포함된 빌드시에 생성된 클래스목록을 사용한다.
  • java 12에서는 CDS사용이 기본으로 enable 되어있으며, 끌려먼 -Xshare:off 옵션을 사용해야한다.
  • CDS 사용을 위해 ...jdk/lib/server/classes.jsa 가 기본으로 생성된다.

  • Baeldung
  • JDK12