๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ ์์ ๊ธฐ์ด
์ปดํจํฐ์ ์ํํธ์จ์ด
ํ๋ก๊ทธ๋๋ฐ: ํ๋ก๊ทธ๋๋จธ๊ฐ ๋ง๋ฅ ๊ธฐ๊ณ์ธ ์ปดํจํฐ๋ฅผ ์ด์ฉํด ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒ
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- ์ปดํจํฐ๊ฐ ์คํํ ํ๋ก๊ทธ๋จ์ ์์ฑํ๊ธฐ ์ํ ์ธ์ด(์ปดํจํฐ ์ธ์ด, ๊ธฐ๊ณ์ด)
- ๊ธฐ๊ณ์ด
- 0, 1์ ์ด์ง์๋ก ๊ตฌ์ฑ๋ ์ธ์ด
- ์ปดํจํฐ์ CPU๋ ๊ธฐ๊ณ์ด๋ง ์ดํด, ์ฒ๋ฆฌ๊ฐ๋ฅ
- ์ด์
๋ธ๋ฆฌ์ด
- ๊ธฐ๊ณ์ด ๋ช ๋ น์ ADD, SUB, MOVE๋ฑ๊ณผ ๊ฐ์ ํํํ๊ธฐ ์ฌ์ด ์์ง์ ์ธ ๋จ์ด์ธ ๋๋ชจ๋ ๊ธฐํธ(mnemonic symbol)๋ก ์ผ๋์ผ ๋์์ํจ ์ธ์ด
- (๊ธฐ๊ณ์ด BASE, ์์ฃผ ์ฐ๋ ๊ธฐํธ๋ค ์ด์ฉํด์ ๋์, ์์ฃผ ์ธ ์ ์๋๋ก ์์งํด์ฃผ๋ ์ธ์ด)
- ๊ณ ๊ธ์ธ์ด
- ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฝ๊ณ , ๋ณต์กํ ์์ , ์๋ฃ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ์ ํํํ๊ธฐ ์ํด ๊ณ ์๋ ์ธ์ด
- ์ ์ฐจ ์งํฅ ์ธ์ด์ ๊ฐ์ฒด ์งํฅ ์ธ์ด๋ก ๋๋ ์ ์์
- ๊ณ ๊ธ ์ธ์ด(High-quality) ์ ๊ธ ์ธ์ด(Low-quality)๋ quality๋ก ๋๋๋ ๊ฒ์ผ๋ก, ๊ธ์ด ๋ฎ๊ณ ๋์์ด ์๋!! ์ฌ๊ธฐ์ quality๋ ๋จ๊ณ๋ฅผ ์๋ฏธํ๋ค. ์ ๋ฆฌํ๋ฉด ๊ณ ๊ธ ์ธ์ด๋ ์ ๊ธ ์ธ์ด๋ณด๋ค ๊ฑฐ์ณ์ผ ํ ๋จ๊ณ๊ฐ ๋ณต์กํ ์ธ์ด๋ฅผ ์๋ฏธ
ํ๋ก๊ทธ๋๋ฐ๊ณผ ์ปดํ์ผ
- ์์ค: ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์์ฑ๋ ํ ์คํธ ํ์ผ
- ์ปดํ์ผ: ์์ค ํ์ผ์ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ๊ธฐ๊ณ์ด๋ก ๋ง๋๋ ๊ณผ์ (๋ฒ์ญ ๊ณผ์ )
- ์ปดํ์ผ๋ฌ: ์ปดํ์ผ์ ์งํ์ํค๋ ์ํํธ์จ์ด
- ์๋ฐ์ ๊ฒฝ์ฐ .java ๊ฐ ์ปดํ์ผ๋์ด .class ๊ฐ ๋จ
โ ์ฐ์ต๋ฌธ์
- ์ด์
๋ธ๋ฆฌ์ด๋ ์ฃผ๋ก ์ด๋์ ์ฌ์ฉ๋๋๊ฐ?
HW๋ฅผ ์ง์ ์ ์ผ๋ก ์ ์ดํ๊ธฐ ์ํด - ๊ณ ๊ธ ํ๋ก๊ทธ๋จ ์ธ์ด๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ๊ณผ์ ์?
์ปดํ์ผ - ์๋ฐ ์ปดํ์ผ๋ฌ๋ก C++ ์์ค ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ ํ ์ ์๋๊ฐ?
X
์๋ฐ์ ์์
- ์ ๋ง์ดํฌ๋ก์์คํ ์ฆ์ ์ ์์ค ๊ณ ์ฌ๋ง์ ์ํด ์์ (๊ฐ์ ์ ํ์ ๋ค์ด๊ฐ ์ํํธ์จ์ด๋ฅผ ์ํด ๊ฐ๋ฐ)
- 1995๋ ์ ๋ฐํ
- ๋ชฉ์ (๊ธฐ์กด ์ธ์ด์ ๋จ์ , ๊ณ ์ฌ๋ง์ด ๋๊ผ๋ ๋ฌธ์ ์ )
- ํ๋ซํผ ํธํ์ฑ ๋ฌธ์ ํด๊ฒฐ
- ๊ธฐ์กด ์ธ์ด๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ PC, ์ ๋์ค, ๋ฉ์ธ ํ๋ ์ ๋ฑ ํ๋ซํผ ๊ฐ ํธํ ์๋จ
- ์์ค๋ฅผ ๋ค์ ์ปดํ์ผํ๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ ์ฌ ์์ฑํด์ผํจ
- ํ๋ซํผ ๋
๋ฆฝ์ ์ธ์ด ๊ฐ๋ฐ
- ๋ชจ๋ ํ๋ซํผ์์ ํธํ์ฑ ๊ฐ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ํ์
- ๋คํธ์ํฌ, ํนํ ์น์ ์ต์ ํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํ์์ฑ
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ๊ณ ๋ค์ํ ํ๋ซํผ์ ๊ฐ์ง๋ ๊ฐ์ ์ ํ์ ์ ์ฉ
- ๊ฐ์ ์ ํ: ์์ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ง๋ ์ ์ด ์ฅ์น
- ๋ด์ฅํ ์์คํ
์๊ตฌ ์ถฉ์กฑ
- ํ๋ซํผ ํธํ์ฑ ๋ฌธ์ ํด๊ฒฐ
- ์ด๊ธฐ ์ด๋ฆ --> ์คํฌ(OAK)
- 2009๋ ์ ์ค๋ผํด์ด ์ ๋ง์ดํฌ๋ก์์คํ ์ฆ ์ธ์
์๋ฐ์ ํน์ง
๊ธฐ์กด ์ธ์ด์ ํ๋ซํผ ์ข ์์ฑ
- ๊ฐ ํ๋ซํผ๋ง๋ค ๋ค ๋ง๋ค์ด์ผํจ
- ๊ธฐ๊ณ์ด๊ฐ CPU๋ง๋ค ๋ค๋ฅด๊ณ , ์ด์์ฒด์ ๋ง๋ค API์ ์คํํ์ผ ํ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ
์๋ฐ์ ํ๋ซํผ ๋ ๋ฆฝ์ฑ, WORA(Write Once Run Anywhere)
- ํ ๋ฒ ์์ฑ๋ ์ฝ๋๋ ๋ชจ๋ ํ๋ซํผ์์ ๋ฐ๋ก ์คํ๋๋ ์๋ฐ์ ํน์ง, ํ๋ซํผ๋ง๋ค ๊ฐ๋ฐํ ํ์ X
- C/C++ ๋ฑ ๊ธฐ์กด ์ธ์ด๊ฐ ๊ฐ์ง ํ๋ซํผ ์ข ์์ฑ ๊ทน๋ณต
- ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ด๋ ํด๋ผ์ด์ธํธ์์๋ ์คํ (์น ๋ธ๋ผ์ฐ์ , ๋ถ์ฐ ํ๊ฒฝ ์ง์)
WORA๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ ์๋ฐ์ ํน์ง
- ๋ฐ์ดํธ ์ฝ๋ (byte code)
- ์๋ฐ ์์ค๋ฅผ ์ปดํ์ผํ ๋ชฉ์ ์ฝ๋
- CPU์ ์ข ์์ ์ด์ง ์์ ์ค๋ฆฝ์ ์ธ ์ฝ๋
- JVM์์ ์คํ ๊ฐ๋ฅํ ๋ฐ์ด๋๋ฆฌ ์ฝ๋
- JVM์ด ์๋ ์ค์ธ ํ๋ซํผ์์ ์คํ (JVM์ ์ํด ํด์, ์คํ)
- ํด๋์ค ํ์ผ(.class)์ ์ ์ฅ
- JVM(Java Virtual Machine)
- ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํํ๋ ์๋ฐ ๊ฐ์ ๋จธ์ (์ํํธ์จ์ด)
- ๊ทธ ๊ธฐ๊ณ์ ๋ง์ถค ๋ฒ์ ์ผ๋ก ๋ฐ๊ฟ์ค
- ๊ฐ๊ธฐ ๋ค๋ฅธ ํ๋ซํผ์ ์ค์น (ํ๋ซํผ ์ข ์์ )
- ๋์ผํ ์๋ฐ ์คํ ํ๊ฒฝ ์ ๊ณต
- ์๋ฐ์ ์คํ
- JVM์ด ํด๋์ค ํ์ผ(.class)์ ๋ฐ์ดํธ ์ฝ๋ ์คํ
- JVM์ด ํด๋์ค ํ์ผ(.class)์ ๋ฐ์ดํธ ์ฝ๋ ์คํ
- JVM์ ๊ฐ ๊ธฐ๊ณ์ ๋ง๊ฒ ์์ด์ ์ข
์์ ์ด๊ณ , ์๋ฐ ์์ฒด(.class)๋ ํ๋ซํผ ๋
๋ฆฝ์ ์ด๋ค
์๋ฐ ์์ฉํ๋ก๊ทธ๋จ ์คํ ํ๊ฒฝ
- ์คํ ํ๊ฒฝ
- ์๋ฐ ๊ฐ์ ๊ธฐ๊ณ + ์๋ฐ API(์๋ฐ ํ๋ซํผ์ ๋ค์ํ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋จ์ด ์ง๋์ ์ฝ๋๋ค)
- ์๋ฐ ๊ฐ์ ๊ธฐ๊ณ + ์๋ฐ API(์๋ฐ ํ๋ซํผ์ ๋ค์ํ ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋จ์ด ์ง๋์ ์ฝ๋๋ค)
- ์์ฉํ๋ก๊ทธ๋จ ์คํ
- main() ๋ฉ์๋ ๊ฐ์ง ํด๋์ค์ main() ์์ ์คํ ์์
- JVM์ ํ์ํ ๋ ํด๋์ค ํ์ผ ๋ก๋ฉ, ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ก ์คํ ๊ฐ๋ฅ
์๋ฐ์ ํน์ฑ
- ํ๋ซํผ ๋
๋ฆฝ์ฑ
- ํ๋์จ์ด, ์ด์์ฒด์ ์ ์ข
์๋์ง ์์ ๋ฐ์ดํธ ์ฝ๋๋ก ํ๋ซํผ ๋
๋ฆฝ์ฑ
- ํ๋์จ์ด, ์ด์์ฒด์ ์ ์ข
์๋์ง ์์ ๋ฐ์ดํธ ์ฝ๋๋ก ํ๋ซํผ ๋
๋ฆฝ์ฑ
- ๊ฐ์ฒด์งํฅ
- ์บก์ํ, ์์, ๋คํ์ฑ ์ง์
- ์บก์ํ, ์์, ๋คํ์ฑ ์ง์
- ํด๋์ค๋ก ์บก์ํ
- ์๋ฐ์ ๋ชจ๋ ๋ณ์๋ ํจ์๋ ํด๋์ค ๋ด์ ์ ์ธ
- ํด๋์ค ์์์ ํด๋์ค(๋ด๋ถ ํด๋์ค) ์์ฑ ๊ฐ๋ฅ
- ์์ค(.java)์ ํด๋์ค(.class) ํ์ผ
- ํ๋์ ์์ค ํ์ผ์ ์ฌ๋ฌ๊ฐ์ง ํด๋์ค ์์ฑ ๊ฐ๋ฅ --> public ํด๋์ค๋ ํ๋๋ง ๊ฐ๋ฅ
- ์์ค ํ์ผ์ ์ด๋ฆ๊ณผ public์ผ๋ก ์ ์ธ๋ ํด๋์ค ์ด๋ฆ์ ๊ฐ์์ผ ํจ.
- ํด๋์ค ํ์ผ์๋ ํ๋์ ํด๋์ค๋ง ์กด์ฌ --> ๋ค์์ ํด๋์ค ๊ฐ์ง ์๋ฐ ์์ค๋ฅผ ์ปดํ์ผ ํ๋ฉด ํด๋์ค๋ง๋ค ๋ณ๋๋ก ํด๋์ค ํ์ผ ์์ฑ๋จ
- ์คํ ์ฝ๋ ๋ฐฐํฌ
- ํ ๊ฐ์ class ํน์ ๋ค์์ class ํ์ผ๋ก ๊ตฌ์ฑ๋๋๋ฐ ์ฌ๋ฌ ํด๋์ ๊ฑธ์ณ ๋ค์์ ํด๋์ค ํ์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ jar ์์ถ ํ์ผ๋ก ๋ฐฐํฌ
- ์๋ฐ ์์ฉ ํ๋ก๊ทธ๋จ์ ์คํ์ main() ๋ฉ์๋์์ ์์
- ํ๋์ ํด๋์ค ํ์ผ์ ๋ ๊ฐ ์ด์์ main()๋ฉ์๋ ์์ ์ ์์ but ๊ฐ ํด๋์ค ํ์ผ์ด main() ๋ฉ์๋๋ฅผ ํฌํจํ๋ ๊ฒ์ ์๊ด ์์
- ํ๋์ ํด๋์ค ํ์ผ์ ๋ ๊ฐ ์ด์์ main()๋ฉ์๋ ์์ ์ ์์ but ๊ฐ ํด๋์ค ํ์ผ์ด main() ๋ฉ์๋๋ฅผ ํฌํจํ๋ ๊ฒ์ ์๊ด ์์
- ํจํค์ง
- ์๋ก ๊ด๋ จ ์๋ ์ฌ๋ฌ ํด๋์ค๋ฅผ ํจํค์ง๋ก ๋ฌถ์ด ๊ด๋ฆฌ
- ํด๋(ํต) ๊ฐ๋
- ๋ฉํฐ ์ค๋ ๋
- ์ฌ๋ฌ ์ค๋ ๋์ ๋์ ์ํ ํ๊ฒฝ ์ง์ (multitask)
- ์ด์์ฒด์ (OS)์ ๋์ ์์ด ์์ฒด์ ์ผ๋ก ๋ฉํฐ์ค๋ ๋ ์ง์ (C/C++ ํ๋ก๊ทธ๋จ์ ๋ฉํฐ ์ค๋ ๋ ์ํด ์ด์์ฒด์ API ํธ์ถ)
- ๊ฐ๋น์ง ์ปฌ๋ ์
(garbage collection)
- ์๋ฐ ์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๊ธฐ๋ฅ ์์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐํ ๊ธฐ๋ฅ ์์
- ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ JVM์ ์ํด ์๋ ๋ฐํ --> ๊ฐ๋น์ง ์ปฌ๋ ์
- ๊ฐ๋จํ ์ฝ๋๋ฉด ์๊ด ์๋๋ฐ ๋ฉ๋ชจ๋ฆฌ ํฌ๋ฉด ๊ฐ์๊ธฐ ๋ฉ์ถฐ ๋จ์ ,, ์๋ ์ ๊ฒ
- ์๋ฐ ์ธ์ด๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๊ธฐ๋ฅ ์์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋ฐํ ๊ธฐ๋ฅ ์์
- ์ค์๊ฐ ์์ฉํ๋ก๊ทธ๋จ์ ๋ถ์ ํฉ
- ์คํ ๋์ค ์์ธกํ ์ ์๋ ์์ ์ ๊ฐ๋น์ง ์ปฌ๋ ์
์คํ ๋๋ฌธ -> ์์ฉ ํ๋ก๊ทธ๋จ์ ์ผ์์ ์ค๋จ ๋ฐ์
- ์คํ ๋์ค ์์ธกํ ์ ์๋ ์์ ์ ๊ฐ๋น์ง ์ปฌ๋ ์
์คํ ๋๋ฌธ -> ์์ฉ ํ๋ก๊ทธ๋จ์ ์ผ์์ ์ค๋จ ๋ฐ์
- ์์
- ํ์
์ฒดํฌ๊ฐ ์์ ํ๊ณ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ํฌ์ธํฐ ๊ฐ๋
์ด ์์ด ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
- ํ์
์ฒดํฌ๊ฐ ์์ ํ๊ณ ๋ฌผ๋ฆฌ์ ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ํฌ์ธํฐ ๊ฐ๋
์ด ์์ด ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
- ํ๋ก๊ทธ๋จ ์์ฑ ์ฌ์
- ํฌ์ธํฐ ๊ฐ๋ X
- ๋์ ๋ฉ๋ชจ๋ฆฌ ๋ฐํ X
- ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ง์
์ฐธ๊ณ
๋ช ํ ์๋ฐ ์์ผ์ (์๋ฅ์ถํ, ํฉ๊ธฐํ ์ )
728x90