compile vs interpret jihoon - GANGNAM-JAVA/JAVA-STUDY GitHub Wiki
์ธํฐํ๋ฆฌํธ(Interpret)
- ๊ณ ๊ธ ์ธ์ด(high-level programiing language)๋ก ์์ฑ๋ ์์ค์ฝ๋(์์์ฝ๋, ์ฌ๋์ด ์ฝ์ ์ ์๋ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋) ๋ช
๋ น์ด๋ค์ ํ ๋ฒ์ ํ ์ค์ฉ ์ฝ์ด๋ค์ฌ ์ค๊ฐ ์ฝ๋๋ก ๋ณํํ ๋ค์, ๋ณํํ ๊ฒ์ ๋ฐ๋ก ์คํํ๋ ๊ฒ
- ํ๋์ ๋ค์ด ๋ง์ ์ธํฐํ๋ฆฌํฐ๊ฐ JIT ์ปดํ์ผ ๋ฑ์ ๊ธฐ์ ๋ก ์ค์๊ฐ ์ปดํ์ผ์ ์ํํ๋ฏ๋ก, ์ปดํ์ผ๋ฌ์ ์ธํฐํ๋ฆฌํฐ ์ฌ์ด์ ๊ธฐ์ ์ ๊ตฌ๋ถ์ ์ฌ๋ผ์ ธ ๊ฐ๋ ์ถ์ธ
์ปดํ์ผ(Compile)
- ๊ณ ๊ธ ์ธ์ด(high-level programming language)๋ก ์ด๋ฃจ์ด์ง ์์ค์ฝ๋๋ฅผ ์ ๊ธ ์ธ์ด(low-level programming language)๋ก ๋ณํํ๋ ๊ฒ
- ์ ๋ ๋ฒจ ์ธ์ด๋ก๋ ์ด์
๋ธ๋ฆฌ์ด(assembly language), ๊ธฐ๊ณ์ด(machine code)๊ฐ ์๋ค.
- ๊ฒฐ๊ณผ ์ฝ๋๋ฅผ object code๋ผ๊ณ ํ๋ค.
- E.g. java์ byte code(.class), C์ object code(.o)
๋งํฌ(link)
- ์ฌ๋ฌ ๊ฐ๋ก ๋ถ๋ฆฌ๋ ์์ค ํ์ผ๋ค์ ์ปดํ์ผ๋ ๊ฒฐ๊ณผ๋ฌผ๋ค๋ก ์ต์ข
์คํ ๊ฐ๋ฅํ ํ์ผ์ ๋ง๋ค๊ธฐ ์ํด ํ์ํ ๋ถ๋ถ์ ์ฐพ์ ์ฐ๊ฒฐํด์ฃผ๋ ์์
- A์ B ์์คํ์ผ ๊ฐ๊ฐ์ ์ปดํ์ผ๋ง ํ๋ฉด A๊ฐ B์ ์กด์ฌํ๋ ํจ์๋ฅผ ์ฐพ์ง ๋ชปํด ํธ์ถํ ์ ์๊ธฐ ๋๋ฌธ์ A์ B๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ์์
์ด ํ์ํ๋ค.
- ์ ์ ๋งํฌ(static link)์ ๋์ ๋งํฌ(dynamic link)๊ฐ ์๋ค.
- ์ ์ ๋งํฌ(static link)
- ์ปดํ์ผ๋ ์์ค ํ์ผ์ ์ฐ๊ฒฐํด์ ์คํ ๊ฐ๋ฅํ ํ์ผ์ ๋ง๋๋ ๊ฒ์ด๊ณ
- ๋์ ๋งํฌ(dynamic link)
- ๋์ ๋งํฌ๋ ํ๋ก๊ทธ๋จ ์คํ ๋์ค ํ๋ก๊ทธ๋จ ์ธ๋ถ์ ์กด์ฌํ๋ ์ฝ๋๋ฅผ ์ฐพ์์ ์ฐ๊ฒฐํ๋ ์์
์ ๋งํ๋ค.
- ์๋ฐ์ ๊ฒฝ์ฐ, JVM์ด ํ๋ก๊ทธ๋จ ์คํ ๋์ค ํ์ํ ํด๋์ค๋ฅผ ์ฐพ์์ ํด๋์คํจ์ค์ ๋ก๋ํด์ฃผ๋ ๊ฒ์ด ๋์ ๋งํฌ์ ์์ด๋ค.
๋น๋(Build)
- ์์ค ์ฝ๋ ํ์ผ์ ์คํ ๊ฐ๋ฅํ ์ํํธ์จ์ด ์ฐ์ถ๋ฌผ๋ก ๋ง๋๋ ์ผ๋ จ์ ๊ณผ์
- ๋น๋์ ๋จ๊ณ ์ค ์ปดํ์ผ์ด ํฌํจ์ด ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ์ ๋น๋์ ๋ถ๋ถ์งํฉ์ด๋ผ ํ ์ ์๋ค.
- ๋น๋ ๊ณผ์ ์ ๋์์ฃผ๋ ๋๊ตฌ๋ฅผ ๋น๋ ํด์ด๋ผ ํ๋ค.
JIT(Just In Time) ์ปดํ์ผ๋ฌ
- ์ค๊ฐ ์ฝ๋๋ฅผ OS์ ํนํ๋ ์ฝ๋(machine code)๋ก ๋ณํํ์ฌ ์คํํ๋ค.
- ๊ฐ์ ์ฝ๋๋ฅผ ๋งค๋ฒ ํด์ํ๋ ๋์ ์ฒ์ ์คํ๋ ๋ ์ธํฐํ๋ฆฌํธ๋ฅผ ํ๋ฉด์ ์์ฃผ ์ฐ์ด๋ ์ฝ๋๋ฅผ ์บ์ฑํ๊ณ , ์บ์ฑ๋ ์ฝ๋๋ฅผ ๊ฐ์ ธ๋ค ์ฐ๊ธฐ ๋๋ฌธ์ ์ธํฐํ๋ฆฌํฐ์ ๋๋ฆฐ ์คํ ์๋๋ฅผ ๊ฐ์ ํ ์ ์๋ค
- Java์ ๊ฒฝ์ฐ ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ํ ์ค์ฉ ์คํํ๋๋ฐ, ๋ฐ๋ณต๋๋ ์ฝ๋๋ฅผ ๋ฐ๊ฒฌํ๋ฉด JIT ์ปดํ์ผ๋ฌ๊ฐ ๋ฐ๋ณต๋๋ ์ฝ๋๋ฅผ ๋ชจ๋ ๋ค์ดํฐ๋ธ ์ฝ๋(machine code)๋ก ๋ฐ๊ฟ๋๋ค(์ปดํ์ผํ๋ค). ๊ทธ ๋ค์๋ถํฐ ์ธํฐํ๋ฆฌํฐ๋ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ๋ค์ดํฐ๋ธ ์ฝ๋๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ๋ค.

byte ์ฝ๋
- ํน์ ํ๋์จ์ด๊ฐ ์๋ ๊ฐ์ ์ปดํจํฐ์์ ๋์๊ฐ๋ ์คํ ํ๋ก๊ทธ๋จ์ ์ํ ์ด์ง ํํ๋ฒ
- ์ญ์ฌ์ ์ผ๋ก ๋๋ถ๋ถ์ ๋ช
๋ น ์งํฉ์ด 0๊ฐ ์ด์์ ๋งค๊ฐ ๋ณ์๋ฅผ ๊ฐ๋ 1๋ฐ์ดํธ ํฌ๊ธฐ์ ๋์ ์ฝ๋(opcode)๋ก ๊ตฌ์ฑ๋์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํธ์ฝ๋๋ผ ๋ถ๋ฆฌ๊ฒ ๋์๋ค.
- java byte ์ฝ๋๋ java ์ธ์ด์ ๊ธฐ๊ณ์ด ์ฌ์ด์ ์ค๊ฐ ์ฝ๋
reference