자바 17에 대한 요약 ~ 자바 8에서 온 변경점 파트 1 ~
Java17
Java 8은 Java 11보다 최대 4년 동안 지원됩니다.
Java8→Java17의 환승 위험은 비교적 낮죠...?
2018년 발매된 첫 LFS(long-term support)JDK 11 이후 14개의 JEP가 담겼다.
Java 8의 변경 점
등급
레코드 레벨이란 무엇입니까?
Record 쓰기
정의
record Bike( String model, int disp, boolean big){
}
호출
var cbr = new Bike(" 600 F 4 i", 599, true);
System.println(cbr.model())
정의를 기록할 때의 매개 변수 이름은 Getter가 됩니다.String model, int disp, boolean big){
public Bike( String model, int disp, boolean big){
if( disp > 400 && !big){
throw new IllegalArgumentException( model + " should be big");
} else if( disp <= 400 && big){
throw new IllegalArgumentException( model + " shouldn' t be big");
}
this. model = model;
this. disp = disp;
this. big = big;
}
}
public float dispAsLiter(){
return disp / 1000. 0 f;
}
}
위에서 말한 대로 구조기를 제작하여 검증할 수 있다방법을 따로 정의할 수도 있다.
기본적인 사용 방법은class와 다름없다.
주의
immutable의 성질이 있습니다 = setter가 존재하지 않습니다
이후에는 필드 값을 덮어쓸 수 없습니다.
예를 들어 데이터베이스에서 검색한 데이터를 가공 설정하여 파일로 출력할 수 없다.
실제 상황
사실은 자바예요.lang.Record 클래스를 상속하는 class로 컴파일됩니다.
모든 필드는final로 정의됩니다.(immutable의 정체)
Getter와 유니버설 코드 등이 구조기를 정의했다.
Compiled from "Bike. java"
final class Bike extends java. lang. Record {
Bike( java. lang. String, int, boolean);
public final java.lang. String toString();
public final int hashCode();
public final boolean equals( java. lang. Object);
public java. lang. String model();
public int disp();
public boolean big();
}
Sealed
자바의 학급과 인터페이스(앞으로'유형'을 정리)는 누구나 계승할 수 있고final선언은 누구도 계승할 수 없는 0이나 100개의 선택이다.
이에 비해 명확하게 지정된 유형의 계승만 허용하는 메커니즘이다.
슈퍼타입의 저자가 상속인을 명확히 지목할 수 있기 때문에 API의 통합성을 체계적으로 보호하는 것이 큰 장점이다.
사용법
public sealed interface Motor permits RocketMotor, MotorBike, Car {}
클래스 인터페이스 성명 전에 sealed 발표형식 후perits문장을 즉시 설명합니다. (permits의 클래스가 같은 원본에만 있으면 perrmits를 생략할 수 있습니다)
permits 문장에서 쉼표 구분자로 계승할 수 있는 type을 명확하게 표시합니다
상속 제한
permits 문장에서 지정한 하위 형식의 계승 제한을 계승하지 않습니다.
따라서 Sealed인지 여부를 명확히 밝혀야 합니다.
구속
permits 문장에서 지정한 type은 같은 모듈 안에 있어야 합니다.
상세히 보기
https://www.infoq.com/jp/articles/java-sealed-classes/
HTTP/2 지원
동기식/비동기식
HttpClient는 동기식 커뮤니케이션뿐만 아니라 비동기식 커뮤니케이션도 지원합니다.
Compuletable Future에서 응답을 받을 수 있기 때문에 비동기적인 전제에서 응답을 받은 후의 처리를 설명할 수 있습니다.
ReactiveStream
FlowAPI를 사용하는 Reactive Stream에서 HttpClient를 처리할 수 있습니다.
단, 플로우의 설치나 Akka Streams 등의 설치 클래스와 함께 사용해야 합니다.
참고 자료
WEB + DB PRESS
갑골문 공식
oracle.com/jp/news/announcement/java17-jp-2021-09-17/
JEP
https://openjdk.java.net/projects/jdk/17/
Reference
이 문제에 관하여(자바 17에 대한 요약 ~ 자바 8에서 온 변경점 파트 1 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/yudainoda/articles/e290258a390dc1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)