A. JVM이란 무엇인가?

A-1. Java의 탄생 배경

1990년대는 인터넷의 태동기였고 인터넷 네트워크 환경을 고려한 기술들이 많이 나오기 시작했습니다. 1996년에 출시된 Java 역시, 네트워크 환경에서 동작하는 기기들을 고려한 어플리케이션 개발 환경을 만들기 위해 디자인 되었습니다.

오라클 공식문서에 따르면, "Java는 네트워크를 통해 소프트웨어의 컴포넌트들을 안전하게 전송하고 실행할 수 있도록 돕는다" 라는 이야기가 나오는데요. 여기서 "네트워크 환경에서 동작하는 기기를 고려하는 개발 환경" 라는 의미를 생각해볼 수 있습니다.

네트워크 환경에서 동작하는 개발 환경.

1️⃣C/C++

예를들어서, 기존 C/C++은 소스 코드를 각 기계에 직접 컴파일을 해서 실행시켜야 했습니다.

  1. 소스 코드를 💾저장장치에 담기 ⇒ 기계에서 컴파일하여 실행.
  2. 각 기계 버전에 맞게 실행 파일을 준비 ⇒ 💾 저장 장치에 담기 ⇒ 같은 종류의 기계에서 실행.

2️⃣Java

반면에, Java는 네트워크를 통해서 호스트에게 소스코드를 전달하는 방식을 고려했습니다. Java는 실행할 수 있는 소스를 네트워크를 통해 전달하면 어떤 기계에서든지 실행이 가능했습니다.

  1. Java 소스코드를 바로 인터넷을 통해 다운받는다. ⇒ 바로 해석하여 ⇒ 실행한다.

네트워크를 통해서 소스코드를 전달한다면 가장 중요한 부분은 아마 "플랫폼 독립적" 혹은 "각 기계에서 직접 소스코드를 실행시킬 수 있는 기능" 인 부분이 아닐까 싶습니다. 만약 당시 네트워크를 통해 소스코드를 호스트에게 전달한 후에, 기계에 맞게 컴파일을 다시하고 실행시켜야 한다면, 과연 네트워크로 소스코드를 보내는것이 크게 유의미한 일일까 (특히 90년대 당시에는..) 라는 생각이 듭니다.

✅ Java의 요구사항.

위에서 언급Java라는 환경을 개발하기 위해서는 아래와 같은 요구사항들이 있을것이라 생각해 볼 수 있겠습니다.