์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ์ฑ ์
- ํด๋ฆฐ ์ฝ๋
- ๊ฐ์ฒด์งํฅ
- ๋ฆฌํฉํ ๋ง
- clean code
- SRP
- ํ๋ ฅ
- cache
- Refactor
- spring boot
- JPA
- ์คํ๋ง
- ํด๋ฆฐ์ฝ๋
- JIT
- ์คํ๋ง๋ถํธ
- ์ถ์ํ
- string
- ๊ฐ์ฒด
- ์บ์ฑ
- ์ธํฐํ๋ฆฌํฐ
- ์ฌ์ฌ์ฉ์ฑ
- ๋๋ฉ์ธ ๋ชจ๋ธ
- ์บ์
- Java
- ์๋ฐ
- ์บก์ํ
- ๊ฐ์ฒด์งํฅ์ ์ฌ์ค๊ณผ ์คํด
- ์ฟผ๋ฆฌ ์ต์ ํ
- Lombok
- REST API
- Today
- Total
GO SIWOO!
[Java] ์ปดํ์ผ๋ฌ(Compiler) & ์ธํฐํ๋ฆฌํฐ(Interpreter) ๊ทธ๋ฆฌ๊ณ Java๋ ๋ฌด์จ์ธ์ด์ธ๊ฐ? ๋ณธ๋ฌธ
[Java] ์ปดํ์ผ๋ฌ(Compiler) & ์ธํฐํ๋ฆฌํฐ(Interpreter) ๊ทธ๋ฆฌ๊ณ Java๋ ๋ฌด์จ์ธ์ด์ธ๊ฐ?
gosiwoo 2023. 3. 10. 18:26๐๊ฐ์
์ปดํจํฐ๋ ์ฌ๋์ ์ธ์ด ๋ฌธ๋ฒ์ ๊ฐ๊น์ด ๊ณ ๊ธ ์ธ์ด๋ฅผ ์ดํดํ ์ ์๋ค. ์ด์ ๊ฐ์ ์ด์ ๋ก ๊ณ ๊ธ ์ธ์ด๋ก ์์ฑ๋ ์ฝ๋๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ ๊ธ ์ธ์ด์ธ ๊ธฐ๊ณ์ด๋ก ๋ฐ๊ฟ์ผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ค.
0๊ณผ 1์ 2์ง์ ๋ง์ ์ดํดํ๋ ์ปดํจํฐ๋ฅผ ์ฌ๋์ด ์ดํดํ๊ธฐ ์ํด ์ด์ ๋ธ๋ฆฌ ์ธ์ด๊ฐ ์๊ธฐ๊ฒ ๋๋ค. ์ด ์ด์ ๋ธ๋ฆฌ ์ธ์ด๋ ์ด์ ๋ธ๋ฌ๋ฅผ ํตํด 2์ง์๋ก ๋ณ๊ฒฝํด ์ปดํจํฐ๊ฐ ์ฝ์ ์ ์๊ฒ ํ๋ค.
1950๋ ๋์ High-level Language, ๊ณ ๊ธ ์ธ์ด๋ผ๋ ๊ฐ๋ ์ด ๋ฑ์ฅํ๊ณ ์ฌ๋์ ์ธ์ด ๋ฌธ๋ฒ๊ณผ ๋๋์ฑ ๊ฐ๊น์ด, ์ฐ๋ฆฌ๊ฐ ๋ถ๋ฅด๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด java, C, Python ๋ฑ์ด ์ฌ๊ธฐ์ ์ํ๊ฒ ๋๋ค.
๊ณ ๊ธ ์ธ์ด ๋ํ ์ด์ ๋ธ๋ฌ๊ฐ ๊ธฐ๊ณ์ด๋ก ๋ฐ๋๋ฏ์ด ๋ฐ๊ฟ์ฃผ์ด์ผ ํ๋๋ฐ ์ด ์ญํ ์ ์ปดํ์ผ๋ฌ(Compiler)์ ์ธํฐํ๋ฆฌํฐ(Interpreter)๊ฐ ์ฌ์ฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ด ๋์ ์ด๋ ์ฐจ์ด๊ฐ ์์๊น?
๐์ปดํ์ผ๋ฌ(Compiler)?
- ์ ์ฒด ์ฝ๋๋ฅผ Runtime ์ด์ ์ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋ ๋ฐฉ์์ด๋ค.
- ํ๋ก๊ทธ๋จ ์คํ ์ OS๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๋๋ค.
- ์์ค์ฝ๋ ์ ์ฒด๋ฅผ ์ปดํ์ผ์ ํตํด ๊ธฐ๊ณ์ด ์์ค์ฝ๋๋ก ๋ฐ๊พธ์ด ์ค๋ค.
- ์คํ ์๋๊ฐ ์ธํฐํ๋ฆฌํฐ๋ณด๋ค ๋น ๋ฅด๋ค.
- ์ปดํ์ผ์ ํ ํ๊ฒฝ์ ์ข ์๋์ด ๋ง์ฝ Linux ํ๊ฒฝ์์ ์ปดํ์ผ์ ์งํ ํ๋ค๋ฉด Window ํ๊ฒฝ์์ ์ ํ์ ์ด๋ค.
- ์คํ ํ์ผ์ ์์ฑํ๋ค.
๐์ธํฐํ๋ฆฌํฐ(Interpreter)?
- ์ ์ฒด ์ฝ๋๋ฅผ Runtime์ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํ๋ ๋ฐฉ์์ด๋ค.
- ํ๋ก๊ทธ๋จ ์คํ ์ค์ OS๋ก๋ถํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๋๋ค.
- ์์ค์ฝ๋๋ฅผ ํ์ค์ฉ ๋ฒ์ญํ์ฌ ๊ธฐ๊ณ์ด๋ก ๋ฐ๊พผ๋ค.
- ์ปดํ์ผ ํ๊ฒฝ์ ์ข ์๋์ง ์๋๋ค. (ํด๋น ํ๋ซํผ์ ๋ง๊ฒ ๋ฒ์ญ์ ํ๋ค)
๐Java์ ์ปดํ์ผ์?
Java ์ปดํ์ผ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
1. ์๋ฐ ์์ค์ฝ๋(. java) ์์ฑ
2. ์๋ฐ ์ปดํ์ผ๋ฌ(javac.exe)๊ฐ ์๋ฐ ์์ค์ฝ๋(. java)๋ฅผ ๋ฐ์ดํธ ์ฝ๋(. class)๋ก ์ปดํ์ผ
3. ๋ฐ์ดํธ ์ฝ๋(. class)๋ฅผ JVM์ ํด๋์ค ๋ก๋(Class Loader)์๊ฒ ์ ๋ฌ
4. ํด๋์ค ๋ก๋(Class Loader)๋ ๋์ ๋ก๋ฉ์ ํตํด JVM์ ๋ฉ๋ชจ๋ฆฌ(Runtime Data Areas)์ ์ฌ๋ฆฐ๋ค
5. ์คํ ์์ง(Execution Engine)์ด JVM ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๋ฐ์ดํธ ์ฝ๋(. class)๋ค์ ์คํ
์ฐ์ ์ค๋ช ํ์๋ฉด ์๋ฐ๋ ์ปดํ์ผ ์ธ์ด์ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ ํน์ง์ ๋ ๊ฐ์ง ๋ชจ๋ ๊ฐ๊ณ ์๋ค.
์๋ฐ๋ ์ปดํ์ผ๋ฌ(javac.exe)๋ฅผ ํตํด์ ์๋ฐ ์์ค์ฝ๋๋ฅผ ๋ฐ์ดํธ ์ฝ๋๋ก ์ปดํ์ผํ๋ค. ๋ฐ์ดํธ ์ฝ๋๋ฅผ JVM์ ํด๋์ค ๋ก๋๋ฅผ ํตํด JVM์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ณ ์ธํฐํ๋ฆฌํฐ๋ฅผ ํตํด ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ 2์ง ์ฝ๋๋ก ๋ณ๊ฒฝํ๋ค.
ํ์ง๋ง ์์ ๊ฐ์ 2๋ฒ์ ๋ฒ์ญ ๊ณผ์ ์ ๋นํจ์จ ์ ์ด๋ผ ์๊ฐํด JIT ์ปดํ์ผ๋ฌ๋ฅผ ํตํ ๋ฐฉ์์ด ์๊ฒผ๋ค. JIT ์ปดํ์ผ๋ฌ๊ฐ ๋ฐ์ดํธ ์ฝ๋ ์ ์ฒด๋ฅผ ํ์ธํ ํ ์ค๋ณต๋ ๋ถ๋ถ์ ๋ฏธ๋ฆฌ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํด ์ ์ฅํด ๋๊ณ ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ ํตํด ๋ฒ์ญ ์ค ์ค๋ณต๋ ๋ถ๋ถ์ ๋ง๋๋ฉด ์ด๋ฏธ ๋ณํ๋ ๊ธฐ๊ณ์ด ์ฝ๋๋ฅผ ์ฌ์ฌ์ฉํ๋ ๋ฐฉ์์ด๋ค.
์๋ฐ์ ์ปดํ์ผ์ ๊ดํด์ ๋ ์๊ณ ์ถ๋ค๋ฉด...
[์๋ฐ(Java)] JVM์ด๋ ๋ฌด์์ธ๊ฐ & Java ์ปดํ์ผ & JVM ๋ด๋ถ ๊ตฌ์กฐ
๐JVM์ด๋ ๋ฌด์์ธ๊ฐ? ๊ธฐ์กด์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ํฌ๋ก์ค ์ปดํ์ผ์ ํตํด ์ปดํ์ผ๋ฌ๊ฐ ์คํ๋๋ ํ๋ซํผ์ด ์๋ ๋ค๋ฅธ ํ๋ซํผ์์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ด์ผ ํ๋ค. ์๋ก ์๋์ฐ์์
gosiwoo.tistory.com
'Develop > ์๋ฐ(Java)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Lombok์ ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ 1 - @Data ์ง์ (0) | 2023.03.22 |
---|---|
[Java] String, StringBuilder, StringBuffer์ ์ฐจ์ด (0) | 2023.03.15 |
[Java] JSONObject & JSONArray & JSONParser ์ฌ์ฉ๋ฒ๊ณผ json-simple (0) | 2023.03.07 |
[Java] Java ์ปฌ๋ ์ ํ๋ ์์ํฌ๋ (Collection Framework) (0) | 2023.03.02 |
[Java] Java String Pool์ด๋? (1) | 2023.02.27 |