일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- flex-basis
- Grid
- decoratetext
- Spring
- 톰캣실행
- 넥사크로loadingimage
- 싱글톤
- annotaion
- 코딩
- singleton container
- cron표현식
- DB #데이터베이스
- frontend
- WITH절
- 로딩이미지변경
- BEAN
- gif초기화
- react
- 마진상쇄
- 싱글톤컨테이너
- aws
- 넥사크로
- 스프링 빈
- 빈
- HTML
- CSS
- flex-grow
- singleton
- setrealrowsize
- loadingimage
- Today
- Total
All Day Tired
JDK, JRE, JVM 본문
요즘 기계적으로 개발만 하는 기분이라 초심으로 돌아가는 의미에서 강의들으면서 정리한 내용을 적어봄....
컴파일
사람이 이해하는 코드를(ex. System.out.println("hello");) 기계가 이해할 수 있는 기계어(010101....)로 번역하는 과정
컴파일러
컴파일을 하는 프로그램
바이트 코드(바이너리 코드)
0과 1로 이루어진 코드, 컴퓨터가 이해하는 코드, 기계어
0과 1의 조합(=바이트 코드)은 운영체제마다 달라서 같은 0과 1의 코드라도 윈도우에서는 hello가 출력될 수 있으나 맥, 리눅스에서는 hello가 출력되지 않을 수 있음.
C언어의 경우에서는 각각의 운영체제마다 다른 컴파일러가 필요함. 그래서 이 컴파일러가 각각의 운영체제마다 다른 0과 1의 조합인 코드를 만들어냄.
하지만 Java는 Java 컴파일러가 하나가 있고 이 Java 컴파일러 하나에서 생성된 0과 1의 바이트 코드가 하나 있음. 이 바이트 코드가 각각의 운영체제 위에 JVM에 가게 됨. JVM이란 0과 1의 조합인 바이트 코드와 운영체제를 호환시켜주는 역할을 함. 이건 Java를 설치하면 같이 설치가 되어서 각 운영체제에 Java를 설치했다면 있을 수 밖에 없음. 따라서 JVM을 거치기때문에 Java는 컴파일러가 하나만 있으면 됨.
-> 컴파일러가 기계어로 번역을 해주고 JVM이 운영체제에 맞게 한번 더 번역함
JDK > JRE > JVM
JVM
자바가상머신, 운영체제별로 존재, 바이트 코드를 읽고 검증하고 실행, 바이트 코드를 운영
JRE
자바실행환경, JRE = jvm + Java 프로그램 실행에 필요한 라이브러리 파일(출력을 할 때 쓰이는 System.out.println 이런게 들어있는 라이브러리 파일) 등, JVM실행환경 구현(JVM이 실행되기 위한 라이브러리들을 가지고 있다)
JDK
자바개발도구, JDK = JRE + 개발을 위한 도구, 컴파일러/디버그 도구 등이 포함
JDK를 설치하면 JRE와 JVM이 함께 설치됨, Java버전 = JDK 버전
'Back > Java' 카테고리의 다른 글
람다식, 익명클래스 (0) | 2024.12.17 |
---|---|
Annotation (0) | 2024.11.26 |
Optional (1) | 2024.09.19 |