JRE에 대해 본격적으로 이야기하기 전에, 이전에 작성한 JVM에 대한 글을 먼저 보고 오는 것을 추천한다. JRE란? JRE란 Java Runtime Environment, 즉, 자바 런타임 환경이라는 뜻을 갖고 있다. 여기서 '런타임 환경'이란, 어떠한 소프트웨어를 실행하기 위한 또다른 소프트웨어다. 어떠한 소프트웨어, 그러니까 프로그램을 실행하기 위해 해당 프로그램을 구성하고 있는 클래스 파일을 로드하고, 메모리나 시스템 리소스 등에 대한 액세스를 확보한다. Java를 실행하기 위한 자바 런타임 환경(JRE)은 크게 아래 세 가지로 구성되어 있다. 자바 클래스 라이브러리(Java class libraries), 자바 클래스 로더(Java class loader), 자바 가상 머신(Java Virtu..
JVM
지난 1편, 2편에 이어 마지막 3편이다. JVM이 어떻게 구성되어 있는지에 대해 알아본다. 이번 글도 역시 여기와 여기를 참고하며 작성하였다. JVM의 구성요소 자바 애플리케이션을 실행하기 위해 JVM은 자바 클래스 로더(Class Loader)와 자바 실행 엔진(Execution Engine)에 의존한다. 자세히 알아보기 전에 이전 글에서 보았던 그림을 다시 가져와 보자. JVM 자바 클래스 로더 (Class Loader) 자바에서는 모든 것이 클래스이며, 모든 자바 애플리케이션은 그러한 클래스로부터 만들어진다. 즉, 하나의 애플리케이션이 하나 또는 수천 개의 클래스로 구성될 수 있다는 말이다. 그러한 자바 애플리케이션을 실행하기 위해서는 컴파일된 .class 파일을 JVM 내로 로드(Load)하고 ..
JVM에 대해 1편에 이어서 2편을 작성해본다. 1편에서는 JVM의 개념이나 정의, 용도 등을 알아보았다면, 이번 2편에서는 JVM의 세 가지 측면에 대해 알아본다. 이번 글도 여기와 여기를 참고하며 작성하였다. JVM의 3가지 측면 JVM에는 표준(Specification), 구현(Implementation), 인스턴스(Instance)의 3가지 측면이 있다고 할 수 있다. 표준(Specification) 표준, 즉, 다른 말로는 소프트웨어 사양이다. 여기서 "소프트웨어 사양(스펙)"이란, 어떤 소프트웨어 시스템이 어떻게 동작해야 하는 지를 정의한 인간이 읽을 수 있는 설계 문서이다. 이러한 문서의 목적은 엔지니어들이 이 문서를 보고 코딩할 수 있도록 하는 것이기 때문에 정확한 정의와 요구 사항 등을 ..
JDK, JRE를 공부하다가 JVM이라는 용어가 많이 나와 공부한 결과를 글로 남긴다. 여기와 여기의 글이 많은 도움이 됐다. 글이 길어져 2, 3편으로 나누었다. JVM이란? Java Virtual Machine의 약자로 말 그대로 "자바 가상 머신"이며, 다른 프로그램을 실행시키는 것이 목적인 프로그램이다. (가상 머신이란 어떠한 프로그램을 실행하기 위한 물리적인 환경, 즉, 하드웨어를 소프트웨어로 구현한 것이다) JVM의 주요 기능은 시스템 메모리를 관리하면서 자바 기반의 애플리케이션을 위해 이식 가능한 실행 환경을 제공한다. 간단히 말하면 어떠한 환경에서든 Java 코드의 변경 없이 실행되게 해준다. 중요하게 볼 부분은 "메모리를 관리(Garbage Collection, GC)"한다는 것과 "이식..