안녕하세요? JVM , JRE, JDK의 차이도 설명못하는 자바 개발자가 왔습니다.
스프링부트를 이용해서 프로젝트를 진행하면서 이런것도 모른다고 아빠한테(뻥임) 혼이 났습니다.
며칠간 눈물로 밤을 지새우고 (뻥임) 다시 정신차리고 공부하도록 하겠습니다! 아자자
JAVA
- 컴파일 언어(번역되는 언어)
- 개발자가 짠 코드를 미리 번역했다가, 프로그램을 실행할때 번역본을 컴퓨터가 읽는다.
JVM (Java Virtual Machine)
각기 다른 OS 마다 실행되는 결과가 다른 문제가 발생
실행할 컴퓨터에 JVM을 설치함으로써, JVM은 해당 컴퓨터 언어의 언어, Java Bytecode를 읽을 수 있다.
(Write Once Run Anywhere) 어느 컴퓨터에서 바이트 코드를 돌리려면 JVM이 있다면 가능하다.
어떤 언어로 컴파일할지, JVM이 알아서 해준다.
JRE (Java Runtime Environment)
Compile <-> Runtime
- 컴파일 : 코드를 작성하고 실행하거나 배포하기 전에, '미리'해두는 번역 작업
- Run타임 : 자바로 짠 소프트웨어가 컴파일 및 빌드까지 다 된 다음, 이를 사용할 곳에 주어져서 실행이 될때 그 환경요소들에 필요한 것들
의문 : 왜 JVM만 있으면 됐지! 바이트 코드를 대신 읽어주는 애 말고 뭐가 필요해?
> rt.jar를 살펴보면 안다. List, HashMap등 직접 작성하지 않아도 그냥 이미 작성되어있는 .class를 포함시키기 위해서는 라이브러리까지가 필요하다!
결론 : JRE = JVM + 라이브러리 + 자바 바이트 코드 실행에 필요한 다른 요소들
JDK (Java Development Kit)
레시피를 개발하는 회사, 즉 개발자가 자바로 프로그래밍하는 전 과정을 도와주는 자바 코드 제작 키트.
컴바일러 : 개발자가 작성한 레시피를 컴퓨터가 읽을 수 있는 자바 바이트 코드로 번역해주는 번역가이다.
디버거 : 코드 하나하나를 뜯어보고 문제가 없는지 살펴본다.
Jar 도구 : 컴파일러가 번역한 결과물인 Jar를 실행용 책자로 압축해주는 JAR 도구
프로파일러 : 성능 등을 모니터링
Java 11버전 이전에는 JRE를 따로 설치하곤 했는데, Java 11버전 이후부터 사용자는 JDK만 설치하도록 됨~
'Language > Java' 카테고리의 다른 글
[Java] static, final, static final의 차이 (0) | 2023.04.24 |
---|---|
[Java] compareTo 메소드 정리 (0) | 2023.02.03 |
[Java] 배열을 List로 변환하기, List를 배열로 변환하기, convert int array to arrayList, convert list to int array (0) | 2023.02.03 |
[Java] Iterator 정리 / Map , ArrayList, Set에서의 iterate 사용법 (0) | 2023.02.02 |
[Java] Hashmap 정렬방법 (0) | 2023.02.01 |