자바 기본기 다지기 - 자바란? JDK, JRE, JVM?

jungwoo jo·2021년 8월 6일
0

자바 기본기

목록 보기
1/9
post-thumbnail

Java란

자바는 운영체제 즉 플랫폼에 독립적으로 어디에서나 실행이 가능한 프로그램을 제공하는 언어이다.
처음 오크(Oak) 라는 이름으로 시작되어 썬 마이크로시스템즈의 개발자들로부터 개발되었다.
자바의 원래 목표는 가전제품에 탑재될 소프트웨어를 만드는 것이었다. 따라서 초기에는 가전제품이나 PDA와 같은 소형기기에 사용될 목적으로 같은 코드를 여러 종류의 운영체제에서 동일하게 구동이 가능한 것이 큰 특징이었다. 이후 다양한 운영체제를 사용하는 컴퓨터들이 인터넷 통신을 하게되면서 자바도 웹 개발에 적합하게 개발이 되었다.

자바 언어의 특징

  • 운영체제 독립적이다.
  • 객체지향언어이다.
  • 자동 메모리 관리(Garbage Collection)가 가능하다.
  • 멀티쓰레드를 지원한다.
  • WORA(Write Once, Run Anywhere)
  • 동적 로딩(Dynamic Loading)을 지원한다.

    동적 로딩 : 자바는 여러개의 클래스로 구성되어 있는데, 실행시에 모든 클래스가 한번에 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.

JDK(Java Development Kit)

자바 프로그램 개발시 필요한 도구의 모음이다. JDK 내부에는 JVM과 자바 클래스 라이브러리외에 자바 개발에 필요한 프로그램들이 있다.
JDK는 용도에 따라 종류가 다양하고 각 용도에 필요한 API가 추가되는 차이가 있다.

JDK = JRE + 자바 개발 도구

  • JDK 종류
    • Java SE(Standard Edition) : 표준 자바 플랫폼
    • Java EE(Enterprise Edition) : 상업 용도의 자바 플랫폼
    • Java ME(Micro Edition) : 임베디드 기기 용도의 자바 플랫폼
  • 자바 주요 실행 파일들
    • javac : 자바 컴파일러, 자바 소스코드를 바이트코드로 컴파일한다.
    • java : 자바 인터프리터, 컴파일러가 생성한 바이트코드를 해석하고 실행한다.
    • javap : 역어셈블러, 컴파일된 클래스파일을 원래의 소스로 변환한다.
    • javadoc : 자동문서 생성기, 소스파일에 있는 주석을 이용하여 자바 API문서와 같은 형식의 문서를 자동으로 생성한다.
    • jar : 압축 프로그램, 클래스 파일과 프로그램의 실행에 관련된 파일을 하나의 jar 파일(.jar)로 압축하거나 압축해제한다.

JRE(Java Runtime Enviroment)

자바 애플리케이션을 실행할 수 있도록 구성된 배포판으로 JVM과 핵심 라이브러리 및 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있다.
JRE는 플랫폼에 따라 다르기 때문에 시스템 유형(OS 및 아키텍처)에 따라 설치할 JRE 패키지를 선택해야 한다.

예를 들어 32비트 시스템에는 64비트 JRE를 설치할 수 없고 window 용 JRE는 linux에서 동작하지 않는다.

JRE = JVM + Java API(Library Code)

JVM(Java Virtual Machine)

자바를 실행하기 위한 가상 머신(실행 환경)으로 자바 바이트 코드를 실행시킨다. JVM은 JRE 내부에 종속되어 Windows, Linux, Macos 각각의 운영체제에 맞는 JVM이 존재한다.

JVM은 클래스 파일을 로드하고 내부 인터프리터와 JIT 컴파일러를 사용하여 컴파일러에 의해 컴파일된 바이트코드(클래스파일)를 바이너리 코드(기계어 코드)로 변환하고 실행한다.

JVM에 대한 더 자세한 정보

  • 가상 머신이란 프로그램을 실행하기 위해 물리적 머신(즉, 컴퓨터)와 유사한 머신을 소프트웨어로 구현한 것을 말한다.
  • JVM 기반으로 동작하는 프로그래밍 언어 (클로저, 그루비, JRuby, Jython, Kotlin, Scala, ...)
  • JVM의 역할

    • 인터프리터, GC(Garbage Collection)를 활용한 힙 메모리 관리
  • JVM의 요소

    • 인터프리터, 클래스로더, 실행 엔진(JIT 컴파일러), GC(Garbage Collection)

JDK, JRE, JVM 차이

위에서도 언급하였지만 결국 JDK, JRE, JVM의 차이는 다음과 같다.

JRE = JVM + libraries to run Java application.
JDK = JRE + tools to develop Java Application.

  • 출처 : 인프런 강의(더 자바, 코드를 조작하는 다양한 방법 - 백기선)

요약해서 말하자면 코드를 작성하는 java 애플리케이션 개발자라면 컴퓨터에 JDK가 설치되어 있어야 하고 java로 구축된 응용 프로그램만 실행하려면 컴퓨터에 JRE만 설치하면 된다.

자바 프로그램 컴파일 및 실행 과정

  1. 자바 소스 코드를 만들기 위해 Eclipse, IntelliJ 같은 IDE(Integrated Development Environment) 편집기를 사용하여 Hello.java 파일을 만든다.

  2. 만들어진 Hello.java 파일을 컴파일러(javac)를 사용하여 바이트 코드로 구성된 Hello.class 파일로 만든다.

  3. Hello.class 파일을 원하는 플랫폼의 JVM에서 실행 시킨다.

  4. JVM은 바이트 코드를 컴퓨터가 실행할 수 있는 기계어로 변환하여 해당 플랫폼에서 자바 응용 프로그램이 동작하게 된다.

바이트 코드 : JVM 같은 가상머신이 해석하고 실행하기 위한 코드
바이너리 코드 : 0, 1 로 구성된 이진 파일로 운영체제에 의해 실행되는 코드


이 글은 자바 언어에 대한 기본기를 다지기 위해 작성하는 글입니다.
글에서 잘못되거나 추가되어야 하는 내용 관련 사항은 jungwoo5759@gmail.com 로 공유해주시면 감사하겠습니다.

profile
개발이 즐거운 사람

0개의 댓글