사용자 도구

사이트 도구


java:9

문서의 이전 판입니다!


Java 9

Collection Factory Methods

  • Set.of, List.of, Map.of
  • 완전한 immutable 컬렉션을 만들어준다.
  • null 값을 넣을 수 없게 방어해준다.
  • Set,Map 은 중복값을 넣는 경우에도 오류를 발생시켜 방어해준다.
  • 컬렉션 크기가 명확하게 정해지기 때문에 공간 최적화가 된다.
  • Collections.unmodifiableXxx
    • 원본 컬렉션에 추가, 삭제 등이 일어나면 unmodifiable 컬렉션에 이 값이 반영된다. 즉, 완벽한 immutable 이 아니다.
    • null 값을 넣을 수 있다.

G1 GC

  • Java G1 GC가 기본 Garbage Collector 가 된다.

Compact Strings

  • 원래 Stringchar []로 표현되고 char는 UTF-16 으로 2byte 를 차지했다.
  • Java 9 에서는 byte[] 로 저장하여 1byte 단위로 공간을 차지하게 최적화 하였다.
  • Latin-1 문자로 이루어진 경우에는 coder 라는 String 의 내부 변수를 LATIN1으로 설정하여 1 바이트 단위로 읽고
  • UTF-16일 경우에는 coder 값을 UTF_16 으로 설정하고 2 바이트 단위로 읽는다.
  • StringBuilderStringBuffer에도 최적화가 반영되어있다.
  • Memory 사용량이 줄고 줄고 그로인해 GC도 적어지고 성능이 좋아졌다.

참고

String Concat

Java 에서 문자열을 연결할 때는 StringBuilder 를 사용해야 한다 → JDK 9 부터는 그냥 + 연산으로 연결하는게 제일 빠르다.
“+ is no longer compiled to StringBuilder.” In their “Lessons from Today” slide, they state, “Use + instead of StringBuilder where possible” and “recompile classes for Java 9+.”

Resourcebundle UTF-8

java.util.PropertyResourceBundle.encoding=ISO-8859-1
  • Properties 는 기본 ISO-8859-1 이고, 명시적으로 Reader 인코딩을 UTF-8로 지정해야만 한다.
java/9.1673675163.txt.gz · 마지막으로 수정됨: 2023/01/14 14:46 저자 kwon37xi