Java/자바의 신 VOL.2

16. Java 9에서 변경된 것들은?

h2boom 2024. 7. 10. 16:24

Java 9

  • java 버전 중 LTS 버전이 아닌 버전은 사용하지 않는 것이 좋다.
  • Spring 프레임워크 사용 시에도 사용할 수 있는 java 버전이 정해져 있기에 확인 후 사용하는 것이 좋다.

String 클래스

  • 문자열에 있는 값들을 char 배열에서 byte 배열로 변경했다.
    • 성능 개선과 메모리 효율을 위해서 변경함.
private final byte coder;
static final byte LATIN1 = 0;
static final byte UTF16 = 1;
  • String 클래스 내부에 다음과 같은 변수들이 존재한다.
    • 문자열에 2 byte짜리 문자가 포함되어 있으면 coder 값을 UTF16으로 지정하고 그렇지 않으면 LATIN1로 값을 지정한다.
      • 이러한 방식을 Compact String 이라고 한다.
  • Java 9 부터는 Compact String 기능이 자동적으로 켜져있기에 성능 개선에 효과적이다.

Interface private method

  • interface에 priate 메소드를 추가할 수 있다.
    • 해당 인터페이스를 구현하는 개발자에게 노출하지 않고 인터페이스 내부에서만 사용 가능한 메소드를 생성하기 위함.
    • 인터페이스 내 java 8부터 가능한 default method나 static method에서 사용하기 위한 용도의 메소드다.
  • private 메소드를 인터페이스 내에 만들면 인터페이스를 구현하는 클래스에서는 구현이 어떻게 되어 있는지 고려할 필요 없이 개발할 수 있다.

Publish-Subscribe 프레임워크

  • 메신저로 메시지 / 이메일을 보내는 경우 받는 사람의 입장에서 보면 두 가지 방식이 있다.
    • pulling (풀링) : 필요 시 데이터를 처리하도록 요청하는 것.
    • polling (폴링) : 주기적으로 요청을 해서 변경된 것이 있는지 확인하고 없으면 작업하지 않는 것.
  • pulling 방식이 Publish-Subscribe 개념에 해당된다.
    • 일반적으로 "펍섭"이라고 부른다.
    • 메시지를 보낸 순서를 보장하면서 처리가 가능하게 해준다.
  • 메시지를 보내는 publisher, 메시지를 받아 처리하는 subscriber, publisher와 subscriber를 연결시키는 subscription이 있다.
    • publisher는 처리 가능한 숫자만큼 subscriber에게 아이템을 전달한다.
    • subscriber는 얼마나 많은 아이템을 subscriber가 받을지 알려준다.
    • 아이템 = subscription
  • 처리해야 할 것이 복잡하고 많은 경우 publisher와 subscriber 사이에 processor가 있다.
    • Subscriber -> Processor -> Publisher 순으로 요청을 한다.
    • Publisher -> Processor -> Subscriber 순으로 아이템을 전달한다.
    • 이 경우 publisher는 subscriber가 누구인지 모르고 processor에게 전달한다.

출처: 이상민, <자바의 신 VOL.2> 로드북