엄밀하고 학문적으로 말해서 Runtime 이 Virtual Machine 임
근데 내가 VM이 아니라고 했던건 실제 VM 위에서 도는게 아니라 Virtual Machine process 없이 도는거를 말한건데
스스로 도는거라는 의미라서 interpret 하는 VM process없이 자기가 스스로 돈거라 VM이 아니라고 한건데
그 스스로가 VM이라서 엄밀히 말하면 VM이 맞음
아래는 나무위키
ART 또한 달빅과 같은 가상머신의 일종이다. 기존 안드로이드는 DEX 파일을 Dalvik 가상머신 위에 올려두고 필요에 따라 실시간으로 컴파일하는 방식이었다. ART를 사용하는 경우는 DEX 파일을 미리 컴파일하여 OAT 파일에 저장해두고 실행 돌리는 것으로 변했을 뿐이다. 기존의 DEX 파일을 dex2oat 라는 변환기를 이용해서 생성하고 실행한다.
OAT 파일은 DEX를 컴파일한 native machine code를 담고 있으며, 가상머신을 거치지 않고 바로 실행된다. 하지만 ART를 사용한다고 해도 Dalvik에서 실행하는 것과 논리적으로 동일한 결과물을 제공해야 하기 때문에, OAT에 저장된 native machine code에는 가상머신의 상태를 흉내내기 위한 부가적인 코드들이 잔뜩 들어가게 된다. (디버깅을 위해 필요하다. 물론 JIT compiler가 뱉어낸 machine code도 비슷하게 생겨먹었다) 다시 말해서 ART를 사용하는 경우 앱이 가상머신 위에서 작동하지는 않지만 가상머신으로부터 완전히 자유롭지도 않다.
가상머신인데 가상머신이 아니라니 이것은 양자언어인가
니멋대로 용어를 쓰면 어뜨캄
닷넷얘기하다가 갑자기 뭔 헛소리냐
글제목에 닷넷이 vm이 아니라 해놓고 art 예시를 들고있누