일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 1주일회고
- Spring multimodule
- 구글 OAuth login
- 프로그래머스 이중우선순위큐
- 항해99
- 빈 충돌
- 코딩테스트 준비
- infcon 2024
- 프로그래머스
- KPT회고
- 디자인 패턴
- 취업리부트코스
- Python
- 단기개발자코스
- TiL
- JavaScript
- 빈 조회 2개 이상
- jwttoken
- 인프콘 2024
- 개발자부트캠프추천
- jwt
- 디자인패턴
- 개발자 취업
- 파이썬
- 전략패턴 #StrategyPattern #디자인패턴
- 커스텀 헤더
- 99클럽
- DesignPattern
- @FeignClient
- spring batch 5.0
- Today
- Total
m1ndy5's coding blog
JVM, JRE, JDK & 자바 프로그램의 실행 과정 본문
자바를 사용해 개발을 할 때 항상 JDK를 설치해야 했다.
이 JDK는 무엇이고 JVM, JRE와 어떤 차이가 있는지 알아보자!
JDK(Java Development Kit)
JDK는 자발 개발키드의 약자로 개발자들이 자바로 개발하는 데 사용되는 SDK(소프트웨어 개발 키트)이다.
JDK 안에는 자바 개발 시 필요한 라이브러리들과 javac(자바 컴파일러로 자바 소스를 바이트 코드로 컴파일), javadoc(자바 소스로부터 HTML 형식의 API 도큐먼트 생성) 등의 개발 도구들이 포함되어 있고, 자바 프로그램을 실행도 시켜줘야하기 때문에 JRE도 함께 포함되어 있다.
JRE(Java Runtime Environment)
JRE는 자바 실행환경의 약자로써 JVM과 자바 프로그램을 실행(동작)시킬 때 필요한 라이브러리 API를 함께 묶어서 배포되는 패키지이다.
이외에도 자바 런타임 환경에서 사용하는 프로퍼티 세팅이나 리소스 파일을 가지고 있다.
JRE는 기본적으로 JDK에 포함되어 있기 때문에 JDK를 설치하면 함께 설치된다.
JVM
JVM은 Java Virtual Machine의 약자로, 자바 프로그램을 실행하기 위한 가상 환경을 제공하는 소프트웨어이다.
JVM은 자바 바이트 코드를 해석하고 실행하는 역할을 한다.
자바 바이트 코드 : 자바 소스 코드를 컴파일한 결과물로, 특정 플랫폼에 의존하지 않는 중간 언어
JVM이 필요한 이유
1. 플랫폼 독립적
자바는 Write Once Run Anywhere 이라는 한 번 작성하면 어디서든지 실행가능한 특성을 가지고 있다.
이를 가능하게 해주는 것이 JVM인데, 자바는 운영체제나 하드웨어 환경과 상관없이 JVM에서 동작하기 때문이다.
2. 자동 메모리 관리
JVM은 가비지 컬렉션을 통해 메모리를 자동으로 관리한다.
이는 프로그래머가 명시적으로 메모리를 할당하고 해제할 필요가 없게 해주며, 메모리 누수와 같은 일반적인 오류를 방지할 수 있다.
3. 보안 강화
코드 검증과 클래스 로딩 중에 보안 검사를 수행하여 악성 코드의 실행을 방지할 수 있다.
4. 효율적인 실행
Just-In-Time 컴파일러(JIT 컴파일러)를 통해 자바 바이트 코드를 네이티브 코드로 변환하여 실행한다.
이로써 실행 속도를 향상시키고, 프로그램의 최적화를 가능케 한다.
여기서 중요한 점은 자바 프로그램과 달리 JVM은 운영체제에 종속적이기 때문에 각 운영체제에 맞는 자바 가상 머신을 설치해야한다.
이처럼 자바 프로그램은 일반 프로그램보다 자바 가상 머신이라는 한 단계를 더 거쳐야 하기 때문에 상대적으로 다른 프로그램들에 비해 실행 속도가 느리다는 단점을 가지고 있다.
이를 보완하기 위해 JIT 컴파일러 라는 내부 프로그램을 사용하여 필요한 부분만을 기계어로 바꾸어 주는 등 성능 향상을 시켰지만 C언어의 실행속도 보다는 느리다.
자바 프로그램의 실행 과정
그렇다면 자바 프로그램이 어떻게 실행되는지 살펴보자.
1. 소스코드를 작성한다. (.java)
2. 컴파일러는 자바 소스코드를 이용하여 클래스 파일을 생성한다. 컴파일된 클래스 파일은 JVM이 인식할 수 있는 바이트 코드 파일이다. ).class)
3. JVM은 클래스 파일의 바이트 코드를 해석하여 바이너리 코드로 변환하고 프로그램을 수행한다.
결론
Java로 프로그램을 직접 개발하려면 JDK가, Java 프로그램을 실행시키려면 JRE가 필요하다.
JVM을 사용함으로써 플랫폼에 구애받지 않고 Java 파일이 실행될 수 있지만 JVM이라는 단계를 더 거쳐야하기 때문에 다른 프로그램보다는 실행속도가 느리다.
소스코드(.java)의 컴파일을 시작하면 컴파일러가 클래스 파일(.class)로 변환하고 이는 바이트 코드 파일이다. 이 바이트 코드 파일을 JVM이 해석하여 바이너리 코드로 변환하고 프로그램을 수행한다.
'CS Study' 카테고리의 다른 글
Garbage Collector (1) | 2024.03.07 |
---|---|
Java의 메모리 영역 (0) | 2024.03.07 |
영속성 컨텍스트 (0) | 2024.03.06 |
JPA 도입 시 고려해 볼 사항 (0) | 2024.03.06 |
Call by Value / Call by Reference in Java (1) | 2024.03.06 |