이번 프로젝트를 진행하며 Java 17을 사용하게 되었다.
"Java 17을 왜 사용해요?"
"Java 17의 특징을 말해보세요."
에 답하기 위해 정리해보았다.
2023년 기준 가장 많이 사용되는 Java 버전은 Java8, 2위는 Java17이다.
불과 2022년에는 Java11이 48%의 점유율로 2위를 차지했지만 1년만에 순위가 바뀌었다.
2021년 9월에 공개된 Java17이 빠른 시간 안에 널리 사용된 이유는 무엇일까?
2029년 9월까지 지원하는 LTS
Java 17은 Java 8, Java 11과 함께 오랜 기간 지원하는 LTS 버전이다.
Spring Boot 3부터 Java 17 이상의 사용이 강제된다.
가장 큰 이유가 아닐까 생각된다.

2023년 기준 Java 웹 프레임워크에 대한 조사 결과다.
SpringBoot의 점유율이 압도적으로 큰 만큼 직접적인 이유라고 생각된다.
2023년까지도 가장 많이 사용하는 java 버전이다.
2030년 12월까지 지원해 가장 긴 지원기간을 가진다.
Java 11까지의 추가사항
Java 17까지의 추가사항
String message = """
[
{
"type": "header",
"text": {
"type": "plain_text",
"text": "%s :mag:",
"emoji": true
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "*API*: %s\\n*remoteIP*: %s\\n*serverIP*: %s"
}
},
{
"type": "divider"
}
]
""".formatted(caller, apiName, remoteIP, serverIP);
var randomNames = new String [] {"Jayden", "Bernard", "Zino", "Mason", "Elvin"}[(int) (Math.random() * 5)];
String name = switch(randomNames) {
case "Jayden", "jayden" -> {
System.out.println("Me!");
yield "제이든";
}
case "Bernard", "bernard" -> "버나드";
case "Zino" -> "자이노";
case "Mason" -> "메이슨";
case "Elvin" -> "엘빈";
default -> "What's your name";
};
...
public record RecordUserData(String name, int weight) {
}
...
RecordUserData userRecord = new RecordUserData("Jayden", 110);
// Output :: Jayden
System.out.println(userRecord.name());
// Output :: 110
System.out.println(userRecord.weight());
// Output :: false
System.out.println(userRecord.equals(new RecordUserData("Jayden", 90)));
// Output :: RecordUserData[name=Jayden, weight=110]
System.out.println(userRecord);
...