우리가 자바를 다루면서 자바가 어떻게 운영되는지 확인할 필요가 있다.
자바의 최대 장점으로 JVM이 설치되어 있는 어느 운영체제라도 JDK를 사용할 수 있다.
우리는 여기서 더 자세하게 알고 들어갈 필요가 있다.

자바 바이트코드를 실행할 수 있는 스택 기반의 가상 머신을 구현한 소프트웨어이다.
JVM의 역할은 JAVA Application을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하며 여기서 바이트코드를 기계어로 변환하여
각 OS에 제공해준다.
때문에 JAVA와 OS에서 중계 역할을 하여 JAVA가 OS환경에 구애받지 않고 실행을 가능하게 해준다.
또한, 메모리 관리, GC(Garbage collection)을 수행한다.
자바 가상 머신이 이해할 수 있는 언어로 변환한 자바 소스 코드를 의미한다.
자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트라서 자바 바이트 코드라고 불리고 있다.
이러한 자바 바이트 코드의 확장자는 .class이며
자바 바이트 코드는 JVM (자바 가상 머신)이 설치되어 있으면, 어떤 운영체제에서라도 실행될 수 있다.
JDK에 포함되어 있는 자바 컴파일러는 자바 소스 코드를 JVM이 이해할 수 있는 자바 바이트 코드로 변환한다.
그리고 JVM은 바이트 코드를 기계어로 변환해 주는 것이다.
자바 컴파일러는 javac.exe실행 파일 형태로 설치된다.
흔히 우리가 자바를 개발하게 된다면 JDK를 설치해줘야한다.
JDK는 자바 언어로 개발을 지원하는 프로그램으로 이클립스 / 인델리제이 / STS가 여기 포함된다.
또한 실행하게되면 자바 번역기가 .java를 .class 파일로 컴파일하여 JRE에 전달하게된다.
컴퓨터의 운영체제 소프트웨어 상에서 실행되고 클래스 라이브러리 및 특정 Java 프로그램이 실행해야 하는 기타 리소스를 제공하는 소프트웨어 계층이다.
JDK 및 JRE는 서로 간에 상호작용하여 사실상 모든 운영체제에서 Java 기반 애플리케이션의 완벽한 실행을 가능하게 하는 지속 가능한 런타임 환경을 구축한다.
![]()
Java 클래스로더는 Java 프로그램의 실행에 필요한 모든 클래스를 동적으로 로드한다.
Java 클래스는 필요 시에만 메모리에 로드되므로, JRE는 클래스로더를 사용하여 요청 시에 이 프로세스를 자동화한다.