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> 로드북