Java 11과 17에 대하여
안녕하세요 오늘은 자바 버전차이에 대하여 포스팅하려 합니다.
2023년 기준 자바 17이 드디어 자바 11 버전의 사용율을 이겼네요. 새롭게 등장한 SpringBoot 3 버전도 자바 17 이상만 지원하기 때문에 앞으로 새롭게 등장하는 웹서비스에 대해서는 Java17을 사용할 확률이 높겠습니다. 아마두?
주요 변경 사항
✅자바 11에서 17로 업그레이드됨에 따라 주요 변경사항을 한번 공부해 보도록 하겠습니다!!
패턴 매칭 for instanceof
자바 11:
if (obj instanceof String) {
String s = (String) obj;
System.out.println(s.length());
}
자바 17:
if (obj instanceof String s) {
System.out.println(s.length());
}
instanceof와
함께패턴 매칭
을 사용하여 코드를 더 간결하게 만들 수 있습니다. 이를 통해 불필요한형변환
을 줄이고 코드의 가독성을 향상합니다.
레코드 record
자바 17:
record Point(int x, int y) {}
- 레코드는 데이터 운반 목적의 클래스를 간단하게 선언할 수 있게 해 줍니다. 이는 기존에 필요했던 보일러플레이트 코드(생성자, getter, equals, hashCode, toString 메서드 등)를 대체합니다.
Sealed Classes
자바 17:
sealed interface Shape permits Circle, Rectangle {}
final class Circle implements Shape {}
final class Rectangle implements Shape {}
- Sealed 클래스와 인터페이스를 사용하면, 어떤 클래스가 다른 클래스를 상속하거나 인터페이스를 구현할 수 있는지 제어할 수 있습니다. 이를 통해 더 예측 가능한 상속 구조를 만들 수 있습니다.
Text Blocks
자바 11:
String json = "{\n" +
" \"name\": \"John\",\n" +
" \"age\": 30\n" +
"}";
자바 17:
String json = """
{
"name": "Dmango",
"age": 26
}
""";
- 텍스트 블록을 사용하면 여러 줄에 걸친 문자열을 더욱 간편하게 표현할 수 있습니다. 이는 HTML, JSON, SQL 등을 코드 내에 포함할 때 특히 유용합니다.
Switch Expressions
자바 17:
String day = switch (dayOfWeek) {
case MONDAY, FRIDAY, SUNDAY -> "Six";
case TUESDAY -> "Seven";
case THURSDAY, SATURDAY -> "Eight";
case WEDNESDAY -> "Nine";
};
- Switch 표현식을 통해 더 간결하고 유연한 조건 분기 처리가 가능해집니다. 이는 코드의 가독성을 높이고 오류 가능성을 줄여줍니다.
오케이 그래서 왜 17을 써야 돼?
여러 가지 예시를 들 수 있는데요, Spring Boot 3.x 호환성
, 최신 기능 및 개선 사항 활용
, 성능 최적화 및 보안 강화,
장기 지원(LTS) 버전,
장기적으로 본다면 JDK 21과의 호환
을 위한 준비도 볼 수 있겠습니다.
Point : Spring Boot 3.x 호환성
스프링 부트 3.X는 다음과 같은 주요 업데이트를 갖고 있습니다.
- Jakarta EE 9 지원 : Spring Boot 3.x: Jakarta EE 9의 네임스페이스 변경(javax.*에서 jakarta.*로)을 반영합니다.
- 성능 및 최적화 :Spring Boot 3.x는 Spring Framework 6.x와 함께 최신 JVM 기능을 활용하여 성능을 향상합니다. 또한, 리소스 사용 최적화와 가비지 컬렉션 효율성 개선 등을 통해 애플리케이션의 실행 효율을 높입니다.
- 새로운 기능과 개선 사항: Spring Boot 3.x는 AOT(Ahead-Of-Time) 컴파일 지원, GraalVM 네이티브 이미지 빌드 향상 등의 새로운 기능을 포함합니다. 이는 클라우드 네이티브 애플리케이션 개발과 배포를 더욱 용이하게 합니다.
- 보안 강화 :Spring Boot 3.x는 최신 보안 프랙티스와 프로토콜을 적극적으로 채택하여 애플리케이션의 보안을 강화합니다. 이는 보다 안전한 애플리케이션 개발을 지원합니다.
결론
자바 17은 자바 11에 비해 많은 새로운 기능과 개선 사항을 제공합니다. 패턴 매칭, 레코드, Sealed 클래스, Text Blocks, Switch Expressions 등의 기능은 개발자가 더 효율적으로 코드를 작성하고 유지보수할 수 있게 해 줍니다. 또한, 성능 최적화와 보안 강화를 포함한 자바 플랫폼의 발전은 애플리케이션을 더 안정적이고 안전하게 만듭니다.
특히, Spring Boot 3.x와의 호환성은 자바 17의 사용을 더욱 중요하게 만듭니다. Spring Boot 3.x는 Jakarta EE 9 지원, 성능 및 최적화 개선, 새로운 기능과 보안 강화를 제공합니다. 이러한 변화는 현대적인 웹 서비스 개발에 필수적인 요소들이며, 클라우드 네이티브 애플리케이션 개발과 배포를 더욱 용이하게 합니다.
긴 글 읽어주셔서 감사합니다!~!😄
+++ 세계의 개발자들은 어떤 기술들로 개발하고 있을까?
저는 Maven을
많이 쓰지는 않는데 새롭게 알게 된 사실이었던 것 같습니다.
'Knowledge > Java' 카테고리의 다른 글
[모던 자바 인 액션] step.1 컬랙션의 정렬과 스트림, 병렬처리 (0) | 2024.08.07 |
---|---|
[Java] Interface와 Implement의 분리: 느슨한 결합 (0) | 2024.03.15 |
[JAVA] BigInteger 사용법: 하노이탑 문제 (1) | 2024.01.25 |
객체지향 프로그래밍(Object-Oriented Programming, OOP) (0) | 2023.12.07 |
[백준] 1931번: 회의실 배정 JAVA 코드, Greedy (0) | 2023.12.01 |