JAVA 9에서의 중요한 업데이트와 기능들을 정리하였다.
- String 클래스
- JAVA9부터는 문자열에 있는 값들을 char 배열에서 byte배열로 변경됨, 변경된 이유는 성능 개선과 메모리 효율을 위함
- 영문, 숫자, 키보드에 있는 특수문자 : Latin-1 (1byte), 다른 한글, 한자와 같은 문자 : UTF16 (2byte)
- 내부적으로 coder값을 사용하여 문자열에 따른 coder 방식을 변경하는 것을 자바에서는 Compact String이라고 함.
private final byte coder;
static final byte LATIN1 = 0;
static final byte UTF16 = 1;
- Interface의 private 메소드를 추가할 수 있음
- private 메소드를 추가하게 되면 해당 인터페이스를 구현하는 개발자에게는 노출하고 싶지 않은, 인터페이스 내부에서만 사용 가능한 메소드를 생성할 수 있음
- private 메소드는 아래와 같은 규칙이 있음
(1) abstract 메소드로 선언은 안됨, private과 abstract 접근제어자를 같이 사용해도 안됨
(2) 인터페이스 내에 선언한 메소드와 static이나 static이 아닌 인터페이스 메소드에서만 사용 가능함
(3) private로 선언한 static이 아닌 메소드는 다른 private static 메소드에서 사용 불가능함
(4) private으로만 선언해야함
- 새로운 HTTP 클라이언트
- 오픈소스 라이브러리처럼 편하게 서버를 호출해서 결과를 받아올 수 있음
- HttpClient, HttpRequest, HttpResponse
public void newHttpClient(){
try {
HttpClient client = HttpClient.newBuilder()
.connectTimeout(Duration.ofSeconds(5))
.build();
HttpRequest request = HttpRequest.newBuilder()
.GET()
.timeout(Duration.ofSeconds(10))
.uri(URI.create("https://www.google.com"))
.build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
} catch( Exception e ) {
e.printStackTrace();
}
}
- Publish-Subscribe 프레임워크
풀링 : 필요시 데이터를 처리하도록 요청하는 것
폴링 : 주기적으로 요청을 해서 변경된 것이 있는지 확인하고 없으면 아무런 작업을 않고, 변경된 것이 있으면 해당 작업을 처리하는 것.
- 펍섭, 대부분의 메신저가 이러한 개념, 풀링에 해당함
- Publisher: 데이터의 생산자로, 구독자가 구독을 요청하면 데이터 항목을 발행(publish)함
- Subscriber: 데이터의 소비자로, 필요한 데이터를 받기 위해 퍼블리셔에 구독하여 받은 데이터를 처리하고, 처리할 수 있는 데이터의 양을 퍼블리셔에 알려주어 데이터의 흐름을 제어
- Subscription: 퍼블리셔와 구독자 사이의 계약으로, 구독자는 이 객체를 사용해 얼마나 많은 데이터를 받을 준비가 되었는지를 퍼블리셔에 요청함
- Processor: 퍼블리셔와 구독자 역할을 동시에 수행하는 요소로, 입력 데이터 스트림을 받아 처리한 후 새로운 데이터 스트림으로 출력할 수 있음
- 메시지를 보낸 순서를 보장하면서 처리 가능
- 비동기 처리 : 데이터 스트림의 처리를 비동기적으로 수행할 수 있어, 시스템의 확장성과 반응성을 향상 시킬 수 있음
- 백 프레셔 관리 : 구독자는 자신이 처리할 수 있는 데이터의 양을 퍼블리셔에게 알려주서 데이터의 과부하를 방지함, 이를 통해서 퍼블리셔와 구독자 간의 데이터 처리 속도 차이를 효과적으로 관리할 수 있음
- 자바의 모듈화-직소 프로젝트
- 직소 퍼즐과 같이 서로 끼워 맞춰 사용할 수 있도록 모듈화하기 위한 프로젝
트
- module-info.java라는 파일이 자바 패키지 최상단에 위치해야함
- 모듈성, 명시적인 의존성, 강력한 캡슐화등의 특징이 있음.