검수요청.png검수요청.png

JDK

해시넷
이동: 둘러보기, 검색
JDK(Java Development Kit)
JDK(Java Development Kit)

JDK(Java Development Kit) 또는 자바 개발 키트는 자바 기반 애플리케이션 개발을 위해 반드시 설치해야 하는 필수 프로그램으로,[1] 컴파일러클래스 라이브러리(Class Library)를 포함하는 소프트웨어 패키지이다.[2]

개요[편집]

JDK는 썬 마이크로시스템즈(SUN Microsystems)에서 개발한 자바 환경에서 돌아가는 프로그램을 개발하는 데 필요한 툴들을 모아놓은 소프트웨어 패키지이다. JRE(Java Runtime Environment)과 자바 바이트코드 컴파일러, 자바 디버거 등을 포함하는 개발 도구들로 이루어져 있고, IBM에서 자체적으로 변형한 IBM JDK와 오픈 소스 버전인 openJDK도 있다.[3] 또한 JDK는 자바 SE(Standard Edition), 자바 EE(Enterprise Edition), 또는 자바 ME(Mobile Edition) 플랫폼 중 하나를 구현한 것으로 솔라리스(Solaris), 리눅스(Linux), 맥 OS X(mac OS X), 또는 윈도우 자바 개발자를 대상으로 오라클(Oracle)에 의해 바이너리 제품으로 제공된다. 자바 플랫폼의 등장 이래 지금까지 가장 널리 사용되는 소프트웨어 개발 키트(SDK)이다. 2006년 11월 17일 썬 마이크로시스템즈는 GNU 일반 공중 사용 허가서(GPL) 하에 출시될 것이라고 발표했고, 이에 따라 자유 소프트웨어가 되었는데, 2007년 5월 8일 썬 마이크로시스템즈가 소스 코드를 오픈 자바 개발 키트에 기부함에 따라 이루어졌다.[4]

구성[편집]

JDK의 핵심을 이루는 개발 툴들은 다음과 같다.

  • 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 스키마에 대한 자바 클래스를 만들어 준다.

현재 실험적인 기능인 툴들은 향후 버전의 자바 개발 키트에서는 제공되지 않을 수도 있다. JDK에는 자바 실행 환경(Java Runtime Environment, JRE)이 포함되며, 이 JRE는 자바 가상 머신(Java Virtual Machine, JVM)과 프로덕션 환경에서 제공되는 모든 클래스 라이브러리 및 국제화나 IDL 라이브러리와 같이 개발자들에게 도움이 되는 라이브러리들로 구성되고 또한 자바 API의 거의 모든 부분들을 커버하는 다양한 예제 프로그램들이 JDK와 함께 제공된다.[4]

특징[편집]

JDK는 어디까지나 소프트웨어 개발을 위한 패키지이기 때문에 일반 사용자는 자바 가상 머신(JVM)만 설치해도 웹상에서 자바 애플릿을 이용하거나 기타 프로그램들을 구동시키는 데는 별 지장이 없다 하지만 JSP(자바서버페이지) 컨테이너 등 일부 프로그램은 실행에 JDK를 요구하기도 하며, JSP로 예를 들자면 실행 중에 코드가 컴파일될 필요가 있으므로 자바 개발 키트를 요구로 한다. 이클립스(Eclipse), 인텔리제이 아이디어(IntelliJ IDEA) 등 자바를 이용한 IDE는 JDK에 포함된 JRE가 필수지만, 일반적으로 해당 프로그램 내부에 JRE를 포함하여 함께 배포하는 경우가 많다. 사실 요즘의 인터넷 환경은 자바 애플릿으로 할 수 있는 일들을 대부분 네이티브 플러그인으로 처리하고 있어서 전문가나 관련 업계 종사자가 아니라면 예전처럼 자주 볼 일이 없긴 하나, 안드로이드 앱을 만들 때는 곡 필요하다. 오라클 JDK는 상업적 이용을 할 때 유료이기 때문에, 무료로 이용하고자 할 때 오라클의 openJDK 빌드 혹은 Zulu JDK, AdoptOpenJDK 등의 openJDK 기반 빌드를 이용해야 한다. openJDK는 GPL 라이선스지만 classpath exception가 적용되므로 오라클의 지원이 메이저 버전이 올라가는 6개월마다 끊기는 점 외에는 자유롭게 사용할 수 있고 기업의 경우 IBM, Red Hat 등의 저명한 소프트웨어 기업이 제공하는 유료 openJDK를 이용할 수도 있다.[3] 자바를 처음 접하는 개발자는 JDK와 JRE을 혼동하는 경우가 종종 있는데, JDK는 개발자들이 JVM과 JRE에 의해 실행되고 구동될 수 있는 자바 프로그램을 생성할 수 있게 해주는, 즉, 자바 기반 소프트웨어를 개발하기 위한 도구들로 이뤄진 패키지인 반면, JRE는 JVM을 생성하는 디스크 상의 부분으로 자바 코드를 실행하기 위한 도구들로 구성된 패키지이다. 여기서 JVM은 프로그램을 실행하는 자바 플랫폼 구성요소이다. JRE는 단지 자바 프로그램을 구동하기 위한 독립형 구성요소로써 사용될 수 있지만, 동시에 JDK의 일부이기도 하며, 자바 프로그램을 구동하는 것이 자바 프로그램 개발의 일환이기 때문에 JDK는 JRE를 필요로 한다.[2]

활용[편집]

시작하기[편집]

개발 환경에서 자바를 설정하는 것은 JDK를 다운로드하고 그것을 클래스 경로(classpath)에 추가하는 정도로 매우 쉽다. 사용할 JDK를 다운로드할 때 사용할 자바 버전을 선택해야 하는데, 자바 8이 가장 널리 사용되고 있지만 자바는 하위 호환성(Backward Compatibility)을 유지하고 있으므로 최신 릴리즈를 다운로드하기만 하면 된다.[2]

패키지[편집]

자바 버전 선택과 함께, 자바 패키지도 선택해야 하는데, 패키지란 서로 다른 유형의 개발을 표적으로 하는 자바 개발 키트로, 가용 패키지로는 자바 EE, 자바 SE, 그리고 자바 ME가 있다. 초보 개발자라면 때로 어느 패키지가 자신의 프로젝트에 맞는지 확신이 서지 않을 수 있지만, 일반적으로, 개별 JDK 버전은 자바 SE를 포함하고 있어, 자바 EE나 자바 ME를 다운로드하면, 표준 에디션도 얻는 것이다. 예를 들면, 자바 EE는 엔터프라이즈 자바 빈(JavaBeans)이나 객체 관계 매핑(Object Relational Mapping, ORM) 지원 같은 엔터프라이즈 애플리케이션 개발에 유용한 추가적인 도구를 가지고 있는 표준 플랫폼이다. 필요한 경우, 나중에 다른 JDK로 전환하는 것도 어렵지 않으므로 이제 막 시작한 경우 맞는 자바 버전과 JDK 패키지 선정에 대해 너무 걱정하지 않아도 된다.[2]

버전 호환성[편집]

JDK가 개발자의 자바 프로그램에 대한 컴파일러를 제공하기 때문에, 사용하는 JDK가 코드를 작성할 수 있는 자바 버전을 결정한다. 예를 들어 람다 연산자(Lambda Operator)처럼 자바 8에 있는 좀 더 새로운 기능 지원을 사용하고 싶다면, 컴파일을 위해 최소한 자바 8 JDK가 필요하다. 그렇지 않은 경우엔 javac 명령이 구문 오류를 표시하면서 해당 코드를 거부하게 된다.[2]

다운로드[편집]

핵심 JDK 클래스와 기술에 초점을 맞추기 위해 주로 자바 SE만을 사용하게 되는데, 자바 SE JDK를 내려받으려면 오라클의 공식 다운로드 페이지를 방문하여 사용할 수 있는 다양한 JDK 패키지 중 자바 SE를 선택하면 된다. 자바 SE를 내려받기 전에 다른 옵션들을 살펴보면 여러 가지 자바 JDK들이 있는데, 자바 표준 에디션 JDK를 내려받는 것이 좋다.[2]

자바 EE[편집]

주로 자바 기반 웹 애플리케이션에 관심이 있다면 자바 EE JDK를 다운로드한다. 자바 EE JDK에는 HTTP 요청 처리를 지원하는 자바 서버렛(Serverlet) 사양이 포함되어 있는데, 모든 자바 EE JDK 구현은 자바 EE 애플리케이션을 구동하는 서버인 컨테이너(Container)도 필요로 한다. 글래스피시(Glassfish)는 오라클용 자바 EE 서버 참조 구현이며, 다른 인기 있는 구현으로는 톰캣(Tomcat)과 제티(Jetty)가 있다.[2]

설치[편집]

JDK 인스톨러(Installer, 설치 마법사)를 실행하면 3가지 구성 요소에 대한 선택 사항이 주어지는데, 개발 도구, 소스 코드, 그리고 퍼블릭 JRE 가운데 한 가지 또는 전체를 설치할 수 있지만, 여기서는 기본(Default)을 선택한다. 개발 도구 옵션을 설치는 적절한 JDK를 제공하며, 소스 코드 설치에는 핵심(Core) 자바 API에 있는 퍼블릭 클래스들에 대한 소스가 포함된다. 이 옵션을 포함시키면 개발자는 앱을 구출할 때 소스 코드를 참조할 수 있다. 세 번째 옵션인 퍼블릭 JRE는 JDK와 JRE가 별개의 객체임을 충분히 납득시키며, 퍼블릭 JRE는 자바 프로그램을 실행하기 위해 다른 프로그램들이 사용할 수 있으며, JDK와는 별개로 설치될 수 있다. 여기서는 2가지 구성 요소 모두를 설치하고 각각에 대해 기본값을 사용한다. 이렇게 한다는 것은 JDK와 JRE가 사용 중인 운영체제의 기본 위치에 설치된다는 것을 의미하며, 윈도우에서는 C:\Program Files\Java이다.[2]

명령줄에서 사용[편집]

JDK와 JRE 설치는 명령줄에 java 명령어를 추가한다. 명령 셀을 실행하고 설치된 자바 버전을 알려주는 java -version을 입력함으로써 이를 확인할 수 있지만, 어떤 경우에는 시스템 경로에 변경사항을 반영하기 위해 시스템을 재시작해야 할 수도 있다. java 명령어가 있는 것도 좋지만, javac도 좋다. 자바 파일을 컴파일하기 위해서는 이 JDK 요소가 필요하다.[2]

javac 명령어[편집]

javac 명령어는 /jdk 디렉토리 안에 들어 있지만, 설치 중에 시스템 경로에 자동으로 추가되지는 않고 javac를 설치할 수 있는 옵션을 행사하거나, 이 명령어를 포함하고 있는 IDE를 설치할 수도 있다.[2]

간단한 자바 프로그램 만들기[편집]

간단한 자바 프로그램 작성

Intro.java라는 새로운 텍스트 파일을 생성하고, 그것을 문서 폴더 같은 곳에 저장한다. 그 후 간단한 자바 프로그램인 다음의 코드를 추가한다.[2]

public class Intro {
public static void main(String[] args) {
System.out.printIn("Welcome to the JDK!");
}
}
JDK를 사용해 컴파일하기

텍스트 파일을 실행 가능한 프로그램으로 만들기 위해 JDK 컴파일러를 사용한다. 자바컴파일 된 코드를 바이트코드(Bytecode)라 부르며, .class 확장자가 붙는다. 그리고 자바 컴파일러의 약자인 javac 명령을 사용한다. 명령 셸에 명령어의 전체 경로를 입력하고, Intro.java 파일을 넘긴다. 그럼 시스템에서는 '"C:\Program Files\Java\jdk-10.0.1\bin\javac.exe"Intro.java'처럼 보인다. 이렇게 하면 컴파일에 성공할 것으로, javac는 성공 메시지를 표시하지 않고 단지 새로운 파일만 출력하게 된다. 오류는 콘솔에 표시된다.[2]

.class 파일 실행

Intro.java와 같은 디렉토리에서 Intro.class 파일을 볼 수 있을 것이며, java Intro를 입력해 실행할 수 있는데 그렇게 되면 다음의 결과가 나온다. 이 명령을 입력할 때 .class를 포함하지 않음에 유의해야 한다.[2]

C:\Users\mtyson\Documents>java Intro

Welcome to the JDK
jar 명령어

javac는 JDK의 스타지만, /bin 디렉토리에는 필요한 다른 도구들이 들어 있다. javac 다음으로 가장 유망한 것은 jar 도구로 추정된다. .jar 파일은 패키지 된 자바 클래스 세트로, 일단 컴파일러가 .class 파일을 생성한 다음에는, 개발자가 이것들을 예측 가능한 방식으로 압축하고 체계화하는 하나의 .jar파일에 넣을 수 있다. Intro.java를 저장한 위치로 되돌아가서, 다음 명령어를 입력하면 Intro.class를 jar파일로 변환시킬 수 있다.[2]

C:\Users\mtyson\Documents>"c:\Program Files\Java\jdk-10.0.1\bin\jar.exe" --create --file intro.jar Intro.class
jar 실행

이제 해당 디렉토리에서 Intro.jar 파일을 볼 수 있다. 이를 클래스 경로에 추가하고 다음과 같이 안에 있는 프로그램을 실행함으로써 .jar를 활용할 수 있다.[2]

java -cp intro.jar Intro

-cp 스위치는 자바에게 해당 jar를 클래스 경로에 추가하라고 지시하고, 이렇게 작은 프로그램에 대해서는 .jar 파일이 과한 것이지만, 프로그램의 크기가 늘어나고 써드파티 패키지에 의존함에 따라 필수적이다.[2]

사용 중인 IDE에서의 자바 개발 키트[편집]

IDE 또는 통합 개발 환경(Integrated Development Environment)은 애플리케이션 개발을 위한 종합적인 도구 세트를 제공해 주는 소프트웨어다. IDE를 코드 자동 완성과 포매팅 같은 개발 고유의 추가 기능과 함께, 파일 탐색기나 텍스트 편집기 같은 도구 세트를 가지고 있는 시작적 운영체제라고 생각하면 좋다. 자바 개발에서 IDE가 하고 있는 핵심 사항 가운데 하나는 개발자 대신 컴파일 작업을 관리하는 것인데, IDE가 백그라운드에서 자동으로 컴파일 과정을 실행하므로 개발자가 이 작업을 계속해서 할 필요가 없다. IDE는 작업 과정에 따라 실시간 피드백을 제공하여 즉각적으로 코딩 오류를 잡아낸다.[2]

이클립스와 자바 개발 키트[편집]

이클립스는 간단한 프로세스로, 이클립스에는 다른 프로그램들과 마찬가지로 인스톨러가 포함되어 있으며 이클립스 페이지에서 사용 중인 운영체제에 맞는 인스톨러를 찾을 수 있다. 이클립스가 설치되면, 메뉴 바에서 윈도우 메뉴 항목을 누르고 환경 설정(preferences)을 선택해서 환경 설정을 보면 자바 항목이 보인다. 그것을 열면 그 안에서 컴파일러 항목이 보인다. 이것을 클릭하면 JDK용 몇 가지 옵션이 나타난다. 프로젝트에 맞는 JDK 버전을 선택해서 자세히 살펴보면, 개발자가 명령줄에서 실행했던 것처럼 IDE가 JDK 컴파일러를 실행한다. 이클립스 IDE는 자체 JDK 인스턴스도 가지고 있고 IDE가 개발자 대신 JDK와 JRE를 관리해 일을 훨씬 수월하게 만들어 준다.[2]

각주[편집]

  1. 34살에 곰을 잡고싶은 하르퓨리아, 〈JDK 설치 및 환경변수 설정하기 (Oracle or Zulu)〉, 《티스토리》, 2020-07-17
  2. 2.00 2.01 2.02 2.03 2.04 2.05 2.06 2.07 2.08 2.09 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 Matthew Tyson, 〈"JDK란 무엇인가" 자바 개발 키트 소개와 설치하기〉, 《아이티월드》, 2018-09-18
  3. 3.0 3.1 JDK〉, 《나무위키》
  4. 4.0 4.1 자바 개발 키트〉, 《위키백과》

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 JDK 문서는 소프트웨어에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.