Ayden's journal

JDK

JDK는 자바 개발자용 도구 모음이다. 자바 소스 코드를 작성하고, 컴파일하고, 디버깅하며, 실행할 수 있는 모든 필수 도구가 포함되어 있다. 즉, 자바 프로그래밍을 시작하려면 반드시 JDK가 필요하다. 단순히 자바 프로그램을 실행하는 것과 개발하는 것은 다르다. 개발을 위해서는 소스 코드를 컴파일하는 과정이 필요하고, 이 모든 기능을 JDK가 담당한다. JDK에는 자바 개발에 필요한 다양한 도구가 포함되어 있다. 그중 핵심적인 구성 요소는 아래와 같다.

  • JRE (Java Runtime Environment) : 자바 애플리케이션을 실행할 수 있는 환경을 제공한다. JRE에는 자바 가상 머신(JVM)과 표준 자바 라이브러리가 포함되어 있어, 이미 컴파일된 자바 프로그램을 실행할 수 있다. 다만, JRE는 개발에 필요한 컴파일러나 기타 도구가 포함되어 있지 않기 때문에 직접 자바 소스 코드를 작성하거나 컴파일하는 데는 사용할 수 없다.
  • 컴파일러 (javac) : 자바 소스 코드 파일(.java)을 JVM이 이해할 수 있는 바이트코드(.class)로 변환해주는 핵심 도구이다. 자바 개발에서 소스 코드를 컴파일하는 과정은 필수적이며, 이 역할을 담당하는 컴파일러가 바로 javac이다.
  • 디버거 (jdb) : 자바 프로그램을 실행하면서 발생하는 오류를 추적하고 수정하는 데 사용하는 도구이다. 코드의 문제를 분석하고 문제 지점을 찾아내는 데 유용하며, 안정적인 자바 애플리케이션 개발에 필수적인 역할을 한다.
  • 문서 생성기 (javadoc) : 자바 소스 코드 내 주석을 기반으로 API 문서를 자동으로 생성하는 도구다. 특히 팀 프로젝트나 라이브러리 개발 시 문서 작성 시간을 대폭 절감해주어, 효율적인 협업과 유지보수를 가능하게 한다.
  • jar : 여러 자바 클래스 파일과 리소스 파일을 하나의 압축 파일로 묶어 배포할 때 사용한다. 이를 통해 라이브러리나 애플리케이션 배포가 용이해진다.
  • keytool : 보안 관련 키와 인증서를 생성·관리하는 도구다. SSL 인증서 관리나 보안 설정에 필수적으로 쓰인다.

 

JDK, JRE, JVM의 차이점

자바를 배우다 보면 JDK, JRE, JVM 세 용어가 혼동될 수 있다. 각각의 역할을 명확히 이해하는 것이 중요하다. JVM은 자바 바이트코드를 실행하는 가상 머신으로, 자바 실행 환경의 핵심 엔진 역할을 한다. JRE는 자바 프로그램을 실행하기 위한 환경을 제공하는데, JVM과 자바 클래스 라이브러리를 포함하고 있다. 마지막으로 JDK는 자바 개발 도구의 모음으로, JRE에 컴파일러, 디버거, 문서 생성기 등 개발에 필요한 다양한 도구가 추가된 형태다. 즉, JDK는 개발자용이며, JRE는 사용자용 실행 환경, 그리고 JVM은 자바 프로그램 실행의 핵심 엔진이라고 할 수 있다.

 

Oracle JDK와 OpenJDK

Oracle JDK와 OpenJDK는 기본 코드베이스를 공유하고 있어 성능 면에서는 거의 차이가 없다. 두 JDK 모두 동일한 HotSpot JVM을 사용하며, 같은 최적화 기술이 적용되기 때문에 실제 벤치마크 결과에서도 큰 성능 차이가 나타나지 않는다. 다만, Oracle JDK는 일부 상업용 기능을 포함하고 있는데, 이들은 주로 성능 향상보다는 모니터링과 진단을 위한 도구들이다. 따라서 성능 자체는 두 JDK 간에 큰 차이가 없으며, 선택 시에는 라이선스 정책과 지원 주기, 상업적 사용 여부 등 실질적인 운영 환경에 맞는 조건들을 더 중요하게 고려하는 것이 바람직하다. OpenJDK는 무료 오픈소스 프로젝트로 자유롭게 사용할 수 있지만, Oracle JDK는 상업적 용도로 사용할 경우 별도의 라이선스 비용이 발생할 수 있다. 이런 점들을 종합하여 개발 목적과 환경에 맞는 JDK를 선택하는 것이 좋다.

블로그의 정보

Ayden's journal

Beard Weard Ayden

활동하기