Java 11 버전에서 추가된 주요 기능을 알아봅니다.
1. HTTP2 클라이언트
- HttpClient 클래스를 사용하여 HTTP2 프로토콜 사용을 지원합니다.
- 다음은 HTTP2를 사용하여 네이버에 요청을 보내는 코드입니다.
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://www.naver.com"))
.GET()
.build();
client.sendAsync(request, BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
2. 정적 기본 메소드
추가된 정적 기본 메소드 중 가장 흔히 사용하는 of 메소드에 알아봅니다.
of 메소드는 주어진 요소들로 부터 새로운 불변 컬렉션(Immutable Collection) 생성에 사용됩니다.
List<Integer> list = List.of(1, 2, 3);
Set<String> set = Set.of("a", "b", "c");
Map<Integer, String> map = Map.of(1, "one", 2, "two", 3, "three");
3. String 클래스 lines() 함수
문자열내 개행값을 분리하여 스트림으로 반환하는 함수
String str = "Hello\nWorld\n";
str.lines().forEach(System.out::println);
// Output:
// Hello
// World
- 기타 String클래스에 추가된 유용한 함수로, strip, stripLeading, stripTrailing이 있습니다.
String input = " leading and trailing whitespaces ";
System.out.println(input.strip()); // "leading and trailing whitespaces"
System.out.println(input.stripLeading()); // "leading and trailing whitespaces "
System.out.println(input.stripTrailing()); // " leading and trailing whitespaces"
4. var
자바스크립트, 파이썬과 같이 변수 타입을 추론하여 타입을 지정하는 var를 사용할 수 있습니다. 😍
var list = new ArrayList<String>();
list.add("Hello");
list.add("World");
System.out.println(list);
5. 지연 초기화 ( Lazy Initialization )
객체 생성시 높은 비용을 요구하는 클래스가 있다고 할 때, 해당 클래스가 필요할 때만 생성하면 됩니다. 이를 위해 Java 11에서 도입된 Lazy 클래스를 사용합니다.
class LazyInitExample {
private final Lazy<ExpensiveObject> expensive = Lazy.of(ExpensiveObject::new);
public void doSomething() {
// ExpensiveObject has not yet been created
// ...
// ExpensiveObject is needed
ExpensiveObject obj = expensive.get();
// use obj
// ...
}
}
- get() 을 사용하여 실제 ExpensiveObject 클래스가 필요할 때 생성합니다.
반응형
'Web Programming' 카테고리의 다른 글
RESTFul API 패키지 구조 설계안 ( 버전 우선, 도메인 우선 등 방식 비교 ) (0) | 2023.01.30 |
---|---|
Java 17 주요 특징 with 예제 샘플 코드 (2) | 2023.01.29 |
Java - 문제 해결: UnrecognizedPropertyException: Unrecognized field (0) | 2022.11.24 |
Java Map객체를 Pojo(Model) class로 변환 ( JsonSetter, ObjectMapper 사용법 ) (0) | 2022.11.24 |
Java - Lombok활용법, 쉽게 Builder class 만들기 (0) | 2022.10.14 |