๋ชจ๋ฐ์ผ ํ๊ฒฝ์ ์ต์ ํ๋ ๋ฐํ์์ ์ ๊ณตํ๊ธฐ ์ํด, ๊ธฐ์กด ์๋ฐ ๊ฐ์๋จธ์ ์ธ JVM์ ๋์ฒดํ์ฌ DVM์ด ๋ํ๋ฌ์ต๋๋ค. ์ดํ ์ด DVM์ด ์ง๊ธ์ ART๋ก ๋ฐ์ ๋์์ต๋๋ค. ์ด ํฐ ํ๋ฆ์ ๊ฐ์ง๊ณ , ์ด ๊ธ์ ํตํด ์ ์ธ๊ฐ์ง ๋ฐํ์ ๋ฐฉ๋ฒ์ ๊ฐ๊ด์ ์ผ๋ก ์์๊ฐ์๊ธธ ๋ฐ๋ผ๊ฒ ์ต๋๋ค. ์ ! ๊ตฌ์ฒด์ ์ธ ๋ฐํ์ ๊ตฌ์ฑ๊ณผ ๋์๋ฐฉ์์ ๋ํด์ ๋ค๋ฅธ ๊ธ์์ ๋ ๋ค์ธํ ๋ค๋ค๋ณด๋๋กํ ํ ๋, ๋ค์ ๊ธ๋ ๊ธฐ๋ํด์ฃผ์ธ์ ! ๊ทธ๋ผ ์ค๋๋ ํ์ดํ ์ ๋๋ค ๐ฟ
์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ์ฃผ์ฒด์ ๋๋ค.
- ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ ?
- ํ๋ซํผ์ ๋ ๋ฆฝ์
- JVM์ ์์กด์
- ํ๋ฒ์ ๋น๋๋ก ์ฌ๋ฌ ํ๋ซํผ์์ ์คํ๊ฐ๋ฅ (WORA : Write Once and Run Anywhere)
์ด๊ธฐ Android Run Time์ผ๋ก, Android 2.2 ์ดํ trace JIT ์ปดํ์ผ๋ฌ๋ก ์ฒ์ ์ ์ฉ๋์์ต๋๋ค.
์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋์ ๋ JIT ์ปดํ์ผ๋ฌ์ ๋๋ค. ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ผ๋ก ์คํํ๋ค๊ฐ ์ ์ ํ ์์ ์ ๋ฐ์ดํธ์ฝ๋ ์ ์ฒด๋ฅผ ์ปดํ์ผํ์ฌ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ๋ณ๊ฒฝํ๊ณ , ์ดํ์๋ ํด๋น ๋ ์ด์ ์ธํฐํ๋ฆฌํ ํ์ง ์๊ณ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ง์ ์คํํ๋ ๋ฐฉ์์ด๋ค. ๋ค์ดํฐ๋ธ ์ฝ๋๋ ์บ์์ ๋ณด๊ดํ๊ธฐ ๋๋ฌธ์ ํ ๋ฒ ์ปดํ์ผ๋ ์ฝ๋๋ ๋น ๋ฅด๊ฒ ์ํํ๊ฒ ๋๋ค. ๋ฌผ๋ก JIT์ปดํ์ผ๋ฌ๊ฐ ์ปดํ์ผํ๋ ๊ณผ์ ์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์ธํฐํ๋ฆฌํ ํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ์ค๋๊ฑธ๋ฆฌ๋ฏ๋ก ํ ๋ฒ๋ง ์คํ๋๋ ์ฝ๋๋ผ๋ฉด ์ปดํ์ผํ์ง ์๊ณ ์ธํฐํ๋ฆฌํ ํ๋ ๊ฒ์ด ์ ๋ฆฌํ๋ค. ๋ฐ๋ผ์ JIT ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ JVM๋ค์ ๋ด๋ถ์ ์ผ๋ก ํด๋น ๋ฉ์๋๊ฐ ์ผ๋ง๋ ์์ฃผ ์ํ๋๋์ง ์ฒดํฌํ๊ณ , ์ผ์ ์ ๋๋ฅผ ๋์ ๋์๋ง ์ปดํ์ผ์ ์ํํ๋ค.
trace-JIT๋?
Threshold๋ฅผ ์ด๊ณผํ๋ฉด ๋ฐ์ดํธ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ด๋ก ํด์ํ๋ค. ์ฆ ์ด๋ค ๊ตฌ๊ฐ(ex. if๋ฌธ, for๋ฌธ)์ด ํน์ ํ์ ์ด์ ๋ฐ๋ณต๋๋ฉด ์ปดํ์ผ
Interpreter(์ธํฐํ๋ฆฌํฐ)๋?
์คํ ์์ง์ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ช ๋ น์ด ๋จ์๋ก ์ฝ์ด์ ์คํํ๋ค. ํ์ง๋ง ์ด ๋ฐฉ์์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ ๋จ์ ์ ๊ทธ๋๋ก ๊ฐ๊ณ ์๋ค. ํ ์ค ์ฉ ์ํํ๊ธฐ ๋๋ฌธ์ ๋๋ฆฌ๋ค๋ ๊ฒ์ด๋ค.
VM์ด๋ DVM์ด๋ ๋ชจ๋ Java๋ฅผ ์ฌ์ฉํ๋ VM์ด๊ธฐ ๋๋ฌธ์ ๋น์ทํ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์ JAVA๋ฅผ ์ฌ์ฉํ๋ฉด์, JVM์ด ์๋ DVM์ ์ฌ์ฉํ ๊น?
Android 4.4 (API 19)์์ ์ฒ์์ผ๋ก ๋ฑ์ฅ, ๋์ (DVM๊ณผ ์ ํ์ ์ฌ์ฉ)
Android 5.0 (API 21) ์ดํ, ๊ธฐ๋ณธ ๋ฐํ์์ผ๋ก ์ง์
Android 7.0 ์ดํ๋ก๋ AOT + JIT
Dalvik์ฉ์ผ๋ก ๊ฐ๋ฐ๋ ์ฑ์ ART๋ก ์คํ ์์๋ ์๋ํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ Dalvik์์ ์๋ํ๋ ๊ธฐ์ ์ค ์ผ๋ถ๋ ART์์ ์๋ํ์ง ์์ต๋๋ค.
DVM : JIT (Just In Time)
ART : AOT (Ahead Of Time)
JVM : ๊ฐ์๋จธ์
DVM : ๊ฐ์๋จธ์
ART : ๋ผ์ด๋ธ๋ฌ๋ฆฌ
why? ART ํต์ฌ์ด์ ๋์๊ณผ์ :: ์ปดํ์ผ, ์ธํฐํ๋ฆฌํ ๊ณผ์ ์ด ์๊ธฐ ๋๋ฌธ์
์๋๋ก์ด๋ N์์๋ ART ์ JIT ์ปดํ์ผ๋ฌ๋ ์ถ๊ฐ ๋๋ค๊ณ ํฉ๋๋ค.
ํ๋กํ ๊ฐ์ด๋ ๋ฐฉ์์ JIT/AOT ์ปดํ์ผAndroid N์์ ์ฝ๋ ํ๋กํ์ผ๋ง์ ํฌํจํ JIT(Just in Time) ์ปดํ์ผ๋ฌ๋ฅผ ART์ ์ถ๊ฐํ์ผ๋ฉฐ, ์คํ ์์ Android ์ฑ์ ์ฑ๋ฅ์ด ๊ณ์ํด์ ํฅ์๋ฉ๋๋ค. JIT ์ปดํ์ผ๋ฌ๋ ART์ ํ์ฌ AOT(Ahead of Time) ์ปดํ์ผ๋ฌ๋ฅผ ๋ณด์ํ๊ณ ๋ฐํ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ฉฐ, ์ ์ฅ ๊ณต๊ฐ์ ์ ์ฝํ๊ณ , ์ฑ ์ ๋ฐ์ดํธ ๋ฐ ์์คํ ์ ๋ฐ์ดํธ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํด์ค๋๋ค.ํ๋กํ ๊ฐ์ด๋ ๋ฐฉ์์ ์ปดํ์ผ์ ํตํด ART๋ ์ค์ ์ฌ์ฉ๋๊ณผ ๊ธฐ๊ธฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ ์ฑ์ AOT/JIT ์ปดํ์ผ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ART๋ ์ต์ ์ ์ฑ๋ฅ์ ์ํด ๊ฐ ์ฑ์ ํซ ๋ฉ์๋์ ๋ํ ํ๋กํ์ ์ ์ง๊ด๋ฆฌํ๊ณ ์ด๋ค ๋ฉ์๋๋ฅผ ํ๋ฆฌ์ปดํ์ผํ๊ณ ์บ์ฑํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ฑ์ ๋ค๋ฅธ ๋ถ๋ถ๋ค์ ์ค์ ๋ก ์ฌ์ฉ๋ ๋๊น์ง ์ปดํ์ผํ์ง ์๊ณ ๋จ๊ฒจ๋ก๋๋ค. ํ๋กํ ๊ฐ์ด๋ ๋ฐฉ์์ ์ปดํ์ผ์ ์ฑ์ ์ฃผ์ ๋ถ๋ถ๋ค์์ ์ฑ๋ฅ์ ๊ฐ์ ํ ๋ฟ๋ง ์๋๋ผ ๊ด๋ จ ๋ฐ์ด๋๋ฆฌ๋ฅผ ๋น๋กฏํ ์ฑ ์ ์ฒด์ RAM ๊ณต๊ฐ์ ์ค์ด๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด ๊ธฐ๋ฅ์ ์ ์ฉ๋ ๋ฉ๋ชจ๋ฆฌ ๊ธฐ๊ธฐ์ ํนํ ์ค์ํฉ๋๋ค.ART๋ ๊ธฐ๊ธฐ ๋ฐฐํฐ๋ฆฌ์ ๋ฏธ์น๋ ์ํฅ์ด ์ต์ํ๋๋ ๋ฐฉ์์ผ๋ก ํ๋กํ ๊ฐ์ด๋ ๋ฐฉ์์ ์ปดํ์ผ์ ๊ด๋ฆฌํฉ๋๋ค. ART๋ ๊ธฐ๊ธฐ๊ฐ ์ ํด ์ํ์ด๊ณ ์ถฉ์ ์ค์ผ ๋๋ง ํ๋ฆฌ์ปดํ์ผ์ ์ํํ๋ฉฐ, ํด๋น ์์ ์ ๋ฏธ๋ฆฌ ์ํํ์ฌ ์๊ฐ๊ณผ ๋ฐฐํฐ๋ฆฌ๋ฅผ ์ ์ฝํฉ๋๋ค