일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
- 토이프로젝트
- circuitbreaker
- bean-validator
- 함수형프로그래밍
- Spring
- SpringBoot
- 객체비교
- 프로젝트설정
- 컨트리뷰팅
- cannot import name
- bulk_create
- django
- 운영체제
- Not Null constraint failed
- 2차원배열 정렬
- 쿼리셋합치기
- 마이크로서비스패턴
- n poem
- 좋은코드란
- DI
- 일급함수
- API문서화
- circular dependency
- 상속모델
- Npoem
- 주니어개발자
- GraphQL
- IOC
- resilience4j
- Java
- Today
- Total
코딩 하는 가든
Java - JVM, JDK, JRE에 대해 간단히 알아보자! 본문
JVM, JDK, JRE에 대해서 알아보기
JVM의 메모리 구조에 대해서 공부하던 중 문득 JVM과 그 주변 환경에 대한 간단한 정리를 한번 하고 가면 좋을 것 같아 기록합니다.
먼저 각 용어가 무슨 뜻인지 알아보겠습니다.
JVM (Java Virtual Machine)
자바 가상 머신 의 약자로 자바 바이트 코드를 실행시키기 위한 가상 머신입니다. 자바는 이 JVM 덕분에 플랫폼에 독립적일 수 있습니다.
JRE (Java Runtime Environment)
자바 실행 환경의 약자로 자바 프로그램을 실행하기 위한 도구들이 들어있으며 JVM이 이 안에 포함됩니다.
JDK (Java Development Kit)
자바 개발 도구의 약자로 자바로 개발을 하기 위한 모든 것을 묶어놓은 키트입니다. 자바 실행 환경과 기타 개발 도구로 구성됩니다.
대략 적인 뜻을 알아보았으니 좀 더 자세히 살펴보도록 합시다.
JVM
JVM은 자바 가상 머신의 약자로 자바 바이트 코드를 각 운영체제에 맞는 기계어로 바꾸어 실행될 수 있는 환경을 제공합니다.
* 자바 바이트 코드란? : 우리가 흔히 자바 파일을 만들면 .java 라는 확장자의 파일이 생기게 됩니다. 우리는 이 파일을 컴파일 하면 .class의 확장자를 가진 파일을 얻을 수 있는데 이 파일이 자바 바이트 코드로 이루어진 파일입니다. 이렇게 java파일을 컴파일할 수 있는 컴파일러는 JDK에 포함되어 있습니다.
마치 이런 식으로 JVM이 운영체제 위에서 자바 바이트 코드를 받아 각 운영체제에 맞는 기계어로 바꿔주기 때문에 자바는 플랫폼 독립적으로 실행될 수 있는 것입니다.
JRE
JRE는 자바 실행 환경의 약자입니다. 우리는 위에서 자바 바이트 코드는 JVM 위에서 실행되는 것을 알았습니다. 하지만 실제로 자바 프로그램이 실행되기 위해서는 JVM 외에도 필요한 기타 라이브러리 및 필수 파일들이 있습니다.
정리해 보면 자바 프로그램을 실행시키기 위해서는 JVM과 기타 라이브러리들이 필요 한데 이것들을 묶어서 JRE라고 합니다.
여기까지 자바를 실행할 수 있는 조건을 갖추었습니다. 하지만 자바로 개발을 하기 위해서는 실행 환경과 개발 도구가 필요합니다.
JDK
JDK는 자바 개발 도구의 약자입니다. 자바 실행 환경과 더불어 자바를 개발하기 위한 요소가 포함됩니다. 자바 소스 코드를 자바 바이트 코드로 바꾸기 위한 컴파일러 등이 포함된 패키지입니다.
이렇게 해서 JVM, JRE, JDK에 대해 대략적으로 알아보았습니다.
'Java' 카테고리의 다른 글
Java - Java에서 Throttle기법 사용 하기. (0) | 2021.04.30 |
---|---|
Java - Runtime Exception, Checked Exception 뭐가 다를까? (0) | 2020.08.26 |
Java - 자바 객체 비교하기 (equals / hashcode) (1) | 2020.08.12 |
Java - Lombok 자주 쓰는 어노테이션 정리 (0) | 2020.03.08 |
Java - 2차원 배열 정렬 하기 (0) | 2020.03.05 |