-
[JAVA] JVM / JRE / JDKCode/그 외 2021. 11. 22. 12:13
위의 그림에서 알 수 있듯, JRE는 JVM을 포함하고 JDK는 JVM을 포함한다.
JVM (Java Virtual Machine) 자바가상머신
JVM은 자바 소스 코드로부터 만들어지는 자바 바이러니 파일(.class)을 실행할 수 있게 해준다.
플랫폼에 의존적이므로 리눅스의 JVM과 윈도우즈의 JVM은 다르다.
단, 컴파일된 바이너리 코드는 어떤 JVM에서도 동작시킬 수 있다.
JVM이 하는 역할
- 바이너리 코드를 읽는다.
- 바이너리 코드를 검증한다.
- 바이너리 코드를 실행한다.
- 실행환경(Runtime Environment)의 규격을 제공한다. (필요한 라이브러리 및 기타파일)
그러므로, JVM은 자바 프로그램이 어느 기기나 운영체제 상에서도 실행될 수 있도록 만들어주며, 메모리를 효율적으로 관리하고 최적화 해준다. 메모리 관리를 하는 프로세스를 가비지 컬렉션(Garvage Collection)이라고 지칭한다.
* 가비지 컬렉션 (Garvage Collection) : 사용하지 않은 메모리를 지속적으로 찾아 제거함으로써 효율적 메모리 관리를 하도록 함.
JRE (Java Runtime Envirnment) 자바 실행환경
JRE는 JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있다. JRE는 JVM의 실행환경을 구현했다고 할 수 있다.
JVM, 자바 클래스 로더(Java class Loader)를 포함한다.
* Java class loader : 클래스 라이브러리를 통해 작성한 자바 코드를 라이브러리와 결합한 뒤 JVM에 넘겨 실행시킨다. JVM이 원활한 동작을 할 수 있도록 환경을 맞춰주는 역할.
* 자바의 메모리 관리 >> 다른 페이지에서 정리하기.
JDK (Java Development Kit) 자바 개발도구
JDK는 JRE 와 개발을 위해 필요한 도구 (javac, java등...)을 포함한 키드를 가리킨다.
JDK는 JRE, JVM을 포함하고 있기 때문에 JDK를 설치하면 JRE와 JDK도 함께 설치된다. 여기에 더해서 자바 컴파일러(javac, java compiler)가 포함되어 있다.
JDK의 종류
1. Java SE (Java Platform, Standard Edition)
자바의 표준안. 소프트웨어 설계도 혹은 명세서(spec, specification)라고 할 수 있다. 자바 언어의 핵심 기능을 제공한다.
일반적으로 JDK 버전이 Java SE를 포함하며, Java EE나 Java ME를 다운로드 하더라도 표준안이니만큼 Java SE를 함께 포함하고 있다.
2. Java EE (Java Platform, Enterprise Edition)
기업에서 사용 가능한 현실 업무를 위한 기능이 집약되어 있다. Java SE를 기반으로 하며, 주로 서버 개발을 위해 필요하다.
3. Java ME (Java Playform, Micro Edition)
작은 특정한 기기를 위한 것으로, 피쳐폰, PDA폰, 셉톱박스 등과 같은 임베디드 기기에서 구동하기 위한 환경 제공 API이다.
Java SE를 기본으로 하나, 가볍게 개량되었으며, 모바일 장치 등을 위한 특수 클래스 라이브러리가 추가되어있다.
참고 사이트
0 _4. 자바의 종류(Java SE, Jakarta EE, Java ME, Java FX)
이번 글 또한 꽤 알록달록한 편이에요 현재 가독성 패치 중입니다 +자바의 종류 자, 이번 시간에는 '자바의 종류'에 대하여 알아볼 거예요. 자바 언어의 플랫폼은 자바 가상 머신인 JVM과 개발하
j4bez.tistory.com
https://m.blog.naver.com/duqrlwjddns1/221770110714
[Java] JDK? JRE? JVM?
자바를 공부하면서 헷갈리는 용어를 발견해 정리하고 넘어가고자 합니다. 설명에 앞서 Java의 철학은 다음...
blog.naver.com
https://velog.io/@shelly/JAVA-JDK%EB%9E%80
[JAVA] JDK란?
JDK에 관하여
velog.io
https://blog.naver.com/cjhol2107/221752149084
[JAVA] JVM(Java Virtual Machine) 자바 가상머신과 메모리 영역(Stack, Method, Heap)
왜 JVM을 알아야 하는가? 한정된 메모리를 효율적으로 사용하여 최고의 성능을 내기 위해서가 그 답이 ...
blog.naver.com
'Code > 그 외' 카테고리의 다른 글
[Git] Git 사용법 (0) 2021.11.22