jdeprscan 도구란 무엇인가?
jdeprscan은 클래스, 아카이브(JAR), 폴더를 대상으로 정적 분석(static analysis)을 수행하여 사용 중단(deprecated)으로 표시된 API 요소를 찾아내는 도구입니다. Java 애플리케이션을 최신 JDK 버전으로 마이그레이션하기 전에 코드베이스를 점검할 때 매우 유용하게 활용됩니다.
다만 이 도구에는 몇 가지 중요한 특징이 있습니다.
- Java SE 전용 감지: jdeprscan은 Java SE에서 사용 중단으로 표시된 항목만 감지하며, 서드파티 라이브러리나 기타 라이브러리에서 표시된 항목은 감지하지 않습니다.
- 의존성 요구 사항: 분석 대상 클래스(또는 클래스 집합)가 의존하는 모든 클래스는 컴파일 및 실행 시점에 접근 가능해야 합니다.
- 오류 처리: 의존 클래스를 찾지 못할 경우, 도구는
cannot find a class오류 메시지와 함께 찾을 수 없는 클래스 목록을 출력합니다.
jdeprscan 문법(Syntax)
jdeprscan의 기본 사용 형식은 다음과 같습니다.
jdeprscan [options] {dir | jar | class}
분석 대상으로는 디렉터리(dir), JAR 파일(jar), 개별 클래스(class)를 지정할 수 있습니다.
또한 "jdeprscan" 명령은 jmods\jdk.jdeps.jmod 모듈 파일을 통해 지원되며, JDK 9, 10, 11에서는 이 모듈이 lib\modules JImage 파일에 연결(link)되어 포함됩니다.
jdeprscan 주요 옵션 정리
jdeprscan 도구에서 사용할 수 있는 옵션 목록은 다음과 같습니다.
Options:
--class-path PATH
--for-removal
--full-version
-? -h --help
-l --list
--release 6|7|8|9|10|11
-v --verbose
--version
각 옵션의 역할을 간략히 살펴보면 다음과 같습니다.
| 옵션 | 설명 |
|---|---|
| --class-path PATH | 분석 시 참조할 클래스 경로를 지정합니다. 의존성 클래스가 있는 위치를 알려줄 때 유용합니다. |
| --for-removal | 향후 제거 예정(forRemoval=true)으로 표시된 deprecated API만 검색합니다. |
| --full-version / --version | 도구의 전체 버전 또는 간단한 버전 정보를 출력합니다. |
| -?, -h, --help | 도구의 사용법과 도움말을 표시합니다. |
| -l, --list | 클래스를 스캔하지 않고, 해당 JDK에서 알려진 deprecated API 목록만 출력합니다. |
| --release 6|7|8|9|10|11 | 특정 Java SE 릴리스를 기준으로 사용 중단된 API를 검사합니다. |
| -v, --verbose | 추가적인 상세 정보를 함께 출력합니다. |
마무리
jdeprscan은 Java 플랫폼의 발전에 따라 사라질 수 있는 API를 미리 파악하여 코드 호환성을 확보하는 데 필수적인 도구입니다. 특히 구버전 JDK에서 신규 버전으로 업그레이드하기 전에 --for-removal 옵션과 --release 옵션을 조합해 사용하면, 향후 제거될 위험이 큰 API를 우선적으로 점검하고 계획적으로 리팩토링할 수 있습니다.