๋ฐ์ดํธ ์ฝ๋, ๋ฐ์ด๋๋ฆฌ ์ฝ๋, ๊ธฐ๊ณ์ด, ๋ค์ดํฐ๋ธ ์ฝ๋, ๋ค์ดํฐ๋ธ ์ธ์ด์ ๋ํด ๋ค๋ฃน๋๋ค.
๋ฐ์ดํธ ์ฝ๋
๊ฐ์๋จธ์ ์ด ์ดํดํ ์ ์๋ ์ค๊ฐ ์ฝ๋์ด๋ค.
์ด์ ๋ธ๋ฆฌ์ด์ ๊ฐ๊น์ด ํํ๋ฅผ ๋ ๊ณ ์๋ค.
๋ฐ์ดํธ์ฝ๋๋ ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์์ผ๋ก ํด์๋๋ค.
- ์ธํฐํ๋ฆฌํฐ ๋ฐฉ์
- ์ฝ๋๋ฅผ ํ ์ค์ฉ ๋ด๋ ค๊ฐ๋ฉฐ ์คํํ๋ ํ๋ก๊ทธ๋จ ๋ฐฉ์
- ์ ์ ์ปดํ์ผ ์ธ์ด๋ณด๋ค ์คํ์๋๊ฐ ๋๋ฆฌ๋ค.
๋ํ์ ์ธ ๊ฐ์๋จธ์ , JVM์ ์ฌ์ฉํ๋ Java์ ์ปดํ์ผ ๋ฐฉ์์ ์ ์ ๋ค์ฌ๋ค๋ณด์.
Java๋ ํ๋ซํผ ๋ ๋ฆฝ์ ์ธ ์ฑ์ง์ด ์๋ค.
๋ณดํต ํ๋ก๊ทธ๋จ๋ค์ OS์ ์นํ์ ๋์๊ฐ๊ฒ ๋๋๋ฐ, ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ OS์์ ๊ท์ ํ๋ ์คํ ๋ฐฉ์์ ๋ฐ๋ผ์ผ ํ๋ค.
- OS์์ ๊ท์ ํ๋ ์คํ ๋ฐฉ์?
- ์๋ฅผ ๋ค์ด์, ์๋์ฐ ํ๋ซํผ์์ ์ปดํ์ผ ๊ณผ์ ๊ณผ ์ด์ ๋ธ๋ง ๊ณผ์ ์ ๊ฑฐ์ณ ์คํ ํ์ผ์ ๋ง๋ ๋ค๊ณ ์๊ฐํด ๋ณด์. windows์์๋ x64, x32 ๋ฑ ๋ฒ์ ์ ๋ฐ๋ผ ํ๋ก๊ทธ๋จ์ ์คํํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ ์๋ค.
- ์ด ์คํ ํ์ผ์ .exe ํ์ฅ์๋ฅผ ๊ฐ์ง๋ค. ์ฆ, microsoft windows ํ๋ซํผ์ ์คํํ์ผ์ด๋ค. ์ด ํ์ผ์ ๋น์ฐํ Mac OS์์๋ ์คํํ์ง ๋ชปํ๋ค.
- ์ ํํ๋ OS๋ง๋ค, ํ๋์จ์ด ์ ์กฐ์ฌ๋ง๋ค ๊ธฐ๊ณ์ด ์ค๊ณ๊ฐ ๋ค๋ฅด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ OS์์ ์ง์ ์คํํ ์ ์๋ ํ๋ก๊ทธ๋จ๋ค์ OS์ ํ๋์จ์ด ์ข ๋ฅ์ ๋ฐ๋ผ ์ปดํ์ผ ๊ณผ์ ๊ณผ ์ด์ ๋ธ๋ง ๊ณผ์ ์ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ชจ๋ ๋ค๋ฅผ ์ ์๋ค.
๊ทธ๋ฌ๋ Java๋ ๊ทธ๋ ์ง ์๋ค. ์๋ํ๋ฉด OS ์์ JVM, ์ฆ ๊ฐ์๋จธ์ ์ ํ๋ ๋ ์น์ด์ ํ๋ก๊ทธ๋จ์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค.
Java์ ์ปดํ์ผ ๊ณผ์ ์ ๋์ถฉ ์ด๋ ๊ฒ ์๊ฒผ๋ค.
์ฆ JVM์ด ์ค์น๋์ด ์๋ ๊ธฐ๊ธฐ๋ผ๋ฉด ํ๋ซํผ(OS)๊ณผ ์๊ด์์ด ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๋ค.
์์์ ํ๋ก๊ทธ๋จ์ OS์์ ๊ท์ ํ๋ ์คํ ๋ฐฉ์์ ๋ฐ๋ผ์ผ ํ๋ค๊ณ ํ๋ ๊ฒ์ฒ๋ผ ์ด๋ ๊ฒ ์คํ๋๋ Java ํ๋ก๊ทธ๋จ๋ JVM์์ ๊ท์ ํ๋ ์คํ ๋ฐฉ์์ ๋ฐ๋ผ์ผ ํ๋ค.
JVM์ ๋ฐ์ดํธ์ฝ๋, ์ฆ Bytecode๋ก ์์ฑ๋ .class ํ์ฅ์์ ํ์ผ์ ์คํํ ์ ์๋ค.
์ด ๋ฐ์ดํธ์ฝ๋๋ JVM์์ ์คํ๋๋ค. ์ด ๋ฐ์ดํธ์ฝ๋๊ฐ ์ด๋ป๊ฒ ํ๋์จ์ด์ ๋ฉ๋ชจ๋ฆฌ, ํ, ์คํ ์์ญ์ ์ฌ๋ผ๊ฐ๋์ง๋ ์ฌ์ฉ์๊ฐ ๋ชฐ๋ผ๋ ๋๋ค. ๊ทธ๊ฑฐ ๋ค JVM์ด ์์์ ํด ์ค๋ค.
์ฆ ๋ฐ์ดํธ์ฝ๋๋ JVM(๋๋ ๋ค๋ฅธ ๊ฐ์๋จธ์ )์ด ์์๋ฃ๋ ์คํ ํ์ผ ํ์์ด๋ค.
์ด ๊ฐ๋ ์ ๋์ค์ c, c++๊ณผ c#, java์ ์ปดํ์ผ ๊ณผ์ ์ ์ฐจ์ด์ ๋ํด์ ๋ค๋ฃจ๋ ํฌ์คํ ์์ ํ๋ฒ ๋ ์ง๊ณ ๋์ด๊ฐ๋ค.
๋ฐ์ด๋๋ฆฌ ์ฝ๋
์ด ๋ฐ์ด๋๋ฆฌ ์ฝ๋๊ฐ ์ด ๊ธ์ ์ฐ๊ฒ ํ ์์ธ์ด๋ค…
์ด์ง ์ฝ๋๋ผ๊ณ ๋ ํ๋ค.
๋ฐ์ด๋๋ฆฌ ์ฝ๋๊น์ง ๋ค์์ ๋๋ ๋ญ๊ฐ…์ด๋์์ ์ฌ์ฉํ๋ ์ฝ๋ ํ์ ๊ฐ์ง๋ง ์ด์ง ์ฝ๋๋ผ๋ ๋จ์ด๋ฅผ ๋ณด๋ ๋๋์ด ์ข์ง ์๋ค.
๊ทธ๋ ๋ค. ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ ๊ทธ๋ฅ 0101010์ด๋ค.
0๊ณผ 1์ ์ฐ์์ผ๋ก ์ด๋ฃจ์ด์ง ์ฝ๋๋ฅผ ๋ฐ์ด๋๋ฆฌ ์ฝ๋๋ผ๊ณ ํ๋ค.
๊ธฐ๊ณ์ด
์ฌ๊ธฐ์ ๊ธฐ๊ณ์ด์ ์ ์๋ฅผ ์ง๊ณ ๋์ด๊ฐ์.
์ํค๋ฐฑ๊ณผ์ ๋ฐ๋ฅด๋ฉด ๊ธฐ๊ณ์ด๋ “CPU๊ฐ ์ง์ ํด๋ ํ๊ณ ์คํํ ์ ์๋ ๋นํธ ๋จ์๋ก ์ฐ์ธ ์ปดํจํฐ ์ธ์ด๋ฅผ ํตํ์ด ์ผ์ปซ๋๋ค.”
๊ธฐ๊ณ์ด๋ ์ด์ ๋ธ๋ฆฌ์ด์ 1:1๋ก ๋์๋๋ค.
๊ธฐ๊ณ์ด๋ CPU์ ์ข ๋ฅ์ ๋ฐ๋ผ์ ๋ค๋ฅธ ๋ช ๋ น์ด๋ฅผ ๊ฐ๋๋ค. ๊ณตํต์ธ ๋ช ๋ น์ด๋ ์กด์ฌํ์ง๋ง, ๋ค๋ฅธ ๋ช ๋ น์ด๋ ์กด์ฌํ๋ค.
์ค… ์ฌ๊ธฐ๊น์ง ์์๋์ผ๋ฉด ์์์ ๋งํ “OS์์ ๊ท์ ํ๋ ์คํ ๋ฐฉ์”์ด ๋์ถฉ ๋ฌด์์ธ์ง ๊ฐ์ด ์กํ๋ค.
๊ทธ๋ฅ CPU ๋ฐ๋ผ์ ๊ธฐ๊ณ์ด๊ฐ ๋ฌ๋ผ์ง๋ค๋ ๋ป์ด๋ค.
์ฐ๋ฆฌ๊ฐ ๋นจ๊ฐ๊ณ ์ฌ๊ฐ์ฌ๊ฐํ๊ณ ๋ฌ๋ฌ ์ํผํ ๊ณผ์ผ์ ํ๊ตญ์ด๋ก ์ฌ๊ณผ, ์์ด๋ก apple, ๋ถ์ด๋ก pomme๋ผ๊ณ ํ๋ ๊ฒ์ฒ๋ผ ๋ง์ด๋ค.
๋ค์ดํฐ๋ธ ์ฝ๋ native code
ํน์ ํ๋ก์ธ์์์ ์คํ์ ํ๊ธฐ ์ํด ์ปดํ์ผ๋ ์ธ์ด์ด๋ค.
== ํน์ ํ๋ก์ธ์์ ๊ทธ ํ๋ก์ธ์์ ๋ช ๋ น์ด๋ก ๋์ํ๋๋ก ์ปดํ์ผ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ์ฝ๋์ด๋ค.
์ฆ, ์์์ ์ค๋ช ํ ๋ฐ์ดํธ ์ฝ๋๋ JVM์์ ์ ์ ํ ๋ค์ดํฐ๋ธ ์ฝ๋๋ก ์ปดํ์ผ๋์ด ์คํ๋๋ค.
- unmanaged code์ ๋์์ด๋ก ํผ์ฉ๋๋ ์ผ์ด ์ฆ๋ค.
- ๋ง์ฝ ๋ค๋ฅธ ํ๋ก์ธ์ ๊ธฐ๋ฐ์์ ๋๊ฐ์ ์์ ๋ด์ฉ์ ์คํํ๊ณ ์ ํ๋ค๋ฉด ์ปดํ์ผ ๊ฒฐ๊ณผ๋ฌผ์ด ๋ฌ๋ผ์ง ์ ์๋ค.
- ๋ค์ดํฐ๋ธ ์ฝ๋๋ ๋ฐ๋ก ๊ทธ ๊ฒฐ๊ณผ๋ฌผ์ ์ผ์ปซ๋๋ค.
- “ํ์ฌ ํ๋ก๊ทธ๋จ์ด ๋์๊ฐ๋ ํ๊ฒฝ์ ์ ํฉํ ๊ธฐ๊ณ ์ธ์ด”
์๊ฐ๋ณด๋ค Java์ ๋ฐ์ดํธ ์ฝ๋, ๊ทธ ์ปดํ์ผ ๊ณผ์ ์ ๋ํ ์ค๋ช ์ด ๊ธธ์ด์ง๋ค…
๋์ค์ ์ถ๊ฐ๋ก Java์ ์ปดํ์ผ ๊ณผ์ ์ ๋ํ ํฌ์คํ ์ ํด์ผ๊ฒ ๋ค.
์ธ๋งค๋์ง๋ ์ฝ๋ unmanaged code
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ ๋ถ๋ฅ์ด๋ค.
- ์ด์ ๋ธ๋ฆฌ์ด, C, C++ ๋ฑ์ ์ธ์ด๊ฐ ์๋ค.
- ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ง์ ๊ด๋ฆฌํด์ค์ผ ํ๋ค.
๋งค๋์ง๋ ์ฝ๋ managed code
- ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ ๋ถ๋ฅ์ด๋ค.
- Java, C# ๋ฑ์ด ์๋ค.
- CLR(Common Language Runtime) ํ๊ฒฝ์์ ๋์ํ๋ค.
- CLR์ ๋ํด์๋ ์ถ๊ฐ ํฌ์คํ ์ ์์ฑํ๊ฒ ๋ค…
- ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ด๋ฆฌ๋๋ค. → Garbage collection์ด ์กด์ฌํ๋ค.
- ์คํ ์ OS๊ฐ ์๋ ๊ฐ์ ๋จธ์ ์ ํตํด ์คํ๋๋ค.
- ํน์ง
- ๊ฐ์ฒด์งํฅ ๋ชจ๋ธ
- ์ธ์ด ๋ ๋ฆฝ์
- ํ์์ ์ฑ
- Garbage Collection (๋์ฒด๋ก ํฌ์ธํฐ ๊ฐ์ ๊ฒ์ ์ง์ํ์ง ์๋๋ค)
- ๋จ์ผ ํตํฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด ํ๋ซํผ ๋ ๋ฒจ์์ ๋ง์ API๋ค์ ์ ๊ณตํด ์ค๋ค.
๋ค์ดํฐ๋ธ ์ธ์ด native language
- ์๋ฎฌ๋ ์ด์ ์ด๋ ํธํ ๋ชจ๋์ ์ฌ์ฉ ๋ฑ ์ธ์ ์ธ ์ง์ ์์ด, ํน์ ํ๋์จ์ด๋ OS์์ ๊ทธ๋๋ก ์คํ๋๋ ์ธ์ด๋ฅผ ๋ค์ดํฐ๋ธ ์ธ์ด๋ผ๊ณ ํ๋ค.
- CPU ๋ด์์ ๊ณง๋ฐ๋ก ํด์๋ ์ ์๊ธฐ ๋๋ฌธ์ ์คํ ์๋๊ฐ ๋น ๋ฅด๋ค.
- ํ๋ซํผ์ ๋ฐ๋ผ ๋ค์ดํฐ๋ธ ์ธ์ด๊ฐ ๋ฌ๋ผ์ง๋ค.
- ์๋ฅผ ๋ค์ด ์๋์ฐ ํ๋ซํผ์ ๋ํ์ ์ธ ๋ค์ดํฐ๋ธ ์ธ์ด๋ C++์ด๋ค.
- ์๋๋ก์ด๋ ํ๋ซํผ์ Java, Kotlin
- IOS ํ๋ซํผ์ Swift, Objective C ๋ฑ์ด๋ค.
์ด๊ฑฐ ๋ค์ผ๋ฉด์ ์์ฑํ๋ค.
'๐ ๊ณต๋ถ > โ ๊ถ๊ธํด์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํธ๋ฆฌ๋ ๋ฐฉํฅ ๊ทธ๋ํ์ธ๊ฐ? ๋ฌด๋ฐฉํฅ ๊ทธ๋ํ์ธ๊ฐ? (1) | 2023.02.09 |
---|---|
Java์ ์ปดํ์ผ๋ถํฐ ์คํ๊น์ง (0) | 2022.11.18 |