프로젝트/WebSite Renewal

자바 버전과 base 선택

블랑v 2023. 12. 9. 16:38

 

기존 프로젝트들은 전부 Java11 & springboot 2.7.x 버전을 사용했었다.

23년까지 11 버전이 LTS를 지원하므로, 새로운 프로젝트는 자바 버전을 올려보고 개발을 할 생각이다.

 

간단히 찾아본 정보에 따르면, 11버전에서 마이그레이션시 변경사항은 다음과 같다고 한다.

 

Java 11에서 Java 17의 변경 사항

  • switch 표현식의 표준 포함.
  • Java의 Concurrent Mark Sweep (CMS) 가비지 콜렉터 제거.
  • macOS와 Windows에서 ZGC 가비지 콜렉션 및 메모리 관리 지원.
  • Text Blocks의 두 번째 프리뷰.
  • Foreign-Memory Access API의 인큐베이션.
  • 여러 기능의 추가 및 개선, 예를 들어 Pattern Matching for switch, Sealed Classes, RMI Activation 제거 등(The Server Side, Baeldung, Devapo, Dzone, Adam Gamboa G).

Java 11에서 Java 21로 업그레이드할 때의 변경 사항

  • Java 17에서 도입된 모든 기능.
  • 더욱 개선된 가상 스레드 지원.
  • 새로운 암호화 API와 패턴 매칭.
  • Windows 32-bit x86 포트의 폐기 예정.
  • ZGC의 Generational 버전 도입.
  • 레코드 패턴 및 switch문의 패턴 매칭 강화(Dzone, InfoWorld, InfoQ)

 

대부분은 내가 직접적으로 사용하는 기능과 관련이 없고(좋은 기술이나, Recode 객체 빼고는 그렇게 와닿지는 않는다.) 성능 최적화와 관련된 내용이 많은 듯 하다.

 

17은 안정적이고 신뢰할 수 있는 LTS 버전이지만, 21 버전의 경우 더 많은 새로운 기능과 성능 개선을 제공하기에, 최신 기능과 최적화를 활용하고자 하는 새로운 프로젝트에 더 적합할 수 있다는 조언을 들었다.