카테고리 없음

jar에 대한 고찰

흰색남자 2022. 9. 26. 22:23

우리는 스프링을 배포하기 위해 jar파일을 만들어 도커로 해당 환경을 jdk or jre의 환경위에 올려서 배포한다.

그렇다면 이 jar 파일은 무엇일까? jar의 약자는 java archive이다. 자바의 저장소?라는 의미 정도로 생각할 수 있다.

 

스프링 프로젝트를 빌드(컴파일)하게 되면 jar파일이 생기는 것을 볼 수  있다.

이 파일을 까보면 

클래스 파일들의 집합인 것을 볼 수  있다.

빌드를 하게 되면 컴파일러에 의해 .java 파일들이 바이트 클래스 형태로 바뀐다.

 

이제 jre와 jdk 차이점을 알아야한다.

jdk (java development kit )= jre + 컴파일러

jre( java runtime environment ) = jvm + class library ( 자바 코드를 작성하면서 자주사용 여러 유용한 기능들을 모아놓은 클래스 집합)

 

여기서 중요한 것은 jar파일을 실행하는데 필요한것은 jre만 필요한 것이다.

자바의 실행 단계를 보면

 

1. java 파일을 컴파일 한 후 클래스 파일로 만든다.

2. 클래스 파일( jar ) 을 jre의 클래스 로더에 의해 로딩되어 실행된다.

이렇게 볼 수 있다.

우리가 스프링 프로젝트를 빌드하게 되면 jdk의 컴파일러에 의해 jar파일로 로딩되어 더이상 컴파일러는 필요없게 된다.

 

https://inpa.tistory.com/entry/JAVA-%E2%98%95-JVM-%EB%82%B4%EB%B6%80-%EA%B5%AC%EC%A1%B0-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EC%98%81%EC%97%AD-%EC%8B%AC%ED%99%94%ED%8E%B8#%EC%8B%A4%ED%96%89_%EC%97%94%EC%A7%84_(Execution_Engine) 

 

[JAVA] ☕ JVM 내부 구조 & 메모리 영역 자세히 정리

저번 포스팅에서는 JRE / JDK / JVM에 대해서 간략하게 알아보는 시간을 가졌다면, 이번 포스팅에서는 JVM의 내부 구조에 대해 좀 더 자세하게 알아보도록 할 예정이다. 지난 시간에 자바 애플리케이

inpa.tistory.com

https://swk3169.tistory.com/182

 

JVM(Java Virtual Machine) & 메모리 구조 (Java Application이 실행될 때 JVM에서 일어나는 과정)

Goal JVM의 특징에 대해 이해할 수 있다. JVM의 구조에 대해 이해할 수 있다. JVM의 메모리 구조를 알 수 있다. Introduction JVM 은 Java Virtual Machine 으로 Java를 OS에 독립적으로 실행될 수 있게 하는 주체..

swk3169.tistory.com

 

 

클래스 로더(Class Loader)

 - JVM 내로 클래스 파일(*.class)을 동적으로 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈

 - 로드된 바이트 코드(.class)들을 엮어서 JVM의 메모리 영역인 Runtime Data Areas에 배치

 - 클래스를 메모리에 올리는 로딩 기능은 한번에 메모리에 올리지 않고, 어플리케이션에서 필요한 경우 동적으로 메모리에 적재

  • 실행 엔진(Execution Engine)
    • 인터프리터(Interpreter)
    • JIT 컴파일러(Just-in-Time)
    • 가비지 콜렉터(Garbage collector)
  • 런타임 데이터 영역 (Runtime Data Area)
    • 메소드 영역
    • 힙 영역
    • PC Register
    • 스택 영역
    • 네이티브 메소드

  • JNI - 네이티브 메소드 인터페이스 (Native Medthod Interface)
  • 네이티브 메소드 라이브러리 (Native Method Library)