티스토리 뷰
🚀 자바의 구성
우리가 자바를 다루면서 자바가 어떻게 운영되는지 확인할 필요가 있다.
자바의 최대 장점으로 JVM
이 설치되어 있는 어느 운영체제라도 JDK
를 사용할 수 있다 알고있다.
우리는 여기서 더 자세하게 알고 들어갈 필요가 있다.
🌠 JVM(Java Virtual Machine)
자바 바이트코드
를 실행할 수 있는 스택 기반의 가상 머신을 구현한 소프트웨어이다.
JVM의 역할은 JAVA Application을 클래스 로더
를 통해 읽어 들여 자바 API와 함께 실할하게된다.
때문에 JAVA와 OS에서 중계 역할을 하여 JAVA가 OS환경에 구애받지 않고 실행을 가능하게 해준다.
또한, 메모리 관리
, GC(Garbage collection)
을 수행한다.
🌠 JDK(Java Development kit)
흔히 우리가 자바를 개발하게 된다면 JDK
를 설치해줘야한다.
JDK는 쉽게 자바 언어로 개발을 지원하는 프로그램으로 이클립스
/ 인델리제이
/ STS
가 여기 포함된다.
또한 실행하게되면 자바 번역기가 .java
를 .class
파일로 컴파일하여 JRE
에 전달하게된다.
☄ 자바 번역기 - 자바 컴파일러
자바 컴파일러는 자바를 가지고 작성한 자바 소스 코드를 자바 가상 머신이 이해할 수 있는 자바 바이트 코드
로 변환하며
자바 컴파일러는 javac.exe
실행 파일 형태로 설치된다.
☄ 자바 바이트 코드
자바 가상 머신이 이해할 수 있는 언어로 변환한 자바 소스 코드
를 의미한다.
자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불리고 있다.
이러한 자바 바이트 코드의 확장자는 .class
이며
자바 바이트 코드는 JVM (자바 가상 머신)
이 설치되어 있으면, 어떤 운영체제에서라도 실행될 수 있다.
🌠 JRE (JAVA Runtime Environment)
컴퓨터의 운영체제 소프트웨어 상에서 실행되고 클래스 라이브러리 및 특정 Java 프로그램이
실행해야 하는 기타 리소스를 제공하는 소프트웨어 계층이다.
JDK 및 JRE는 서로 간에 상호작용하여 사실상 모든 운영체제에서
Java 기반 애플리케이션의 완벽한 실행을 가능하게 하는 지속 가능한 런타임 환경을 구축한다.
☄ JRE 구성요소
- 클래스로더
- Java 클래스로더는 Java 프로그램의 실행에 필요한 모든 클래스를 동적으로 로드한다.
- Java 클래스는 필요 시에만 메모리에 로드되므로*, JRE는 클래스로더를 사용하여 요청 시에 이 프로세스를 자동화한다.
- 바이트코드 검증기
- 바이트코드 검증기는 인터프리터에 전달되기 전에 Java 코드의 형식과 정확성을 보장합니다.
코드가 시스템 무결성 또는 액세스 권한을 위반하는 경우, 클래스는 손상된 것으로 간주되어 로드되지 않는다.
- 바이트코드 검증기는 인터프리터에 전달되기 전에 Java 코드의 형식과 정확성을 보장합니다.
- 인터프리터
- 바이트코드의 로드에 성공한 후, Java 인터프리터는 Java 프로그램이 기본 시스템에서 기본적으로 실행될 수 있도록
해주는 JVM의 인스턴스를 작성한다.
- 바이트코드의 로드에 성공한 후, Java 인터프리터는 Java 프로그램이 기본 시스템에서 기본적으로 실행될 수 있도록
🧾 Reference
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] 인터페이스와 추상 클래스의 개념과 정리 (0) | 2022.04.02 |
---|---|
[JAVA] 자바가 메모리를 사용하는 방식 (0) | 2022.03.27 |
[JAVA] 자바가 사용하는 함수형 프로그래밍 람다 (0) | 2022.03.25 |
[JAVA] 스레드의 특성 (0) | 2022.03.24 |
[JAVA]Vector vs ArrayList vs LinkedList (0) | 2022.02.26 |
- Total
- Today
- Yesterday
- 알고리즘
- kakao
- spring-cloud
- 매트랩
- interview
- 수학
- 스프링
- docker
- C언어
- nginx
- 백준
- ajax
- Matlab
- 면접
- Algorithm
- 자격증
- Solid
- CS
- 자바
- security
- Spring
- JPA
- OOP
- 프로그래머스
- 디자인패턴
- 그래프
- springboot
- java
- 릿코드
- 스프링부트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |