본문 바로가기
Dev/☕ Java

[Java] 자바 개발환경과 실행 과정 (feat. JDK, JRE, JVM)

by 아아덕후 2023. 5. 28.
반응형
목차
1. Java 개발환경
2. Java 파일을 실행하는 과정
3. JDK, JVM, JRE 란?

프로젝트에서 하나의 업무 페이지에 대한 프론트부터 백엔드까지 개발해야 하는 업무가 주어졌습니다.
이에 백엔드를 다시 공부하며 이전에 헷갈렸던 Java를 실행시키기 위한 개발환경에 대해서
JDK, JVM, JRE을 명확하게 정리하기 위해 글을 작성했습니다.
 


1. Java 개발환경

Java 개발환경이란, 자바 언어가 실행할 수 있는 실행 환경을 말한다.

자바언어로 만들 수 있는 프로그램의 유형 3가지는 다음과 같다.

  • 데스크톱 응용 SW : JavaSE 플랫폼    (SE : Standard Edition)
  • 웹 기반 응용 SW : JavaEE 플랫폼   (EE : EnterPrise Edition)
  • 모바일 기반 응용 SW : JavaME 플랫폼 (ME : Micro Edition)

이때 플랫폼은 각 유형에 맞는 프로그램을 개발할 수 있는 개발환경을 의미한다.
이러한 개발 환경구성하기 위해서는 JDK설치하면 된다. 
JDK내에 JVM, Java API 등 자바를 개발하는데 필요한 프로그램이 설치되기 때문이다.


2. Java 파일을 실행하는 과정

Java언어로 코드를 작성하여 실행(Run)하면,
소스코드인 java 파일(Test.java)을
컴파일러(javac.exe)러가 컴파일(문법 오류 체크, 저급 프로그래밍 언어로 변환 등)하여
클래스파일(Test.class)을 생성한다.

  class 파일 : (자바 소스 코드(Test.java)를 자바 가상 머신(JVM)이 이해할 수 있는 자바 바이트 코드(*.class)로 변환)

이후 자바 가상 머신(JVM)이 해당 클래스 파일을 실행한다. (JVM내에 인터프리터 : JIT ) 
 
이 과정을 통해 Test.java에 작성한 소스 코드를 실행할 수 있다.

출처 : https://www.scaler.com/topics/java/how-java-program-works/

더 짧게 요약하자면, 

  1. Java 언어로 코드작성한다. (Test.java)
  2. 해당 Java파일을 컴파일 한다.
  3. 컴파일 후 class 파일생성된다. (Test.class)
  4. JVMclass 파일실행한다.
  5. Java 언어로 작성한 코드실행된다.

3. JDK, JRE, JDK 란? 

JDK

  • JDK는 Java Development Kit(자바 개발 키트)의 약자로 자바를 개발하는데 필요한 프로그램이 설치된 키트이다.
  • JDK는 자바 기반의 개발환경에서 가장 기본이 되는 소프트웨어이다.
  • java 문법 오류 검증 SW, 변환 SW(컴파일) 필요한데, 이것을 JDK 설치하면 실행할 수 있다.
  • JDK를 설치하면, JavaSE 개발환경이 구축된다.
    • 크게 JRE와 개발에 필요한 실행파일(java.exe 등)의 java 개발환경 구성요소가 내 PC에 설치된다.
    • 이를 통해 java 언어로 데스크톱 응용 SW를 개발할 수 있다.

JRE

  • JRE는 Java Runtime Environment로 자바로 작성된 응용프로그램이 실행되기 위한 최소 환경을 의미한다.
  • JRE는 JVM과 클래스라이브러리(Java API)를 포함한다.
  • JRE가 있어야 Java 언어로 작성된 프로그램을 실행할 수 있다.
  • 따라서 Java 언어로 개발 된 프로그램을 실행하기 위해서는 JDK 전체가 아닌 JRE만 설치하면 프로그램을 실행할 수 있다.

 

JVM

  • JVM은 Java Virtual Machine의 약자로, 자바를 실행하기 위한 가상 기계(컴퓨터)이다.
  • JVM은 컴파일된 class 파일(bytecode로, JVM이 실행할 수 있는 언어로 변환한 파일)을 실행한다.
    (java.exe 에서 명령어를 통해 실행) 
참고 : 자바의 정석
  • 일반 애플리케이션은 OS와 바로 붙어 있기 때문에 OS 종속적이다.
  • 하지만, Java 애플리케이션은 JVM을 한번 거쳐 OS로 전달된다.
  • 이를 통해 Java 애플리케이션은 JVM을 통해서 어떤 운영체제(윈도우, 맥, 리눅스)에서든지 Java를 실행할 수 있다.
    • Java 애플리케이션은 운영체제나 하드웨어가 아닌 JVM 하고만 통신한다.
    • JVM은 Java 애플리케이션으로부터 전달받은 명령(class 파일 = bytecode)을
      해당 운영체제가 이해할 수 있도록 변환하여 전달한다.
  • 이때, JVM1차 컴파일된 bytecode(class) 파일을 현재 OS에 맞게
    한번 더 컴파일하여 .exe 코드로 운영체제에 맞게 변환하여 메모리에 로딩하고 실행한다.
  • 따라서, Java로 개발하고 JVM을 통해 어떤 운영체제에서라도 독립적으로 Java를 실행할 수 있다.
    • 단, JVM은 운영체제 종속적이기 때문에 각 운영체제에 맞는 JVM을 설치해야 한다.
출처 : https://dotnettutorials.net

* Virtual Machine = 가상 기계/컴퓨터를 의미하며 소프트웨어로 구현된 컴퓨터로 컴퓨터 속 컴퓨터라고 생각하면 되다.
참고 : Java의 정석 
 


 

Java의 구동방식 이해

 

참고 : 패스트캠퍼스 - 시그니처 백엔드 Path 초격차 패키지 Online

Java 코드 작성
-> javac.exe 가 .java 파일을 컴파일 하여 .class파일 생성 (Java Byte Code : 중간어코드)
-> Run 클릭 시, java.exe 가 해당 java.class 파일 실행(명령어)을 JVM에 요청  
-> JVM이 .class 파일을 메모리에 로딩시키고 (Class Loader) OS에 맞게 .exe 코드로 변환하고 실행(Execute)한다.
-> 이때, JVM은 4개의 메모리(메서드, 힙, 스택, 리터럴 풀)를 이용해서 클래스를 실행한다.
 


참고

- 자바의 정석 
- 패스트캠퍼스 : 시그니처 백엔드 Path 초격차 패키지 Online.
- 자바 실행환경 이미지 : https://www.scaler.com/topics/java/how-java-program-works/
 

반응형

댓글