원래는 Coroutine과 Thread에 대해 알아보고 어떤 차이가 있는지, 어떻게 사용하는지에 대해 다루려고 했는데 개념에 대해 이해하려고 알아보다 보니 거슬러 올라가다가 'Java가 실행되는 방식'까지 올라오게 되었다. 좋은 기회이니 Coroutine과 Thread에 대해 다루기에 앞서 조사한 내용들을 정리하려 한다.
JVM은 뭐지?
JVM은 'Java Virtual Machine'의 약자로 '자바 가상 머신'(왜 머신만 영어지) 이라는 뜻이다.
자바는 운영체제에 종속적이지 않다고 한다. 운영체제에 종속되지 않고 실행되려면 자바를 실행시킬 무언가가 필요한데 이것이 JVM이라고 한다.
JVM를 이루고 있는 요소 중에 '런타임 데이터 영역 (Runtime Data Area)'이라는 것이 있는데 바로 이 안에서 '쓰레드(Thread)'를 찾아볼 수 있었다.
쓰레드(Thread)
프로세스의 작업을 수행하는 주체이다. 한 프로세스 내에 여러 개의 쓰레드가 존재할 수 있다.
보다 더 자세하고 정확한 정보들은
이곳에 매우 잘 정리되어 있다.
이와 관련한 쓰레드(Thread)관련 정리는 후에 이어서 할 예정이다.
JDK? JRE?
먼저 JRE에 대해 알아보는 것이 좋을 것 같다.
JRE는 '자바 런타임 환경(Java Runtime Environment)'라는 뜻이다. 이는 JVM과 자바 클래스 라이브러리 등으로 구성되어 있다. *.java에서 *.class로 컴파일된 자바 프로그램을 실행하는데 필요한 패키지이다.
JDK는 '자바 개발 키트(Java Development Kit)'라는 뜻이다. 이는 자바를 사용하기 위해 필요한 모든 기능이 갖추어 있다. 때문에 자바 프로그램 실행에 사용되는 JRE도 포함하고 있으며 그밖에 컴파일러와 디버거, 문서 생성기 등도 포함되어 있다.
간단하게 말하자면 JRE는 자바 프로그램을 실행하는 데 사용되고, JDK는 자바 프로그램을 개발하는 데 사용된다고 생각하면 된다.
https://ko.wikipedia.org/wiki/%EC%9E%90%EB%B0%94_%EA%B0%80%EC%83%81_%EB%A8%B8%EC%8B%A0
https://dzone.com/articles/jvm-run-time-data-areas
조금 다른 이야기가 될 수도 있지만 '마인크래프트(MineCraft)'게임을 하려면 자바가 설치되어 있지 않을 경우(자바 에디션의 경우) 자바 설치를 요구하며 오라클 홈페이지로 이동되곤 했는데, 게임 자체가 자바로 만들어져서 JVM이 필요하기 때문에 그랬구나 깨달았다. 다른 사람이 생각하기에는 별 것 아닐 수도 있지만 이유도 모른 채 설치하던 것들이 왜 필요했던 건지 알게 되어 재미있었다.
'Android (Kotlin)' 카테고리의 다른 글
[Android/안드로이드] Android Jetpack은 대체 뭐지? (2) | 2022.09.21 |
---|---|
[Android/안드로이드] 코루틴(Coroutine)과 스레드(Thread)는 뭐지? (0) | 2022.09.20 |
[Android/안드로이드] JSON, GSON 정리 (0) | 2022.09.06 |
[Android/안드로이드] first, firstOrNull, last, lastOrNull 이건 뭐지? (0) | 2022.09.05 |
[Android/안드로이드] TODO(), error() (0) | 2022.08.31 |
최근댓글