JVM
- Java Virtual Machine
- ์ฌ๋ฌ๊ฐ์ง ๊ธฐ๊ธฐ์์ Java ํ๋ก๊ทธ๋จ์ ์คํ์ํฌ ์ ์๋ ๊ฐ์์ ๊ธฐ๊ธฐ๋ฅผ ๋ง๋ค์ด์ฃผ๋ ๊ฒ์ ์๋ฏธ
๐ก Java ์ปดํ์ผ๋ฌ๋?
์์ฑํ Java ์ฝ๋(.java ํ์ผ)์ ์ด์์ฒด์ ๊ฐ ์ฝ์ ์ ์๋ ๋ฐ์ดํธ ์ฝ๋(.class ํ์ผ)๋ก ๋ณํํ๋ ๋ณํ๊ธฐ
- ์ธํฐํ๋ฆฌํฐ ๐
Java .class ์ฝ๋ ํด์๊ธฐ- ์ด์์ฒด์ ๊ฐ ์ฝ์ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๊ธฐ๊ธฐ(๊ธฐ๊ณ)๊ฐ ์คํํ ์ ์๋ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญ
- JIT ์ปดํ์ผ๋ฌ ๐
๋น ๋ฅธ Java .class ์ฝ๋ ํด์๊ธฐ- ์ธํฐํ๋ฆฌํฐ์ ํจ์จ์ ๋์ฌ์ฃผ๋ ์ํฌํฐ ํด์๊ธฐ
- ๋ฉ๋ชจ๋ฆฌ ์์ญ ๐๏ธ
Java ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์์ญ- ์ด์์ฒด์ ๋ก๋ถํฐ JVM์ด ํ ๋น๋ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ญ
- ํด๋์ค ๋ก๋ ๐
Java .class ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋ด๋ ์ด๋ฐ๊ธฐ- JVM์ผ๋ก class(๋ฐ์ดํธ ์ฝ๋)๋ฅผ ๋ถ๋ฌ์์ ๋ฉ๋ชจ๋ฆฌ๐๏ธ์ ์ ์ฅํจ
- ๊ฐ๋น์ง ์ปฌ๋ ํฐ ๐งน
Java ์ฐ๋ ๊ธฐ ์ฒญ์๊ธฐ- ๋ฉ๋ชจ๋ฆฌ ์์ญ์์ ์์ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ธฐ์ ์ผ๋ก ํก์ํด๊ฐ๋ ์ฒญ์๊ธฐ
JRE?
Java Runtime Environment ์ฆ, ์๋ฐ ์คํ ํ๊ฒฝ์ด๋ผ๋ ๋ป
JRE๋ .class
ํ์ผ๋ง ์คํ ๊ฐ๋ฅํฉ๋๋ค. JDK๊ฐ javac
๋ช
๋ น์ ํตํด .java
ํ์ผ์ ์คํ๊ฐ๋ฅํ .class
ํ์ผ์ ๋ณํํด์ค๋๋ค.
JDK?
Java Development Kit ์ฆ, ์๋ฐ ๊ฐ๋ฐ ํคํธ๋ผ๋ ๋ป
JDK๋ JRE(JVM)์ ๊ธฐ๋ฅ์ ํฌํจํ๊ณ ์๊ณ , .java
ํ์ผ๋ค์ .class
ํ์ผ๋ค๋ก ๋ณํํด์ฃผ๋ Java Compiler(javac) ๊ธฐ๋ฅ, ์ฝ๋๋ฅผ ๋๋ฒ๊น
ํ๋ jdb๋ฑ์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
๋ณ์
๋ณ์์ ์์
- ๋ณ์ : ๋ณํ๋ ์ ์ฅ ๊ณต๊ฐ
int number = 10; // 1. ๋ณ์๋ก ์ ์ธ ๋ฐ ์ด๊ธฐํ number = 11; // 2. ๋ณ์์ ๊ฐ์ ๋ฐ๊พผ๋ค(๋ฎ์ด์ฐ๊ธฐ)
- ์์ : ๋ณํ์ง ์๋ ์ ์ฅ ๊ณต๊ฐ
final int number = 10; //1. ์์๋ก ์ ์ธ(final) number = 11; // e2. ๊ฐ์ ๋ฐ๊พธ๋ ค๊ณ ํ๋ฉด ์๋ฌ ๋ฐ์!
๋ณ์์ ์ข ๋ฅ
- ๊ธฐ๋ณธํ ๋ณ์
- ์ฐธ์กฐํ ๋ณ์
- ๋ค๋ฅธ ๊ธฐ๋ณธํ ๋ณ์๊ฐ ์ค์ ๊ฐ์ ์ ์ฅํ๋ ์ ์ฅ๊ณต๊ฐ์ด๋ผ๋ฉด, ์ฐธ์กฐํ ๋ณ์๋ ์ค์ ๊ฐ์ด ์๋ ์๋ณธ๊ฐ์ ์ฃผ์๊ฐ์ ์ ์ฅ
- == ์ฃผ์ํ ๋ณ์
- ์ ์ฅ ๊ด์ ์์์ ์ฐจ์ด์
- ๊ธฐ๋ณธํ : ์๋ณธ๊ฐ์ด Stack ์์ญ์ ์กด์ฌ
- ์ฐธ์กฐํ : ์๋ณธ๊ฐ์ด Heap ์์ญ์ ์กด์ฌ
- Stack ์์ญ์๋ ๋ฐ๋ก ์ ์ฅํด๋ ์๋ณธ๊ฐ์ Heap ์์ญ์ฃผ์๋ฅผ ์ ์ฅ
Stack ์์ญ vs Heap ์์ญ
Stack์ ๊ฒฝ์ฐ์๋ ์ ์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
๊ทธ๋์, ํฌ๊ธฐ๊ฐ ๋ช byte์ธ์ง ์ ํด์ ธ ์๋ ๊ธฐ๋ณธํ ๋ณ์๋ฅผ ์ ์ฅํฉ๋๋ค.
์ถ๊ฐ๋ก, ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์๋ ์ฐธ์กฐํ ๋ณ์์ ์ฃผ์ ๊ฐ๋ ์ ์ฅํฉ๋๋ค.
Heap์ ๊ฒฝ์ฐ์๋ ๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ
๊ทธ๋์ ํฌ๊ธฐ๊ฐ ๊ณ์ ๋์ด๋ ์ ์๋ ์ฐธ์กฐํ ๋ณ์์ ์๋ณธ์ ์ ์ฅํฉ๋๋ค.
- ๋ํผ ํด๋์ค ๋ณ์
- ๋ฐ์ฑ vs ์ธ๋ฐ์ฑ
- ๊ธฐ๋ณธ ํ์ ์์ ๋ํผ ํด๋์ค ๋ณ์๋ก ๊ฐ์ธ๋ ๊ฒ์ ๋ฐ์ฑ
- ๋ํผ ํด๋์ค ํธ์๋ฅผ ๊ธฐ๋ณธ ํ์ ๋ณ์๋ก ๊ฐ์ ธ์ค๋ ๊ฒ์ ์ธ๋ฐ์ฑ
- ๋ฐ์ฑ vs ์ธ๋ฐ์ฑ
๋ํผ ํด๋์ค ์ฌ์ฉํ๋ ์ด์
ํด๋์ค๋ ๊ฐ์ฒด์งํฅ ์ธ์ด์ธ JAVA์ ํต์ฌ ๊ธฐ๋ฅ, ํด๋์ค๋ก ๋ณ์๋ฅผ ๊ด๋ฆฌํ๋ฉด ๊ฐ์ฒด์งํฅ์ ๋ง์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ธฐ๋๋ฌธ!
'๋ด์ผ๋ฐฐ์์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA 5์ฃผ์ฐจ: ์ฐ๋ ๋ (2) | 2023.10.23 |
---|---|
JAVA 4์ฃผ์ฐจ: ์ ๋ค๋ฆญ (0) | 2023.10.23 |
JAVA 4์ฃผ์ฐจ: ์์ธ์ฒ๋ฆฌ (1) | 2023.10.19 |
JAVA 3์ฃผ์ฐจ: ํด๋์ค, ์์, ์ธํฐํ์ด์ค (1) | 2023.10.18 |
JAVA 2์ฃผ์ฐจ: ์ฐ์ฐ์, ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ, ๋ฐฐ์ด, ์ปฌ๋ ์ (0) | 2023.10.17 |