1. ์ด์์ฑ์ด ๋์ ์ธ์ด
- ์ด์์ฑ : ์๋ก ๋ค๋ฅธ ์คํํ๊ฒฝ์ ๊ฐ์ง ์์คํ ๊ฐ์ ํ๋ก๊ทธ๋จ์ ์ฎ๊ฒจ์๋ ์คํํ ์ ์๋ ๊ฒ
- ์ ์ด์์ฑ์ด ๋์๊น ?
์๋ฐ๋ JVM(Java Virtual Machine) ์์์ ๋์ํ๊ธฐ ๋๋ฌธ์ ์ด์์ฒด์ ์๊ด์์ด ์๋ ๊ฐ๋ฅํ๋ค.
2. ๊ฐ์ฒด์งํฅ ์ธ์ด
- ๊ฐ์ฒด์งํฅ : ๋ถํ์ ํด๋นํ๋ ๊ฐ์ฒด๋ค์ ๋จผ์ ๋ง๋ค๊ณ ์ด๊ฒ๋ค์ ํ๋์ฉ ์ฐ๊ฒฐํด์ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๊ธฐ๋ฒ
- ์๋ฐ๋ 100% ๊ฐ์ฒด์งํฅ ์ธ์ด์ ํด๋นํ๋ค. ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ค๊ณ๋์ ํด๋นํ๋ ํด๋์ค๋ฅผ ์์ฑํ๊ณ , ๊ฐ์ฒด์ ๊ฐ์ฒด๋ฅผ ์ฐ๊ฒฐํด ๋ชฉ์ ์ ๋ง๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด ๋ธ๋ค. ์๋ฐ์์๋ ์๋ฌด๋ฆฌ ์์ ๋จ์์ ํ๋ก๊ทธ๋จ์ด๋ผ๋ ๊ฐ์ฒด๋ก ๋ง๋ ๋ค.
- ๊ฐ์ฒด์งํฅ์ธ์ด์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์งํฅ ์ธ์ด๊ฐ ๊ฐ๋ ์บก์ํ, ๋คํ์ฑ , ์์ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)์ด๋?
์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ ํจ๋ฌ๋ค์ ์ค ํ๋๋ก ํ๋ก๊ทธ๋๋ฐ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํ์์ผ ์ํ์ ํ์๋ฅผ ๊ฐ์ง ‘๊ฐ์ฒด’๋ก ๋ง๋ค๊ณ ๊ฐ์ฒด๋ค์ ์ ๊ธฐ์ ์ธ ์ํธ์์ฉ์ ํตํด ๋ก์ง์ ๊ตฌ์ฑํ๋ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ๋ฒ์ ๋งํ๋ค.
๐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ์ ์?
- ์ฝ๋ ์ฌ์ฌ์ฉ ๊ฐ๋ฅ : ๋จ์ด ๋ง๋ ํด๋์ค ๊ฐ์ ธ์์ ์ด์ฉํ๊ฑฐ๋ ์์ ๊ฐ๋ฅ
- ์ ์ง๋ณด์๊ฐ ์ฌ์ : ํด๋์ค ๋ด๋ถ์ ์กด์ฌํ๋ ๋ฉ์๋, ๋ณ์๋ง ์ฐพ์์ ์์ ํ๋ฉด ๋จ
- ๋ํ ํ๋ก์ ํธ์ ์ ํฉ : ํ๋ก์ ํธ๋ฅผ ํด๋์ค ๋จ์๋ก ๋ชจ๋ํ์์ผ ๊ฐ๋ฐ๊ฐ๋ฅ → ์ ๋ฌด๋ถ๋ด์ ์ฉ์ด
๐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋จ์ ์?
- ์ฒ๋ฆฌ์๋๊ฐ ์๋์ ์ผ๋ก ๋๋ฆผ
- ๊ฐ์ฒด๊ฐ ๋ง์์ง๋ฉด ์ฉ๋์ด ์ปค์ง ์๋ ์์
- ์ค๊ณ ์ ๋ง์ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ด ํ์
๐ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ์ง๋ ํน์ง์?
- ํด๋์ค + ์ธ์คํด์ค
- ์ถ์ํ
- ์บก์ํ
- ์์
- ๋คํ์ฑ
3. ํจ์์ ์คํ์ผ ์ฝ๋ฉ ์ง์
- ํจ์์ ํ๋ก๊ทธ๋๋ฐ์ ์ํด ์๋ฐ 8๋ถํฐ ๋๋ค์์ ์ง์
- ๋๋ค์์ ์ฌ์ฉํ๋ฉด ์ปฌ๋ ์ ์์๋ฅผ ํํฐ๋ง, ๋งคํ, ์ง๊ณ์ฒ๋ฆฌํ๋๊ฒ ์ฌ์์ง๊ณ ์ฝ๋๋ ๊ฐ๊ฒฐํด์ง
4. ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ ๊ด๋ฆฌ
- C++์ ๊ฒฝ์ฐ, ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํ๊ธฐ ์ํด ๊ฐ๋ฐ์๊ฐ ์ง์ ์ฝ๋๋ก ์ ๊ฑฐํด์ผํ๋ค. ์ด ์์ ์ ๊ฐ๋ฐ์๊ฐ ์ ์ฒ๋ฆฌํด์ฃผ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ด ๋ถ์์ ํด์ง๊ฑฐ๋ ๊ฐ์๊ธฐ ๋ค์ด๋๋ ํ์ ๋ฐ์
- ์๋ฐ์ ๊ฒฝ์ฐ, ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ ์ ์๊ฒ ๋ง๋ค๊ณ ์๋ฐ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํ๊ฒ ๋๋ค. ๊ฐ์ฒด ์์ฑ ์ ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ์ฐพ์ ํ ๋นํด์ฃผ๊ณ ์ฌ์ฉ์ด ์๋ฃ๋๋ฉด Garbage Collector ๋ฅผ ์คํ์์ผ ์๋์ ์ผ๋ก ์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํด์ค๋ค. → ๊ฐ๋ฐ์์ ์ ์ฅ์์๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ์๊ณ ๋ฅผ ๋๊ณ ํต์ฌ๊ธฐ๋ฅ ์ฝ๋ ์์ฑ์ ์ง์คํ ์ ์๋ค.
5. ๋ค์ํ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ ๊ฐ๋ฅ
- ์๋ฐ๋ ์๋์ฐ, ๋ฆฌ๋ ์ค, ์ ๋์ค ๋ฑ ๋ค์ํ ์ด์์ฒด์ ์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๋ค. ๋จ์ํ ์ฝ์ ํ๋ก๊ทธ๋จ๋ถํฐ ์์ํด ํด๋ผ์ด์ธํธ์ฉ ์ดํ๋ฆฌ์ผ์ด์ , ์๋ฒ์ฉ ์น ์ดํ๋ฆฌ์ผ์ด์ , ๋ชจ๋ฐ์ผ ์๋๋ก์ด๋ ์ฑ๊น์ง ๋ค์ํ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ ์ ์๋ค.
6. ๋ฉํฐ์ฐ๋ ๋๋ฅผ ์ฝ๊ฒ ๊ตฌํ ๊ฐ๋ฅ
- ํ๋์ ํ๋ก๊ทธ๋จ์ด ๋์์ ์ฌ๋ฌ ์์ ์ ์ฒ๋ฆฌํด์ผํ๋ ๊ฒฝ์ฐ, ๋์ฉ๋ ์์ ์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์๋ธ์์ ์ผ๋ก ๋ถ๋ฆฌํด์ ๋ณ๋ ฌ์ฒ๋ฆฌํ๋ ค๋ฉด ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ด ํ์ํ๋ค
- ์๋ฐ๋ ์ฐ๋ ๋ ์์ฑ ๋ฐ ์ ์ด์ ๊ด๋ จ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ API๋ฅผ ์ ๊ณตํ๊ณ ์๊ธฐ ๋๋ฌธ์ ์คํ๋๋ ์ด์์ฒด์ ์ ์๊ด์์ด ์ฐ๋ ๋๋ฅผ ์ฝ๊ฒ ๊ตฌํํ ์ ์๋ค.
7. ๋์ ๋ก๋ฉ(Dynamic Loading)์ ์ง์
- ์ดํ๋ฆฌ์ผ์ด์ ์ด ์คํ๋ ๋ ๋ชจ๋ ๊ฐ์ฒด๊ฐ ํ ๋ฒ์ ์์ฑ๋์ง ์๊ณ , ๊ฐ์ฒด๊ฐ ํ์ํ ์์ ์ ํด๋์ค๋ฅผ ๋์ ๋ก๋ฉํด์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- ๊ฐ๋ฐ์ด ๋๋ ํ ์ ์ง๋ณด์๋ฅผ ํด์ผํ๋ ์ํฉ์์๋ ํด๋น ํด๋์ค๋ง ์์ ํ๋ฉด ๋๋ฏ๋ก ์ ์ฒด ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ค์ ์ปดํ์ผํ ํ์๊ฐ ์๋ค. → ์ ์ง๋ณด์๊ฐ ๋น ๋ฅด๊ณ ๊ฐํธ
8. ํ๋ถํ ์คํ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์๋ฐ๋ ์คํ์์ค ์ธ์ด๋ผ ์๋ฐ๋ก ๋ง๋ค์ด์ง ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ต์ฅํ ๋ง์
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด ์๊ฐ๊ณผ ๋น์ฉ์ ์ค์ด๊ณ ์์ค ๋์ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์๋ค.
9. ์๋ฐ ์ฝ๋ ์คํ ๊ณผ์
1. ๊ฐ๋ฐ์๊ฐ ์ด ์๋ฐ ์ฝ๋(.java)๊ฐ ์๋ฐ ์ปดํ์ผ๋ฌ๋ฅผ ๊ฑฐ์น๋ฉด์ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ก ์ปดํ์ผ ๋๋ค.
2. ์ปดํ์ผ๋ ๋ฐ์ดํธ ์ฝ๋๋ฅผ JVM์ ํด๋์ค ๋ก๋ (Class Loader) ๋ก ์ ๋ฌ
3. ํด๋์ค๋ก๋๋ ๋์ ๋ก๋ฉ์ ํตํด ํ์ํ ํด๋์ค๋ค์ ๋ก๋ฉ ๋ฐ ๋งํฌํด ๋ฐํ์ ๋ฐ์ดํฐ ์์ญ์ธ JVM์ ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฐ๋ค.
4. ์คํ์์ง์ JVM๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ผ์จ ๋ฐ์ดํธ ์ฝ๋๋ค์ ๋ช ๋ น์ด ๋จ์๋ก ํ๋์ฉ ๊ฐ์ ธ์์ ์คํ
๋ฐ์ํ