우리가 자바를 다루면서 자바가 어떻게 운영되는지 확인할 필요가 있다.
자바의 최대 장점으로 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는 클래스로더를 사용하여 요청 시에 이 프로세스를 자동화한다.