4월 26일 (금) 오전 8:32

logo

  • home
  • head
  • itnews
  • product
  • mobile
  • game
  • benchmark
  • analysis
  • blog

개봉 2023.11.22. / 등급: 12세 관람가 / 장르: 드라마 / 국가: 대한민국 감독 : 김성수 출연 : 황정민, 정우...
노량: 죽음의 바다 / 개봉 2023.12. / 장르: 액션, 드라마 / 국가: 대한민국 감독 : 김한민 출연 : 김윤석, ...

Matthew Tyson | JavaWorld


자바 개발 키트(Java Development Kit, JDK)는 자바 애플리케이션을 구축하기 위한 핵심 플랫폼 구성요소다. 이 중심에는 자바 컴파일러(Compiler)가 있다.

Credit: Nic McPhee (CC BY-SA 2.0)

JDK는 자바 가상 머신(Java Virtual Machine, JVM), 그리고 자바 런타임 환경(Java Runtime Environment, JRE)과 함께 자바 프로그래밍에 사용되는 3대 핵심 기술 패키지 가운데 하나다. 이 3가지 기술이 어떻게 연결되어 있는지, 또한 어떻게 다른지 구별하는 것이 중요하다.

- JVM은 프로그램을 실행하는 자바 플랫폼 구성요소다.
- JRE는 JVM을 생성하는 디스크 상의 부분이다.
- JDK는 개발자들이 JVM과 JRE에 의해 실행되고 구동될 수 있는 자바 프로그램을 생성할 수 있게 해준다.


자바를 처음 접하는 개발자는 JDK와 JRE를 혼동하는 경우가 종종 있다. 다른 점은 JDK가 자바 기반 소프트웨어를 개발하기 위한 도구들로 이뤄진 패키지인 반면, JRE는 자바 코드를 실행하기 위한 도구들로 구성된 패키지라는 점이다.

JRE는 단지 자바 프로그램을 구동하기 위한 독립형 구성요소로써 사용될 수도 있지만, 동시에 JDK의 일부이기도 하다. 자바 프로그램을 구동하는 것이 자바 프로그램 개발의 일환이기 때문에 JDK는 JRE를 필요로 한다. 다음 그림은 JDK가 자바 애플리케이션 개발 라이프사이클에서 어디에 속하는 지를 보여준다.

Credit: Matthew Tyson

DK에 대한 기술적 정의와 일반적 정의는 다음과 같다.
- 기술적 정의: JDK는 컴파일러와 클래스 라이브러리(Class Library)를 포함하는, 자바 플랫폼 사양서의 구현이다.
- 일반적인 정의: JDK는 개발자가 자바 기반 애플리케이션 개발을 위해 다운로드하는 소프트웨어 패키지다.

JDK와 자바 컴파일러
모든 JDK는 자바 애플리케이션 구동에 이용되는 환경이 JRE뿐만 아니라, 자바 컴파일러도 포함하고 있다. 컴파일러는 평범한 텍스트인 원시(Raw) .java 파일을 받아서 실행 가능한 .class 파일로 만드는 기능이 있는 소프트웨어다. 곧 컴파일러 사용을 볼 수 있을 것이다. 우선, 개발 환경으로 JDK를 다운로드해 설정하는 방법을 알려 줄 것이다.

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

JDK 패키지
자바 버전 선택과 함께, 자바 패키지도 선택해야 한다. 패키지(Package)란 서로 다른 유형의 개발을 표적으로 하는 자바 개발 키트다. 가용 패키지로는 자바 EE(Enterprise Edition), 자바 SE(Standard Edition), 그리고 자바 ME(Mobile Edition)이 있다.

초보 개발자라면 때로 어느 패키지가 자신의 프로젝트에 맞는지 확신이 서지 않을 수 있다. 일반적으로, 개별 JDK 버전은 자바 SE를 포함하고 있다. 자바 EE나 자바 ME를 다운로드하면, 표준 에디션(Standard Edition, SE)도 얻는 것이다. 예를 들면, 자바 EE는 엔터프라이즈 자바 빈(JavaBeans)이나 객체 관계 매핑(Object Relational Mapping, ORM) 지원 같은 엔터프라이즈 애플리케이션 개발에 유용한 추가적인 도구를 가지고 있는 표준 플랫폼이다.

필요한 경우, 나중에 다른 JDK로 전환하는 것도 어렵지 않다. 이제 막 시작한 경우, 맞는 자바 버전과 JDK 패키지 선정에 대해 너무 걱정하지 마라.

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

JDK 다운로드
핵심 JDK 클래스와 기술에 초점을 맞추기 위해, 이번 튜토리얼에서는 자바 SE만을 사용할 것이다. 자바 SE JDK를 다운로드 하려면, 오라클의 공식 다운로드 페이지를 방문하라. 다음 그림에서처럼, 사용할 수 있는 다양한 JDK 패키지를 볼 수 있을 것이다.

Credit: Matthew Tyson

자바 SE 다운로드를 선택하기에 앞서, 다른 옵션들을 살펴보자. 여러 가지 자바 JDK들이 있다.
자바 표준 에디션 JDK를 다운로드 하라. 해당 옵션들은 다음 그림에 나와있다.

Credit: Matthew Tyson

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

JDK 설치
JDK 인스톨러(Installer, 설치 마법사)를 실행하면, 3가지 구성요소에 대한 선택사항이 주어진다. 개발 도구, 소스코드, 그리고 퍼블릭 JRE. 이 가운데 한 가지 또는 전체를 설치할 수 있다. 여기서는 기본(Default)을 선택한다.

"개발 도구" 옵션을 설치는 적절한 JDK를 제공한다. "소스코드" 설치에는 핵심(Core) 자바 API에 있는 퍼블릭 클래스들에 대한 소스가 포함된다. 이 옵션을 포함시키면 개발자는 앱을 구축할 때 소스코드를 참조할 수 있다. 세 번째 옵션인 "퍼블릭 JRE"는 JDK와 JRE가 별개의 객체임을 충분히 납득시킨다. 퍼블릭 JRE는 자바 프로그램을 실행하기 위해 다른 프로그램들이 사용할 수 있으며, JDK와는 별개로 설치될 수 있다.

여기서는 2가지 구성요소 모두를 설치하고 각각에 대해 기본 값을 사용한다. 이렇게 한다는 것은 JDK와 JRE가 사용 중인 운영체제의 기본 위치에 설치된다는 것을 의미한다. 윈도우에서는 다음 그림에서처럼 C:\Program Files\Java 이다.

Credit: Matthew Tyson

명령 줄에서 JDK 사용
JDK와 JRE 설치는 명령 줄에 java 명령어를 추가한다. 명령 셸을 실행하고 설치된 자바 버전을 알려주는 java –version을 입력함으로써 이를 확인할 수 있다(어떤 경우에는 시스템 경로에 변경사항을 반영하기 위해 시스템을 재 시작해야 할 수도 있다).

java 명령어가 있는 것은 좋다, 그런데 javac는 어떤가? 자바 파일을 컴파일하기 위해서는 이 JDK 요소가 필요하다.

javac 명령어
javac 명령어는 /jdk 디렉토리 안에 들어 있지만, 설치 중에 시스템 경로에 자동으로 추가되지는 않는다. javac를 설치할 수 있는 옵션을 행사하거나, 이 명령어를 포함하고 있는 IDE를 설치할 수도 있다. 자바 프로그램을 예전의 방식으로 컴파일해서 실행하는 것으로 시작해보자.

간단한 자바 프로그램 만들기
- 1단계. 간단한 자바 프로그램 작성
Intro.java라는 새로운 텍스트 파일을 생성하고, 그것을 문서 폴더 같은 곳에 저장하라. 그 다음에는 간단한 자바 프로그램인 목록 1의 코드를 추가하라.

목록 1. Intro.java
public class Intro {

public static void main(String[] args) {
System.out.println("Welcome to the JDK!");
}

}


- 2단계: JDK를 사용해 컴파일하기
텍스트 파일을 실행 가능한 프로그램으로 만들기 위해 JDK 컴파일러를 사용하라. 자바로 컴파일 된 코드를 바이트코드(Bytecode)라 부르며, .class 확장자가 붙는다.

자바 컴파일러의 약자인 javac 명령을 사용하게 될 것이다. 명령 셸에 명령어의 전체 경로를 입력하고, Intro.java 파일을 넘겨라. 필자의 시스템에서는 목록 2처럼 보인다.

목록 2. JDK를 사용해 컴파일하기
"C:\Program Files\Java\jdk-10.0.1\bin\javac.exe" Intro.java

이렇게 하면, 컴파일에 성공할 것이다. javac는 성공 메시지를 표시하지 않는다. 단지 새로운 파일만 출력할 것이다. 오류는 콘솔에 표시된다.

- 3단계. .class 파일 실행
Intro.java와 같은 디렉토리에서 Intro.class 파일을 볼 수 있을 것이다.

java Intro를 입력해 실행할 수 있으며, 목록 3의 결과가 보여질 것이다. 이 명령을 입력할 때 .class를 포함하지 않음에 유의하라.

목록 3. Intro.class 실행
C:\Users\mtyson\Documents>java Intro
Welcome to the JDK!


jar 명령어
javac은 JDK의 스타지만, /bin 디렉토리에는 필요한 다른 도구들이 들어있다. javac 다음으로 가장 유망한 것은 jar 도구일지도 모르겠다.

.jar 파일은 패키지 된 자바 클래스 세트다. 일단 컴파일러가 .class 파일을 생성한 다음에는, 개발자가 이것들을 예측 가능한 방식으로 압축하고 체계화하는 하나의 .jar 파일에 넣을 수 있다.

Intro.classjar 파일로 변환해보자.
Intro.java를 저장한 위치로 되돌아가서, 목록 4에 보여진 명령어를 입력하라.

목록 4. JAR 파일 생성
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를 활용할 수 있다:

java -cp intro.jar Intro

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

사용 중인 IDE에서의 JDK
JDK 다운로드 페이지를 떠올려보면, 넷빈즈(Netbeans) IDE가 포함된 다운로드 옵션이 기억날 것이다. IDE 또는 통합 개발 환경(Integrated Development Environment)는 애플리케이션 개발을 위한 종합적인 도구 세트를 제공해주는 소프트웨어다. IDE를 코드 자동 완성과 포매팅 같은 개발 고유의 추가 기능과 함께, 파일 탐색기나 텍스트 편집기 같은 도구 세트를 가지고 있는 시각적 운영체제라고 생각하라.

자바 개발에서, IDE가 하고 있는 핵심 사항 가운데 하나는 개발자 대신 컴파일 작업을 관리하는 것이다. 즉, IDE가 백그라운드에서 자동으로 컴파일 과정을 실행하므로, 개발자가 이 작업을 계속해서 할 필요가 없다. IDE는 작업 과정에 따라 실시간 피드백을 제공해, 즉각적으로 코딩 오류를 잡아낸다.

자바용으로 강력한 IDE다 몇 가지 있다. 지금까지 명령 줄에서 JDK의 동작 원리를 보았으니, 이제는 이클립스 IDE에서 어떻게 동작하는지 짧게 살펴보자.

이클립스(Eclipse)와 JDK
이클립스 설치는 본 가이드의 범위 밖이지만, 간단한 프로세스다. 이클립스에는 다른 프로그램들과 마찬가지로 인스톨러가 포함되어 있으며, 여기에서 사용 중인 운영체제에 맞는 인스톨러를 찾을 수 있다. 

이클립스가 설치되면, 메뉴 바에서 윈도우 메뉴 항목을 누르고 환경설정(preferences)을 선택하라.

환경설정 창 안에서, 자바 항목이 보일 것이다. 그것을 열면, 그 안에서 컴파일러 항목이 보인다. 이것을 클릭하면, JDK용 몇 가지 옵션이 나타난다. 다음 그림은 이클립스의 JDK 옵션 스냅샷을 보여준다.

Credit: Matthew Tyson

앞서 언급한 것처럼, 프로젝트에 맞는 JDK 버전을 선택해야 한다. 자세히 살펴보면, 개발자가 명령 줄에서 실행했던 것처럼 IDE가 JDK 컴파일러를 실행한다. 이클립스 IDE는 자체 JDK 인스턴스도 가지고 있다. IDE가 개발자 대신 JDK와 JRE를 관리해 일을 훨씬 수월하게 만들어준다.

이번 기사는 3가지 핵심 자바 플랫폼 구성요소를 소개하는 시리즈 중 두 번째다. JVM, JDK, 그리고 JRE. 이 시리즈의 다음 기사를 기대하라. editor@itworld.co.kr

원문보기: http://www.itworld.co.kr/howto/110817#csidx464d555507562479138ecf56c8a5f90 onebyone.gif?action_id=464d5555075624791






  1. 5G란 무엇인가 : 현황, 기술개발, 해결과제, 일정, 전망

    Craig Mathias | Network World 5G라고 알려진 차세대 무선 WAN 통신이 조만간 언론의 1면을 장식할 것으로 보인다. 5G는 유선 보완제에서 유선 대체제로 이동통신의 진화를 완성할 것이며, 전략적으...
    Date2017.07.15 CategoryIT KNOWLEDGE
    Read More
  2. [보안NW] 내부망, DMZ구간, 외부망 이란?

    개인정보보호법이 시행되면서 개인정보보호의 기술적 보호대책을 위해 내부망, DMZ구간, 외부망이라는 말이 많이 언급되고 있습니다. 내부관리계획을 세우다보면, 내부망을 단순히 사내조직원들끼리 사용...
    Date2017.07.08 CategoryIT KNOWLEDGE
    Read More
  3. Wireless Multicast 무선구간 멀티캐스트

    * Lesson 2 Describing Implications for Multicast in 802.11 (p223) 멀티캐스트는 유선쪽에서 오는 트래픽을 무선 STA에 배포 하거나 혹은 모빌리티 메시지 정보를 교환하는데 사용 합니다.     -----...
    Date2017.06.10 CategoryIT KNOWLEDGE
    Read More
  4. L2TPv3 프로토콜, VPN

    L2TPv3(Layer 2 Tunnel Protocol Version 3, RFC 3931)은 Layer2 의 프레임을 그대로 IP 캡슐화해서 remote 측으로 전달하는 프로토콜이다. 즉 CDP, STP, ARP 까지 사업자를 통해서 remote 측으로 전달 ...
    Date2017.05.13 CategoryIT KNOWLEDGE
    Read More
  5. 리눅스 vi 명령어 모음

    <command mode> h 왼쪽 j 아래 k 위 l 오른쪽 H,J,K,L(대문자): 끝까지 이동 w: 단어의 처음 특수기호 인식 왼->오 공백인식 b: 단어의처음 특수기호 인식 오->왼 공백인식 e: 단...
    Date2017.04.10 CategoryIT KNOWLEDGE
    Read More
  6. L4 스위치/Alteon SLB/서버로드밸런싱

    대부분의 네트워크망에서 꼭 알아야지만 전체 트래픽의 흐름도를 알 수 있는 Layer4 Switch 입니다. 일단 가장 Layer4 SW를 많이 사용하는 SLB(Server Load Balancing)부터 알아보겠습니다. 이후 방...
    Date2017.02.27 CategoryIT KNOWLEDGE
    Read More
  7. 프로그래밍 언어별 딥러닝 라이브러리 정리

    AI Korea Open 그룹에서도 라이브러리에 관한 투표가 있었고, 많은 분들이 관심있어할 만한 부분이라 생각해서 한 번 정리해 봤습니다! (AI Korea Open 그룹의 투표 결과) Python요즘 뜨는 언어답게, ...
    Date2017.02.02 CategoryIT KNOWLEDGE
    Read More
  8. DevOps (데브옵스)에 대하여

    최근에 DevOps(데브옵스)라는 개발방법론이 솔솔 들리고 있다.  데브옵스는 개발(Development) + 운영(Operation)을 합친 말로 개발와 운영의 상호작용을 원할하게 하는데 있다고 합니다.  [마이크로소...
    Date2016.12.27 CategoryIT KNOWLEDGE
    Read More
  9. 색공간 (sRGB, 어도비 RGB 등)

    목차가장 기본적인 색공간 RGB sRGB(standard RGB) 애플 RGB(Apple RGB) 어도비 RGB(Adobe RGB) 비디오에서 가장 많이 사용하는 색공간 YUV, YCbCr/YPbPr NTSC의 색공간 YIQ 인쇄 매체의 핵심 색공간 CMY, ...
    Date2016.11.25 CategoryIT KNOWLEDGE
    Read More
  10. 2016 SDS 그 유형과 소비 형태에 관해

    소프트웨어 정의 스토리지, Software defined storage(이하 SDS)가 어느 정도 업계에 많이 알려지고 실제로 도입되는 경우가 발생하면서 SDS에 대한 궁금함이 더욱 더 많이 생기고 있습니다. 업계의 많은 ...
    Date2016.11.04 CategoryIT KNOWLEDGE
    Read More
  11. 하둡, HDFS, 맵리듀스 개념

    빅 데이터는 클라우드 컴퓨팅만큼이나 널리 확산되고 있는 개념이다. 그러나 빅 데이터의 역량과 한계에 관해서는 사람들이 잘못 알고 있는 부분들이 많다. 특히 빅 데이터와 관련해 사람들은 다음의 질문...
    Date2016.09.21 CategoryIT KNOWLEDGE
    Read More
  12. 스토리지 풀 개요 (Storage Pool)

    풀 또는 스토리지 풀은 지정된 볼륨 세트에 대한 모든 데이터를 공동으로 포함하는 MDisk 콜렉션입니다. 그림 1은 네 개의 MDisk가 있는 스토리지 풀을 나타냅니다. 그림 1. 스토리지 풀 풀의 모든 MDi...
    Date2016.08.22 CategoryIT KNOWLEDGE
    Read More
  13. Windows Dump 구성 및 강제 생성

    Windows에서 강제로 덤프 생성하기 Action Plan 1. What: Full dump 저장을 위해 Page file을 총 메모리+1MB 정도로 증설 What: ASR 비활성화 To do. 1) Win7 > 제어판\시스템 및 보안\시스템 > 고급 선...
    Date2016.07.29 CategoryIT KNOWLEDGE
    Read More
  14. SMP(Symmetric Multi-Processing) vs AMP(Asymmetric Multi-Processing)

    오늘은 SMP와 AMP에 대해 간략히 학습하는 시간을 갖도록 하겠습니다. 1. SMP(Symmetric Multi-Processing) SMP은 두 개 이상의 동일한 프로세서가 하나의 메모리, I/O 디바이스, 인터럽트 등의 자원...
    Date2016.06.20 CategoryIT KNOWLEDGE
    Read More
  15. 쿨러 베어링 타입별 특징 (슬리브/볼/FDB)

    베어링 [bearing] : 회전하고 있는 기계의 축을 일정한 위치에 고정시키고 축의 자중과 축에 걸리는 하중을 지지하면서 축을 회전시키는 역할을 하는 기계 요소 냉각팬의 베어링 방식에...
    Date2016.05.11 CategoryIT KNOWLEDGE
    Read More
  16. 컨테이너 기반 가상화 기술

    Micro Service Architecture 에서 인프라 적으로 중요한 개념으로 꼽으면 아래와 같이 2가지로 정리할 수 있다.Application Programming Interface (API) 가상화 (virtualization) API는 이미 많은 개발...
    Date2016.04.29 CategoryIT KNOWLEDGE
    Read More
  17. 하이퍼 컨버지드 인프라 (Hyperconverged Integrated System)

    통합 시스템, 컨버지드 인프라 등으로 불리는 Integrated System의 성장과 발전이 데이터센터 전체에 상당히 크게 영향을 미칠 것으로 보입니다. 시장 조사 기관인 가트너에 따르면 2014년부터 2019년에 이...
    Date2016.03.22 CategoryIT KNOWLEDGE
    Read More
  18. 모바일IP 이론

    * Mobile IP (모바일 IP) : 모바일 IP 에 대해서 알아본다. 1. Mobile IP 정의 Mobile IP는 IETF 표준 통신 프로토콜로, 이동 기기 사용자로 하여금 한...
    Date2016.03.14 CategoryIT KNOWLEDGE
    Read More
  19. TLS 전송계층보안

    인터넷에서의 정보를 암호화해서 송수신하는 프로토콜. 넷스케이프 커뮤니케이션스사가 개발한 SSL(Secure Sockets Layer)에서 기반한 기술로, 국제 인터넷 표준화 기구에서 표준으로 인정받은 프로토콜이...
    Date2016.02.04 CategoryIT KNOWLEDGE
    Read More
  20. 시스코 스위치 이더채널

    Etherchannel, 이더채널 - 두 스위치간에 연결된 복수개의 포트를 하나의 포트처럼 동작시키는 것을 말한다 이더채널을 구성할 때 사용되는 프로토콜은 시스코에서 만든 PAgP(Port Aggregation Protocol)와...
    Date2015.12.28 CategoryIT KNOWLEDGE
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 Next
/ 7