
자바 개발자들은 자바 코드를 작성합니다.
그리고 그 자바 코드를 컴퓨터가 알아듣고 의도에 맞게 동작합니다.
이 두 과정 사이에 자바 코드를 컴파일하고 실행하기 위해 실제로 동작하는 작업들과 관련해서 등장하는 플랫폼 독립성
이라는 중요한 개념을 살펴보고자 합니다.
플랫폼 독립성
모두들 아시다시피 컴퓨터는 0과 1만을 알아듣습니다.
우리는 그것을 기본 명령
이라고 부르는데, 이런 기본 명령
들을 운영체제가 알아듣고 그에 맞게 동작하게 됩니다.
자바나 파이썬 같은 언어들도 결국은 0과 1로 변환되어 운영체제를 위한 기본 명령의 형태로 바뀌어야 합니다.
하지면 여기서 운영체제에 따른 기본 명령
이 다르기 때문에, Windows 환경에서의 명령과 Unix 환경에서의 명령, Linux 환경에서의 명령까지 전부 다릅니다.
이렇게 다양한 운영체제에서 전부 작동하는 성질을 플랫폼 독립성
이라고 합니다.
자바의 플랫폼 독립성
저희가 짠 자바 코드는 한 가지 코드만으로도 모든 운영체제에서 잘 동작하길 원합니다.
자바는 이러한 환경을 제공하기위해 어떻게 문제를 해결하였을까요?
자바는 플랫폼 독립성
의 확보를 위해 기본명령과 자바 언어 사이에 중간 표현을 사용합니다.
자바는 모든 운영체제에서 사용되는 표현인 바이트 코드(Byte Code)
라는 표현을 만들어 사용합니다.
바이트 코드는 운영체제에 관계 없이 같은 형태로 컴파일 됩니다.
하지만 바이트 코드를 운영체제가 바로 알아듣지는 못합니다. 아까 언급하였듯 기본 명령만을 알아듣습니다.
그럼 어떻게 이 바이트 코드가 기본 명령의 형태로 바뀌게 되는 걸까요?
이 때, JVM
이 나타납니다.
JVM
JVM(Java Virtual Machine)
은 바이트 코드를 운영체제의 특정한 기본 명령의 형태로 바꾸어 실행시키는 소프트웨어입니다.
각 운영체제 마다 기본 명령의 형태가 다르니, JVM도 각 운영체제 마다 다릅니다.
저희가 자바 코드를 처음 짜고 처음 실행할 때, 가장 먼저 컴파일
이라는 동작이 실행됩니다.
그러면 저희가 짠 자바 코드가 바이트 코드의 형태로 변환되고 .class
확장자로 변환되어 저장됩니다.
그 이후 해당 클래스 파일을 JVM이 불러와 실행하여 각 운영체제에 맞는 기본 명령의 형태로 바꾸어 주게 됩니다.
JVM vs JRE vs JDK
JVM에 대해선 위에서 살펴보았죠, 그러면 JRE는 무엇이고 JDK는 무엇일까요?
JRE(Java Runtime Environment)
는 자바 실행 환경을 말합니다.
자바 실행 환경은 JVM + 자바 관련 라이브러리를 모두 합친 것을 말합니다.
예를 들어, 저희가 원하는 데이터를 출력하는 System.out.println() 메서드와 같은 여러 내장 메서드가 정의된 자바 라이브러리를 JRE가 가지고 있습니다.
JDK(Java Development Kit)
는 자바 개발 키트를 말합니다.
자바 개발 키트는 JRE + 컴파일러 + 디버거를 합친 소프트웨어입니다.
자바 프로그램을 개발하고 실행할 때 사용되는 모든 툴을 포함하는 개념인거죠!
그림으로 알아보면 다음과 같습니다.
이러한 자바의 특성과 장점을 잘 이해하고 사용하는 개발자가 되기 위해 노력해야겠습니다!
'Language > Java ☕️' 카테고리의 다른 글
자바의 static (0) | 2024.05.22 |
---|---|
자바의 메모리 구조 (0) | 2024.05.22 |
자바의 가비지 컬렉션 (0) | 2024.02.02 |
String vs StringBuffer vs StringBuilder (0) | 2024.02.02 |
Double과 Float를 사용하면 안되는 이유 (0) | 2024.02.01 |
안녕하세요, 저는 주니어 개발자 박석희 입니다. 언제든 하단 연락처로 연락주세요 😆