Skip to content

Instantly share code, notes, and snippets.

@wall72
Created December 28, 2021 00:09
Show Gist options
  • Save wall72/2d74609e7e74e17a54b544af9c6b9a7b to your computer and use it in GitHub Desktop.
Save wall72/2d74609e7e74e17a54b544af9c6b9a7b to your computer and use it in GitHub Desktop.
Software Architecture 의사결정 : Java 버전 선정
Software Architecture 의사결정 : Java 버전 선정
0. 의사결정
- Java : Java 11
- 선정 사유
[가장 최근의 아키텍처로 안정화된 버전]
>> Java 8 은 너무 오래되고 현재 17 버전 출시
>> Java 17은 출시된지 얼마안되어 더 안정화 필요
>> 다음 LTS 버전인 21은 2023년 9월 출시 예정
>> Java 8 을 Java 11 호 전환하는데 많은 노력이 필요함. 그러나 Java 11 이후로는 잦은 릴리즈와 큰 변화없는 업그레이드로 전환이 용이
[컨테이너 실행환경에 최적화된 버전]
>> Docker 컨테이너 실행 환경에 최적화된 버전
>> Java 8도 191업데이트 부터 가능하나 굳이 하위버전을 채택할 필요는 없음
[성능향상된 최신의 버전]
>> 성능향상을 위한 여러 기능이 포함됨
- 고려 사유
[호환성 문제 발생에 대한 리스크]
<< 모듈 기능 때문에 오동작하는 Java 기반의 SW 있을 수 있으므로 모든 제품도입시 호환성 준수여부를 확인해야 함
-*-
Back-up 주요 개선점 (Java 8 대비)
모듈 기능 추가
- Java 의 모듈 기능이 도입되어 필요한 모듈만 실행시에 포함하는 런타임 구성이 가능하게 됨
- 기존에 사용하던 허가되지 않는 com.sun.* 등의 내부 기능을 사용하지 못하게 됨
>> 더 빠른 로딩타임과 모듈화된 아키텍처로 정합성 향상
>>> Java 9 부터 적용된 아키텍처로 호환성 문제 발생 소지 있음 --> 레거시 자바 시스템의 경우 호환성을 점검하여 전환
Docker 컨테이너 지원 개선
- Java 10 이전버전까지는 컨테이너에 설정된 CPU 및 메모리 할당량 제한을 인식하지 못했음
>> 컨테이너 상에서 실행되는 Java 가 더 정확하고 상세한 자원사용을 가능하게 함
>>> k8s 등의 컨테이너 구성 설정 재구성 필요 --> 신규 구성 시 해당사항 없음
※ Java 8 jdk8u191 버전 이후 버전에서는 해결된 문제이지만 굳이 하위버전을 선택할 필요는 없음
성능 향상
- 새로운 가비지컬렉션 지원
- 기타 JVM 성능향상을 위한 여러가지 업그레이드 포함
-*-
Back-up 기술지원
[Oracle]
- Java 8, 2014.03, 2022.03 -> 너무 오래되고 곧 지원 종료 (레거시를 위한 확장지원 2030까지 유료지원)
- Java 11, 2018.09, 2023.09
- Java 17, 2021.09, 2026.09
[Adoptium]
- Java 8, 2014.03, 2026 05
- Java 11, 2018.09, 2024.10
- Java 17, 2021.09, TBC
-*-
참조
(1) 'Java 11 이상으로 전환해야 하는 이유', https://docs.microsoft.com/ko-kr/java/openjdk/reasons-to-move-to-java-11,
https://docs.microsoft.com/en-us/java/openjdk/reasons-to-move-to-java-11
(2) 'Java Support Roadmap', https://www.oracle.com/java/technologies/java-se-support-roadmap.html
(3) 'Java 11 로 마이그레이션 할 시간', https://blog.naver.com/PostView.nhn?blogId=digul2&logNo=221525574043, https://medium.com/criciumadev/its-time-migrating-to-java-11-5eb3868354f9
(4) 'Oracle JDK Migration Guide', https://docs.oracle.com/en/java/javase/17/migrate/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment