JVM ์คํ๊ณผ์ ํด์
1. ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด JVM์ OS๋ก๋ถํฐ ์ด ํ๋ก๊ทธ๋จ์ด ํ์๋ก ํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๋๋ค. (JVM์ ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฉ๋์ ๋ฐ๋ผ ์ฌ๋ฌ ์์ญ์ผ๋ก ๋๋์ด ๊ด๋ฆฌํ๋ค.)
2. ์๋ฐ ์ปดํ์ผ๋ฌ(javac)๊ฐ ์๋ฐ ์์ค์ฝ๋(.java)๋ฅผ ์ฝ์ด๋ค์ฌ ์๋ฐ ๋ฐ์ดํธ์ฝ๋(.class)๋ก ๋ณํ์ํจ๋ค.
3. Class Loader๋ฅผ ํตํด classํ์ผ๋ค์ JVM์ผ๋ก ๋ก๋ฉํ๋ค.
4. ๋ก๋ฉ๋ classํ์ผ๋ค์ Execution engine์ ํตํด ํด์๋๋ค.
5. ํด์๋ ๋ฐ์ดํธ์ฝ๋๋ Runtime Data Areas์ ๋ฐฐ์น๋์ด ์ค์ง์ ์ธ ์ํ์ด ์ด๋ฃจ์ด์ง๊ฒ ๋๋ค.
6. ์คํ๊ณผ์ ์์์ JVM์ ํ์์ ๋ฐ๋ผ Thread Synchronization๊ณผ GC๊ฐ์ ๊ด๋ฆฌ์์ ์ ์ํํ๋ค.
JVM ๊ตฌ์กฐ
- ์ฐธ๊ณ : JVM, JRE, JDK ์์๋ณด๊ธฐ*
- ์ถ์ฒ : JVM์ ํน์ง, ๊ตฌ์กฐ, ์คํ๊ณผ์ *
- ์ถ์ฒ : JVM ์ดํดํ๊ธฐ** : ํด๋์ค๋ก๋, ๋ฉ๋ชจ๋ฆฌ, ์คํ์์ง
[์๋ฐ์ ์ ์ - ๊ธฐ์ดํธ] ch1-5~6 ์๋ฐ ๊ฐ๋ฐ ๋๊ตฌ์ ์ค์น์ ์ค์ - Windows
๐ ํ๊ฒฝ๋ณ์๋ฅผ Path์ ๋ฑ๋กํ๊ธฐ!
- ํ๊ฒฝ๋ณ์๋? : ์์ฝ - ๊ธฐ๋ณธ ๊ฐ๋ฐ์ฉ์ด ์์๋ณด๊ธฐ (7๋ถ 15์ด) | blog: ํ๊ฒฝ๋ณ์๋? ํ๊ฒฝ๋ณ์์ path
- ๐ : 'ํ๊ฒฝ'์ ์ํํธ์จ์ด๊ฐ ๋์ํ๋ ๊ณต๊ฐ! (์: ์ปดํจํฐ) 'ํ๊ฒฝ ๋ณ์'๋ ๊ฐ ์ปดํจํฐ์ ๊ฐ๋ณ์ ์ผ๋ก ์กด์ฌํ๋ ๋ค์ํ ์ฃผ์๋ค์ ๊ฐ์ด๊ตฌ๋! (์: ํ๊ด๋น๋ฒ)
- ํ๊ฒฝ๋ณ์ ๋ฑ๋ก ๋ฐฉ๋ฒ :
1. JDK๋ฅผ ์ค์นํ ๊ฒฝ์ฐ ๋ก์ปฌ๋์คํฌ C์ ์์ถํด์ ํ ํด๋๋ฅผ ์ด๋์ํจ๋ค. (jdk ํด๋ ์ด๋ฆ์ jdk1.8๋ก ์์ ํ๋ฉด ๊ฒฝ๋ก ์ค์ ์ด ๋ ์ฝ๋ค.)
2. JDK ํด๋ ์์ bin ํด๋์ javac(์๋ฐ ์ปดํ์ผ๋ฌ).exe ํ์ผ์ด ์กด์ฌํ๋์ง ํ์ธํ๋ค. ์กด์ฌํ๋ค๋ฉด bin ํด๋์ ์ฃผ์๋ฅผ ๋ณต์ฌํ๋ค.
3. ์์คํ
- ๊ณ ๊ธ ์์คํ
์ค์ - ํ๊ฒฝ ๋ณ์ - ์์คํ
๋ณ์์์ Path๋ฅผ ํ์ธํ๊ณ ํธ์ง์ ํด๋ฆญํ๋ค.
4. ์๋ก๋ง๋ค๊ธฐ - bin ํด๋๊น์ง์ ๊ฒฝ๋ก(๋ด ๊ฒฝ์ฐ C:\jdk1.8\bin
)๋ฅผ ๋ฑ๋กํ๋ค.
5. ํ๊ฒฝ๋ณ์ ์ค์ ๋!
- ํ๊ฒฝ๋ณ์ ์ค์ ์ด์ :
- ์ฐธ๊ณ : ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๋ ์ด์ , ํ๊ฒฝ ๋ณ์ Path
- ๐ฏ ํ๊ฒฝ ๋ณ์๊ฐ ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น? : JDK์ bin ํด๋ ์์ ์๋ ์คํํ์ผ javac.exe ์ ํตํด ํ์ฅ์ .java ํ์ผ์ .class ํ์ผ๋ก ์ปดํ์ผ(๊ธฐ๊ณ๊ฐ ์ดํดํ ์ ์๊ฒ ์ธ์ด ๋ณํ)ํด์ค๋ค๊ณ ๊ฐ์ ํด๋ณด์.
โบ๏ธ Hello.java๋ผ๋ ํ์ผ์ ํ
์คํธ๋ก ๋ง๋ค์ด์ค๋ค.
โบ๏ธ Hello.java ํ์ผ์ JDK ํด๋ ์์ ๋ ๋ค๋ฅธ ํด๋ work๋ฅผ ๋ง๋ค์ด ๊ทธ ์์ ์ฎ๊ฒจ์ค๋ค.
โบ๏ธ ๋ช
๋ นํ๋กฌํํธ๋ฅผ ์คํํ๋ค.
โบ๏ธ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ค. javac Hello.java
โก javac์(๋) ๋ด๋ถ ๋๋ ์ธ๋ถ ๋ช
๋ น, ์คํํ ์ ์๋ ํ๋ก๊ทธ๋จ, ๋๋ ๋ฐฐ์น ํ์ผ์ด ์๋๋๋ค.
โบ๏ธ JDK์ ์๋ฐ์ปดํ์ผ๋ฌ ์คํํ์ผ์ธ javac๊ฐ ๋์ํ์ง ์์ ๊ฒ์ด๋ค.
โบ๏ธ ์ปดํจํฐ๊ฐ javac.exe
์ ์์น๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ ์ผ์ด๋ค.
โบ๏ธ ๋ฐ๋ผ์ ํ๊ฒฝ๋ณ์ Path์ ์คํํ์ผ์ ์์น๋ฅผ ์ค์ ํด๋์ง ์์ผ๋ฉด ๋ค์์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํด ์ปดํ์ผ๋ฌ ํ์ผ์ ์คํํด์ผ ํ๋ค. (ํด๋น work ๋๋ ํ ๋ฆฌ๋ก cdํ ์ํ์์ C:\jdk1.8\work>)c:\jdk1.8\bin\javac Hello.java
โก Hello.java ํ์ผ์ด Hello.class ํ์ผ๋ก ์ปดํ์ผ ๋๋ค!
โบ๏ธ์ด์ JDK๊ฐ java.exe
ํ์ผ์ ์ฌ์ฉํด class ํ์ผ์ ์ฝ์ด์ ๋ช
๋ น์ ์คํํ ์ ์๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก (ํด๋น work ๋๋ ํ ๋ฆฌ๋ก cdํ ์ํ์์-C:\jdk1.8\work>) c:\jdk1.8\bin\java Hello
โก ํด๋น Hello.class์ 2์ง ์ธ์ด๋ฅผ ๋ถ์ํด ์๋ฐ๊ฐ ๋ช
๋ น์ ์ํํ๋ค!
โบ๏ธ ๊ทธ๋ฐ๋ฐ javac.exe
์ java.exe
ํ์ผ์ ๋ชจ๋ c:\jdk1.8\bin\
์์ ์๋ค. ํญ์ ํด๋น ๊ฒฝ๋ก๋ฅผ ์
๋ ฅํด์ ๋ ํ์ผ์ ์คํ์์ผ์ผ ํ๋๊ฑธ๊น? ์ ๋ต์ ๊ทธ๋ ์ง ์๋ค.
โบ๏ธ ์์คํ
ํ๊ฒฝ ๋ณ์ ํธ์ง์ ํตํด Path์ c:\jdk1.8\bin\
๋ฅผ ๋ฑ๋กํด์ค๋ค๋ฉด, ํด๋น ํด๋ ์์ ์กด์ฌํ๋ javac.exe
์ java.exe
๋ฅผ ๋ชจ๋ ์ฐพ์ ์คํํ์ผ์ ๋์์ํจ๋ค.
โบ๏ธ c:\jdk1.8\bin\javac Hello.java
= javac Hello.java
โบ๏ธ c:\jdk1.8\bin\java Hello
= java Hello
โบ๏ธ Path ํ๊ฒฝ๋ณ์ ์ค์ ์ ํตํด ์คํํ์ผ์ ์์น๋ฅผ ์ผ์ผ์ด ์ฐพ์๊ฐ๋ฉฐ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ ์๊ณ ๋ก์์ ์ค์ผ ์ ์๊ฒ ๋ ๊ฒ์ด๋ค!
* ์ด์์ฒด์ ๊ฐ ์ด๋ ํ ๋ช ๋ น์ ๋ฐ์์ ๋์ ๋์
1. ํ์ฌ ์์นํ ๋๋ ํ ๋ฆฌ์ ํด๋น ๋ช ๋ น์ด๊ฐ ์๋์ง ํ์ธํ๋ค. (์๋ ๊ฒฝ์ฐ ์คํํ๊ณ ์๋ ๊ฒฝ์ฐ 2๋ฒ์ผ๋ก ๋์ด๊ฐ๋ค.)
2. Path๋ผ๋ ํ๊ฒฝ๋ณ์๊ฐ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ ๊ฒฝ๋ก์ ๋ํด์ ์ ๋ ฅ๋ ๋ช ๋ น์ด๊ฐ ์กด์ฌํ๋์ง ํ์ํ๋ค.
3. ๋ช ๋ น์ด๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ์คํํ๋ค. ๋ฐ๊ฒฌํ์ง ๋ชปํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์๋ฌ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ค.javac์(๋) ๋ด๋ถ ๋๋ ์ธ๋ถ ๋ช ๋ น, ์คํํ ์ ์๋ ํ๋ก๊ทธ๋จ, ๋๋ ๋ฐฐ์น ํ์ผ์ด ์๋๋๋ค.
- ์ถ์ฒ : ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๋ ์ด์ , ํ๊ฒฝ ๋ณ์ Path
์๊ฐ๋ณด๋ค ๋ธ๋ก๊ทธ ์ ๋ฆฌ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค. ์ข ๋ ๋์ ๋ฐฉํฅ์ ์ฐพ์๋ด์ผ๊ฒ ๋ค.