월루를 꿈꾸는 대학생

JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가 본문

Programing/Java

JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가

하즈시 2022. 9. 13. 00:15
728x90
    • JVM이란 무엇인가
      - Java Virtual Machine : 자바 실행을 위한 가상 컴퓨터 
      - 자바의 특징 중 하나 os 에 종속적이지 않다 -> os에 종속적이지 않기 위해서는 os말고 java를 실행시킬 다른 무언가가 필요 = JVM 
      - 컨테이너 비슷하게 쓰는 듯 
      - 코드가 jvm 한 번 거친 후에 os 전달 되기에 조금 느림 다만 os에 직접 전달이 아니기에 종속적이지가 않음  -> write once , run anywhere 


https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rbdi3222&logNo=220594436564

  • 컴파일 하는 방법
    - .java 파일을 컴파일러가 .class 파일로 변경 
    - .class 파일은 컴퓨터가 읽는 파일이 아니라 JVM이 읽을 수 있는 파일의 형태 
    - javac test.java 이런 식으로 컴파일 하면 class 파일이 나옴 

  • 실행하는 방법
    - javac 명령어로 컴파일한 class 파일이 있는 곳으로 이동 후 java test 명령어 쓰면 실행 완료 

  • 바이트코드란 무엇인가
    - 위에서 자바 컴파일러가 변환한 .class 파일을 칭함 
    - 코드 명령어 크기가 1byte라서 바이트 코드라고 함 
    - 해당 바이트 코드가 있기 때문에 JVM에서 이를 읽고 실행할 수 있고 이를 통해 운영체제에 종속적이지 않을 수가 있음 

  • JIT 컴파일러란 무엇이며 어떻게 동작하는지
    - Just In Time
    - 바이트 코드를 CPU에 직접 보내는 명령어로 바꾸는 프로그램
    - 프로그램이 시작되고 코드를 컴파일 후 JIT 컴파일러 실행 
    - 초기 JVM이 인터프리트 방식만 사용해 한 줄 한 줄 읽어서 실행속도가 느렸는데 JIT 도입해서 속도 보완 
    - JIT : 실행 시점에 인터프리터 방식으로 기계어 코드 생성하면 그걸 따로 캐싱해 둔 후에 동일한 부분 실행하면 캐싱된 거 다시 쓰는 방법 


https://beststar-1.tistory.com/3#JIT_%EC%BB%B4%ED%8C%8C%EC%9D%BC%EB%9F%AC

 

 

    • JVM 구성 요소



https://jaehoney.tistory.com/173

1. 자바 인터프리터 

- 자바 컴파일러로 바뀐 바이트 코드 ( .class ) 파일을 한 줄씩 읽고 기계어로 해석 

 

2. 클래스 로더 

- 자바의 경우 동적으로 클래스를 읽음 저거 호출했다가 저거 호출했다가 그래서 클래스 로더는 JVM안에서 동작을 해 모든 자바 클래스를 로드 하는 것이 아니라 호출되는 순간 해당 class 파일 찾아서 메모리에 로딩해주는 역할을 함 

 

3. JIT 컴파일러

- 위에 설명과 동일 

- 인터프리터는 너무 느리다 . 보완하기 위해서 인터프리터가 번역한 기계어 코드 중 자주 쓰는 메서드를 컴파일하고 기계어 부분을 캐싱해서 나중에 또 호출 될 때 쓰는 방식 

- 캐쉬 메모리 같은 녀석 

 

4. 가비지 컬렉터 

- 자꾸 인스턴스 만들어서 메모리 차지하게 하면 리소스만 잡아먹음 

- 메모리를 자동으로 관리해서 안 쓰는 부분 정리하는 쓰레기 청소부 

 

 

  • JDK와 JRE의 차이

https://catch-me-java.tistory.com/11

- JDK 안에 JRE가 있음 

 

1) JDK
- Java Development Kit 

- 자바 개발용 도구 모음

- 자바로 만들어진 프로그램 실행시 필요 

 

2) JRE

- Java Runtime Environment 

- 자바 실행 시 필요한 라이브러리 있음 

- 자바로 개발은 안 되지만 실행은 됨! 

- JRE만 있어도 실행은 가능 ! 다만 개발은 불가 

 

 

참고 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=rbdi3222&logNo=220594436564 

 

자바의 기초 ] JVM이란?

JVM이란 "JAVA Virtual Machine"을 줄인것으로 자바를 실행하기 위한 가상 기기라고 할 수 있습니...

blog.naver.com

https://gyoogle.dev/blog/computer-language/Java/%EC%BB%B4%ED%8C%8C%EC%9D%BC%20%EA%B3%BC%EC%A0%95.html

 

[Java] 컴파일 과정 | 👨🏻‍💻 Tech Interview

[Java] 컴파일 과정 들어가기전 자바는 OS에 독립적인 특징을 가지고 있다. 그게 가능한 이유는 JVM(Java Vitual Machine) 덕분이다. 그렇다면 JVM(Java Vitual Machine)의 어떠한 기능 때문에, OS에 독립적으로

gyoogle.dev

 

728x90

'Programing > Java' 카테고리의 다른 글

[Java] 동작 파라미터화  (0) 2023.08.05
[Java] 자바 무슨 일이 일어나고 있는가?  (0) 2023.08.05
CH10 날짜와 시간 & 형식화  (0) 2021.05.16
ch9 java api  (0) 2021.05.09
ch 8 알고리즘  (0) 2021.04.18