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