📌JVM, JRE, JDK의 이해와 관계
JVM (Java Virtual Machine)
jvm이란 자바 가상 머신으로 자바 프로그램 실행환경을 만들어주는 소프트웨어이다.
프로그램을 실행하기 위해서는 개발자가 작성한 코드를 컴파일을 통해 컴퓨터가 이해할 수 있는 기계어로 번역하는 과정을 거쳐야 한다.
만약 C언어로 개발한 프로그램을 윈도우에서 사용하려면 .exe 로 컴파일하여 실행시킬 수 있다.
하지만 해당 프로그램을 리눅스나 맥 등 다른 운영체제에서 사용하려면 다시 실행할 운영체제에 맞는 파일로 컴파일 해줘야 한다.
Example >
하지만 Java는 코드를 자바 컴파일러를 통해 Java Bytecode로 .class 확장자를 가지는 파일로 변환하여 각 운영체제에 설치되어 있는 JVM에 전달하기만 하면 JVM이 Java Bytecode를 해당 운영체제에 맞는 실행파일로 변환해준다.
즉, 자바는 운영체제(플랫폼)에 영향을 받지 않고 어디서나 동일하게 실행할 수 있다.
Example >
JRE (Java Runtime Environment)
jre란 자바 런타임 환경으로 컴퓨터의 운영체제 소프트웨어 상에서 실행되고 클래스 라이브러리 및 특정 Java프로그램이 실행해야 하는 기타 리소스를 제공하는 소프트웨어 계층이다.
Jre 런타입 아키텍처
클래스 로더 (class loader)
- Java 클래스 로더는 Java 프로그램의 실행에 필요한 모든 클래스를 동적으로 로드한다.
- Java 클래스는 필요 시에만 메모리에 로드되므로, jre는 클래스 로더를 요청 시에 이 프로세스를 자동화한다.
바이트코드 검증기 (Bytecode Verifier)
- 바이트코드 검증기는 인터프리터에 전달되기 전에 Java 코드의 형식과 정확성을 보장한다.
- 코드가 시스템 무결성 또는 액세스 권한을 위반하는 경우, 클래스는 손상된 것으로 간주되어 로드되지 않는다.
인터프리터 (interpreter)
- 바이트 코드의 로드에 성공한 후, Java 인터프리터는 Java 프로그램이 기본시스템에서 기본적으로 실행될 수 있도록 해주는 jvm의 인스턴스를 작성한다.
Jre 구성요소
배치 솔루션 (batch solution)
- 애플리케이션의 활성화를 간소화하고 향후 Java 업데이트를 위한 고급 지원을 제공하는 Java 플러그인 및 Java Web Start등과 같은 배치 기술이 jre 설치의 일부로 포함되어 있다.
개발 툴킷 (development toolkit)
- jre에는 개발자의 사용자 인터페이스 개선을 지원할 수 있도록 설계된 툴킷도 포함되어 있다.
> Java 2D, AWT, Swing
통합 라이브러리
Java IDL (Corba)
- 공통 오브젝트 요청 아키텍처를 사용하여 Java 프로그래밍 언어로 작성된 분산 오브젝트를 지원한다.
JDBC API (Java Database Connectivity)
- 원격 관계 데이터베이스, 플랫 파일 및 스프레드시트에 대한 액세스를 통해 애플리케이션을 작성할 수 있는 개발자용 툴을 제공한다.
JNDI (Java Naming and Directory Interface)
클라이언트가 이름 지정 규칙을 사용하여 데이터베이스에서 정보를 패치할 수 있는 포터블 애플리케이션을 작성할 수 있게 해주는 프로그래밍 인터페이스 및 디렉토리 서비스이다.
언어 및 유틸리티 라이브러리 (java.lang / java.util)
컬렉션 프레임워크 (collection framework)
- 애플리케이션 데이터의 저장과 처리를 개선하도록 설계된 인터페이스의 컬렉션으로 구성된 통합 아키텍처이다.
동시성 유틸리티 (concurrency utility)
- 고성능 스레딩 유틸리티의 강력한 프레임워크 패키지이다.
환경 설정 API (Preferences)
- 동일 시스템에서 다수의 사용자가 자체 애플리케이션 환경 설정 그룹을 정의 할 수 있도록 해주는 경량의 크로스 플랫폼 지속적 api이다.
로깅 (Logging)
- 추가 분석을 위해 로그 보고서를 생성한다.
JAR (Java Archive)
- 다수의 파일을 jar형식으로 번들링할 수 있도록 하여 다운로드 속도를 개선하고, 파일 크기를 줄일 수 있도록 해주는 독립형 파일 형식이다.
JDK (Java Development Kit)
jdk란 Java 애플리케이션 개발 및 실행을 위한 툴 세트이다.
개발자는 Java EE, Java SE, Java ME 등 Java 버전 및 패키지나 에디션에 따라 jdk를 선택한다.
구성 요소
apt
- 어노테이션 툴
appletviewer
- 웹브라우저 없이 자바 app를 실행하고 디버깅하기 위한 툴
javac
- 자바 컴파일러
java
- javac가 만든 클래스 파일을 해석 및 실행
jar
- 서로 관련있는 클래스 라이브러리들과 리소스를 하나의 파일로 묶어주는 툴
jdb
- 자바 디버깅 툴
jre
- 자바 런타임 환경
jvm
- 자바 가상머신
즉 JVM < JRE < JDK 는 포함되는 관계이다.
reference.
https://www.youtube.com/watch?v=OxvtGYvVkRU
https://www.ibm.com/kr-ko/topics/jre
'🐎Language > Java' 카테고리의 다른 글
[Java] Quartz 스케줄러 (0) | 2023.09.24 |
---|---|
[Java] Gson이란? (0) | 2023.09.24 |
[Java] Optional 클래스 (0) | 2023.09.11 |
[Java] Builder Pattern과 Method Chaining (0) | 2023.09.11 |
[Java] 디자인 패턴의 개념과 종류 (0) | 2023.08.20 |