java는 운영체제에 독립적이라면서, 왜 설치할 때에는 운영체제에 맞춰서 설치해야 할까?

Javaghetti·2021년 5월 30일
1

Java

목록 보기
1/2
post-custom-banner

Question.

java를 설치할 때에는, 아래와 같이 운영체제에 맞추어 설치해야 한다.
운영체제에 독립적이라면서, 운영체제를 구분하여 설치해야한다. 왜 그럴까?

Answer.

  • 위와 같이 java 어플리케이션은 운영체제나 하드웨어가 아닌 JVM과 통신한다. 내가 작성한 java코드(A.java)를 JVM이 읽을 수 있게 하려면, java compiler를 통해 JVM이 읽을 수 있는 형식(A.class)으로 변환해야 한다. (바이트코드 라고도 한다.)

    javac A.java 를 수행하면, A.class 파일이 생성된다.

  • A.class 형식의 파일은 JVM이 읽을 수 있는 형식이다. 운영체제가 읽을 수 있는 형식이 아니다. 이를 운영체제가 이해할 수 있게 하려면 한번 더 변환이 필요하다.

  • 자바는 동적 로딩(Dynamic Loading)을 지원하기 때문에, JVM은 해당 A.class 파일이 필요한 시점에 로딩하여 해당 운영체제가 이해할 수 있는 언어로 다시 변환한다. 이를 JIT (Just in Time) compiler가 수행한다.

  • JIT Compiler는 Windows, Linux, OSX 등 각 운영체제가 이해할 수 있는 언어로 변환하여 준다. 'a 변수에 1을 더해' 라는 명령어를 Windows, Linux, OSX 에서 수행하기 위해서는 각 운영체제에 맞추어 변환되어야 한다.

  • 따라서, 우리는 JIT Compiler가 내가 사용하고 있는 운영체제가 이해할 수 있는 언어로 변환을 잘 할수 있도록 운영체제에 맞는 JIT Compiler를 설치해야 하는 것이다.

Summary

java 어플리케이션은 운영체제에 독립적이지만, JVM은 운영체제에 종속적이다. JVM에 포함된 JIT Compiler가 바이트코드를 운영체제별로 다르게 변환해야하기 때문이다. 따라서, 우리는 운영체제별로 java를 다르게 설치해야 하는 것이다.

참고자료

profile
If you always do what you've always done, you will get what you've always got.
post-custom-banner

0개의 댓글