Spring Framework 6.0, Spring Boot 3.0 에서 Java 17 버전을 선택하여 9 버전 이후부터 업데이트 된 내용을 확인하고자 한다.
[Preparing for Spring Boot 3.0](https://spring.io/blog/2022/05/24/preparing-for-spring-boot-3-0)
Java 11(LTS) 까지의 업데이트
Java 9
Jigsaw module system 참고:Baeldung
라이브러리와 규모가 큰 시스템을 모듈화하고 강력한 접근 제어를 통해 느슨한 결합, 모듈 간 결합 방지, 보안성 향상 등에 이점을 갖는다
JPMS(Java Platform Module System)의 일환으로 JRE를 작은 단위 모듈로 쪼개고 사용하는 모듈만 패키징하여 배포 가능(module-info.java)
JShell(The Java Shell (Read-Eval-Print Loop)) Tool
script 형태로 Main Method 없이 즉석에서 실행 가능한 도구
jlink(The Java Linker)
최근에는 JDK만 제공하고 JRE는 제공하고 있지 않기 떄문에 필요시 jlink 기능을 사용하여 추출 가능
Immutable Set(of)
Set<String> keySet = Set.of("key1", "key2", "key3")
Optional.stream()
List<String> filteredList = listOfOptionals.stream()
.flatMap(Optional::stream)
.collect(Collectors.toList());
Interface private method 도입
@FunctionalInterface
public interface PrivateMethodInterface {
private static String staticPrivate() {
return "Static Private";
}
private String instancePrivate() {
return "Instance Private";
}
void printPrivateMethod();
default void check() {
String result = staticPrivate();
PrivateMethodInterface privateMethodInterface = () -> {
System.out.println(this.instancePrivate());
};
privateMethodInterface.printPrivateMethod();
result = privateMethodInterface.instancePrivate();
}
}
New HTTP Client
java.net.http 패키지하에 있는 신규 API로 HTTP/2 프로토콜, 웹소켓을 지원한다
```java
HttpRequest request = HttpRequest.newBuilder()
.uri(new URI(“http://localhost:8080/members”))
.GET()
.build();
UDP와 멀티캐스팅
UDP(User Datagram Protocol)은 TCP에 비교해 패킷이 의도한 목적지에 도착한다는 보장, 순서의 보장을 할 수 없기 때문에 신뢰할 수 없다.
비연결 프로토콜로 패킷 전송을 용이하게 하는 두개의 노드간의 메시지 교환이 없다.
DNS, NTP, VOIP, P2P 네트워크에서 네트워크 통신의 조정, 비디오 스트리밍 등에 사용된다