JDK
JDK(Java Development Kit) 또는 자바 개발 키트는 자바를 하기 위해서 반드시 설치해야하는 필수 프로그램으로,[1] 컴파일러와 클래스 라이브러리(Class Library)를 포함하는, 자바 플랫폼 사양서의 구현, 쉽게 말해 개발자가 자바 기반 애플리케이션 개발을 위해 다운로드하는 소프트웨어 패키지이다.[2]
목차
개요
자바 개발 키트는 썬 마이크로시스템즈에서 개발한 자바 환경에서 돌아가는 프로그램을 개발하는 데 필요한 툴들을 모아놓은 소프트웨어 패키지이며, 자바 실행 환경(Java Runtime Environment, JRE)과 자바 바이트코드 컴파일러, 자바 디버거 등을 포함하는 개발 도구들로 이루어져 있고, 아이비엠(IBM)에서 자체적으로 변형한 아이비엠 자바 개발 키트(IBM JDK)와 오픈 소스 버전인 오픈 자바 개발 키트도 있다.[3] 또한 자바 개발 키트는 자바 SE, 자바 EE, 또는 자바 ME 플랫폼 중 하나를 구현한 것으로 솔라리스, 리눅스, 맥 OS X, 또는 윈도우 자바 개발자를 대상으로 오라클(Oracle에 의해 바이너리 제품으로 제공된다. 자바 플랫폼의 등장 이래 지금까지 가장 널리 사용되는 소프트웨어 개발 키트(SDK)이다. 2006년 11월 17일 썬은 GNU 일반 공중 사용 허가서(GPL) 아래에 출시될 것이라고 발표했고, 이에 따라 자유 소프트웨어가 되었는데, 썬이 2007년 5월 8일 소스 코드를 오픈 자바 개발 키트에 기부함에 따라 이루어졌다.[4]
구성
자바 개발 키트의 핵심을 이루는 개발 툴들은 다음과 같다
- appletviewer : 웹브라우저 없이 자바 애플릿(Java Applet을 실행하고 디버깅하기 위한 툴이다.
- apt : 애너테이션 처리 툴이다.
- extcheck : JAR 파일 충돌을 감지하는 툴이다.
- idlj : IDL을 자바로 컴파일 해주는 툴로, 주어진 자바 IDL 파일에 대한 자바 바인딩을 만들어 준다.
- java : 자바 응용 프로그램 로더로, javac 컴파일러가 만든 클래스 파일을 해석 및 실행하는데, 현재는 하나의 런처가 개발 및 배포에 동일하게 사용되고 예전에 사용되던 배포용 런처 jre는 더이상 Sun JDK에서는 제공되지 않고, 이 로더로 대체되었다.
- javac : 자바 컴파일러로, 자바 소스 파일을 바이트코드로 변환해준다.
- javadoc : 소스 코드 주석으로부터 자동으로 문서를 생성해주는 툴이다.
- jar : 서로 관련 있는 클래스 라이브러리들과 리소스들을 하나의 JAR 파일로 묶어주는 툴로 JAR 파일을 관리하는 데도 사용된다.
- javah : 네이티브 코드를 작성하는데 사용되는 C 헤더 및 스텁 생성기이다.
- javap : 클래스 파일을 자바소스 코드로 디스어셈블해주는 툴이다.
- javaws : JNLP 응용 프로그램용 자바 웹 스타트 런처이다.
- JConsole : 자바 모니터링 및 관리 콘솔이다.
- jdb : 자바 디버깅 툴이다.
- jhat : 자바 힙 분석 툴로 실험적인 기능이다.
- jinfo : 현재 실행중인 자바 프로세스나 크래쉬 덤프로부터 구성정보를 읽어들이는 툴로 실험적인 기능이다.
- jmap : 현재 실행중인 프로세스나 코어 덤프 파일로부터 공유 객체 메모리 맵이나 힙 메모리 정보를 보여주는 툴로 실험적인 기능이다.
- jps : 자바 가상 머신 프로세스 상태(Java Virtual Machine Process Status) 툴로 대상 시스템의 인스트루먼트 가능한 핫스팟 자바 가상 머신들의 목록을 보여주며, 실험적인 기능이다.
- jrunscript : 자바 명령 줄 스크립트용 셀이다.
- jstack : 자바 쓰레드들의 스텍 트레이스를 보여주는 툴로, 실험적인 기능이다.
- jstat : 자바 가상 머신 통계 모니터링 툴로, 실험적인 기능이다.
- jstatd : jstat용 데몬으로, 실험적인 기능이다.
- keytool : 키스토어 관리용 툴이다.
- pack200 : JAR 압축 툴이다.
- policytool : 자바 실행 정책을 만들거나 관리하는 툴로, 자바 실행시 다양한 곳으로부터 온 개개의 코드에 권한을 주거나 제한할 수 있다.
- VisualVM : 여러 자바 명령 줄 툴들에 대한 비주얼 UI를 제공해주고, 간단한 성능 및 메모리 프로파일링 기능을 포함한다.
- wsimport : 웹 서비스를 호출하기 위한 JAX-WS 아티팩트를 만들어준다.
- xjc : XML 바인딩용 자바 API(Java API for XML Binding, JAXB)의 일부로, 주어진 XML 스키마에 대한 자바 클래스를 만들어준다.
현재 실험적인 기능인 툴들은 향후 버전의 자바 개발 키트에서는 제공되지 않을 수도 있다. 자바 개발 키트에는 자바 실행 환경이 포함되며, 이 자바 실행 환경은 자바 가상 머신(Java Virtual Machine, JVM)과 프로덕션 환경에서 제공되는 모든 클래스 라이브러리 및 국제화나 IDL 라이브러리와 같이 개발자들에게 도움이 되는 라이브러리들로 구성되고 또한 자바 API의 거의 모든 부분들을 커버하는 다양한 예제 프로그램들이 자바 개발 키트와 함께 제공된다.[4]
특징
자바 개발 키트는 어디까지나 소프트웨어 개발을 위한 패키지이기 때문에 일반 사용자는 자바 가상 머신만 설치해도 웹상에서 자바 애플릿을 이용하거나 기타 프로그램들을 구동시키는 데는 별 지장이 없지만, 자바서버 페이지(JSP) 컨테이너 등 일부 프로그램은 실행에 자바 개발 키트를 요구하기도 하며, 자바서버 페이지로 예를 들자면 실행 중에 코드가 컴파일될 필요가 있으므로 자바 개발 키트를 요구로 한다. 이클립스(Eclipse), 인텔리제이 아이디어(IntelliJ IDEA) 등 자바를 이용한 IDE는 자바 개발 키트에 포함된 자바 실행 환경이 필수지만, 일반적으로 해당 프로그램 내부에 자바 실행 환경을 포함하여 함께 배포하는 경우가 많다. 사실 요즘의 인터넷 환경은 자바 애플릿으로 할 수 있는 일들을 대부분 네이티브 플러그인으로 처리하고 있어서 전문가나 관련 업계 종사자가 아니라면 예전처럼 자주 볼 일이 없긴 하나, 안드로이드 앱을 만들 때는 곡 필요하다. 오라클 자바 개발 키트는 상업적 이용을 할 때 유료이기 때문에, 무료로 이용하고자 할 때 오라클의 오픈 자바 개발 키트 빌트 혹은 Zulu JDK, AdoptOpenJDK 등의 오픈 자바 개발 키트 기반 빌드를 이용해야 한다. 오픈 자바 개발 키트는 일반 공중 사용 허가서 라이선스지만 클래스경로 예외(classpath exception)가 적용되므로 오라클의 지원이 메이저 버전이 올라가는 6개월마다 끊기는 점 외에는 자유롭게 사용할 수 있고 기업의 경우 아이비엠, 레드햇 등의 저명한 소프트웨어 기업이 제공하는 유료 오픈 자바 개발 키트 빌드를 이용할 수도 있다.[3] 자바를 처음 접하는 개발자는 자바 개발 키트와 자바 실행 환경을 혼동하는 경우가 종종 있는데, 자바 개발 키트는 개발자들이 자바 가상 머신과 자바 실행 환경에 의해 실행되고 구동될 수 있는 자바 프로그램을 생성할 수 있게 해주는, 즉, 자바 기반 소프트웨어를 개발하기 위한 도구들로 이뤄진 패키지인 반면, 자바 실행 환경은 자바 가상 머신을 생성하는 디스크 상의 부분으로 자바 코드를 실행하기 위한 도구들로 구성된 패키지이다. 여기서 자바 가상 머신은 프로그램을 실행하는 자바 플랫폼 구성요소이다. 자바 실행 환경은 단지 자바 프로그램을 구동하기 위한 독립형 구성요소로써 사용될 수 있지만, 동시에 자바 개발 키트의 일부이기도 하며, 자바 프로그램을 구동하는 것이 자바 프로그램 개발의 일환이기 때문에 자바 개발 키트는 자바 실행 환경을 필요로 한다.[2]
활용
시작하기
개발 환경에서 자바를 설정하는 것은 자바 개발 키트를 다운로드하고 그것을 클래스경로(classpath)에 추가하는 정도로 매우 쉽다. 사용할 자바 개발 키트를 다운로드 할 때, 사용할 자바 버전을 선택해야 하는데, 자바 8이 가장 널리 사용되고 있지만, 자바는 하위 호환성(Backward Compatibility)을 유지하고 있으므로, 최신 릴리즈를 다운로드하기만 하면 된다.[2]
패키지
자바 버전 선택과 함께, 자바 패키지도 선택해야 하는데, 패키지(Package)란 서로 다른 유형의 개발을 표적으로 하는 자바 개발 키트로, 가용 패키지로는 자바 EE, 자바 SE, 그리고 자바 ME가 있다. 초보 개발자라면 때로 어느 패키지가 자신의 프로젝트에 맞는지 확신이 서지 않을 수 있지만, 일반적으로, 개별 자바 개발 키트 버전은 자바 SE를 포함하고 있어, 자바 EE나 자바 ME를 다운로드하면, 표준 에디션도 얻는 것이다. 예를 들면, 자바 EE는 엔터프라이즈 자바 빈이나 객체 관계 매핑 지원 같은 엔터프라이즈 애플리케이션 개발에 유용한 추가적인 도구를 가지고 있는 표준 플랫폼이다. 필요한 경우, 나중에 다른 자바 개발 키트로 전환하는 것도 어렵지 않으므로, 이제 막 시작한 경우, 맞는 자바 버전과 자바 개발 키트 패키지 선정에 대해 너무 걱정하지 않아도 된다.[2]
버전 호환성
자바 개발 키트가 개발자의 자바 프로그램에 대한 컴파일러를 제공하기 때문에, 사용하는 자바 개발 키트가 코드를 작성할 수 있는 자바 버전을 결정한다. 예를 들어 화살표 람다 연산자처럼 자바 8에 있는 좀 더 새로운 기능 지원을 사용하고 싶다면, 컴파일을 위해 최소한 자바 8 자바 개발 키트가 필요할 것이다. 그렇지 않은 경우엔 javac 명령이 구문 오류를 표시하면서 해당 코드를 거부할 것이다.[2]
다운로드
핵심 자바 개발 키트 클래스와 기술에 초점을 맞추기 위해, 자바 SE만을 사용할 것인데, 자바 SE 자바 개발 키트를 내려받으려면, 오라클의 공식 다운로드 페이지를 방문하여 사용할 수 있는 다양한 자바 개발 키트 패키지 중 자바 SE를 선택하면 된다. 자바 SE를 내려받기 전에 다른 옵션들을 살펴보면 여러 가지 자바 개발 키트들이 있는데, 자바 표준 에디션 자바 개발 키트를 내려받는 것이 좋다.[2]
자바 EE
설치
명령 줄에서 사용
javac 명령어
간단한 자바 프로그램 만들기
- 간단한 자바 프로그램 작성
- 자바 개발 키트를 사용해 컴파일하기
- .class 파일 실행
jar 명령어
jar 실행
사용중인 IDE에서의 자바 개발 키트
이클립스와 자바 개발 키트
각주
참고자료
- 〈JDK〉, 《나무위키》
- 〈자바 개발 키트〉, 《위키백과》
- Matthew Tyson, 〈"JDK란 무엇인가" 자바 개발 키트 소개와 설치하기〉, 《아이티월드》, 2018-09-18
- 34살에 곰을 잡고싶은 하르퓨리아, 〈JDK 설치 및 환경변수 설정하기 (Oracle or Zulu)〉, 《티스토리》, 2020-07-17
같이 보기
이 문서는 로고 수정이 필요합니다.