Write Once, Run Anywhere
Java ํ๋ก๊ทธ๋จ์ด ๋์ํ๋ ์๋ฆฌ
Java ํ๋ก๊ทธ๋จ์ด ์ด๋ป๊ฒ ์คํ๋๋์ง ์ดํดํ๋ ค๋ฉด, ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์ฝ๋๊ฐ ๊ธฐ๊ณ์ด๋ก ๋ณํ๋์ด ํ๋ก์ธ์ค๋ก ์คํ๋๋ ๊ณผ์ ์ ์ดํด๋ด์ผ ํ๋ค.
Java ์ฝ๋ ์์ฑ๊ณผ ์ปดํ์ผ
- Java ์ฝ๋(.java): ๊ฐ๋ฐ์๊ฐ ์์ฑํ ์์ค ์ฝ๋๋ ์ฌ๋์ด ์ฝ์ ์ ์๋ ํํ์ด๋ค.
- ์ปดํ์ผ(Compile): ์๋ฐ ์ปดํ์ผ๋ฌ(Javac)๋ฅผ ํตํด ์ด ์์ค ์ฝ๋๋ฅผ ๋ฐ์ดํธ์ฝ๋ (.class)ํ์ผ๋ก ๋ณํํ๋ค.
- ๋ฐ์ดํธ์ฝ๋๋ ์ด์์ฒด์ ๋ ํ๋์จ์ด์ ์์กดํ์ง ์๊ณ , JVM์์ ์คํ๋ ์ ์๋๋ก ์ค๊ณ๋ ์ค๊ฐ ์ฝ๋์ด๋ค.
JVM(Java Virtual Machine)
- JVM์ ์ญํ : ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฐ์ ๋จธ์ ์ผ๋ก, ์ด์์ฒด์ ์ ๋ง๋ ๊ธฐ๊ณ์ด๋ก ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋ณํํ๋ค. JVM์ Java ํ๋ก๊ทธ๋จ์ด ์ด๋ค ์ด์์ฒด์ ์์๋ ์คํ๋ ์ ์๊ฒ ํด์ค๋ค.
- ์ธํฐํ๋ฆฌํฐ: JVM์ ๋ฐ์ดํธ์ฝ๋๋ฅผ ํ ์ค์ฉ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ์คํํ๋ค
- JIT(Just-In-Time) ์ปดํ์ผ๋ฌ: ํ๋ก๊ทธ๋จ ์คํ ์ค ์ฑ๋ฅ์ ํฅ์์ํค๊ธฐ ์ํด ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ๋ ๋น ๋ฅด๊ฒ ์คํํ๋ค.
์์ฝํ์๋ฉด
1. ๊ฐ๋ฐ์๊ฐ Java ์์ค ์ฝ๋(.java)๋ฅผ ์์ฑํ๋ค.
2. ์๋ฐ ์ปดํ์ผ๋ฌ(Javac)๊ฐ ์ฝ๋๋ฅผ ๋ฐ์ดํธ์ฝ๋(.class)๋ก ๋ณํํ๋ค.
3. JVM์ด ๋ฐ์ดํธ์ฝ๋๋ฅผ ๋ฐ์์ ๊ธฐ๊ณ์ด๋ก ๋ณํํ๊ณ ์คํํ๋ค.
JDK์ JRE
JRE (Java Runtime Environment): Java๋ฅผ "์คํ"ํ๊ธฐ ์ํ ๋ชจ๋ ๊ฒ
Java ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ ์ํ ํ๊ฒฝ์ด๋ค. JRE์๋ JVM๊ณผ Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ(API)๊ฐ ํฌํจ๋์ด ์์ด, ์๋ฐ ํ๋ก๊ทธ๋จ์ ์คํํ ์ ์๊ฒํด์ค๋ค. ์ด๋ฏธ ์ปดํ์ผ๋ Java ํ๋ก๊ทธ๋จ์ ์คํ๋ง ํ ๋๋ JRE๋ง ์์ด๋ ๋๋ค.
Javascript Runtime Environment 2๊ฐ์ง ์ข ๋ฅ๋ฅผ ์๊ฐํด๋ณด์
- Web Browser(V8 ๊ธฐ๋ฐ Chrome) = Web API + Javascript Engine
- Web Server(V8 ๊ธฐ๋ฐ Chrome) = Node API (+LIBUV) + Javascript Engine
Java Runtime Environment์์๋ ์ Javascript์ ๊ตฌ์ฑ์ ๋์ผํ๋ค.
- JRE = Other Libraries(API) + JVM (Java Virtual Machine)
JDK (Java Development Kit): JRE + Java "๊ฐ๋ฐ"์ ์ํ ๋ชจ๋ ๊ฒ
Java ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ธฐ ์ํ ๋๊ตฌ ์ธํธ์ด๋ค. JDK์๋ ์๋ฐ ์ปดํ์ผ๋ฌ(Javac)์ JRE๋ฅผ ํฌํจํ๋ค.
๋ฐ๋ผ์, Java ๊ฐ๋ฐ์๋ค์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ปดํ์ผํ ๋ JDK๊ฐ ํ์ํ๋ค.
JDK์ JRE์ ์ฐจ์ด๋ฅผ ๋ช ํํ ์์์ผ ๋์ค์ ๋ฆฌ๋ ์ค ๋๋ Docker ์ปจํ ์ด๋์์์ ์ดํด๊ฐ ์ฌ์์ง ์ ์๋ค.
- Java๋ฅผ "๊ฐ๋ฐ"ํ๊ณ ์ถ๋ค : JDK ์ค์น
- IntelliJ IDE๋ฅผ ํตํด ์๋ฐ ๊ฐ๋ฐ์ ํ๊ณ ์ถ๋ค๋ฉด, ์๋ฐ ๊ฐ๋ฐ์ ํ์ํ ๋ชจ๋ ๋๊ตฌ๊ฐ ํ์ํ๊ธฐ์ JDK๋ฅผ ์ค์นํด์ผํ๋ค.
- ๋ฆฌ๋
์ค ํน์ Docker์ ์ปจ๋ฐ์ด๋์์ ์๋ฐ๋ฅผ ๋น๋ํ๊ธฐ ์ํด์๋ JDK๋ฅผ ์คํํด์ผํ๋ค.
- Dockerfile ๋ด์์ ์๋ฐ๋ฅผ ๋น๋๋งํ ์ ์๊ณ , ์๋ฐ๋ฅผ ๋น๋ํ๊ณ ๊ตฌ๋๊น์ง ํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
- Java๋ฅผ"๊ตฌ๋, ์คํ" ์ํค๊ณ ์ถ๋ค: JRE ์ค์น
- ๋ฆฌ๋
์ค ํน์ Docker์ ์ปจํ
์ด๋์์ ์๋ฐ๋ฅผ ๊ตฌ๋ํ๊ธฐ ์ํด์๋ JRE๋ฅผ ์ค์นํ๋ค.
- Docker Image ์ ์๋ฐฉ์ = Dockerfile ์ ์ ๋ฐฉ์ (์๋ฐ ๊ตฌ๋์ ์ผ๋ฐ์ ์ผ๋ก Gradle Run์ผ๋ก ์คํํ๋ค.)
- ๋ฆฌ๋
์ค ํน์ Docker์ ์ปจํ
์ด๋์์ ์๋ฐ๋ฅผ ๊ตฌ๋ํ๊ธฐ ์ํด์๋ JRE๋ฅผ ์ค์นํ๋ค.
โน๏ธ์ฐธ๊ณ
[ASAC 6๊ธฐ ๊ฐ์์๋ฃ]
https://steady-snail.tistory.com/67
https://choicode.tistory.com/17
'๐ปDEV-STUDY > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] Final๊ณผ Static (2) | 2024.09.30 |
---|---|
[Java] Collection (0) | 2024.09.28 |
[Java] ๊ฐ์ฒด ์์ฑํ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ (0) | 2024.09.25 |
[Java] JVM (Java Virtual Machine) (3) | 2024.09.25 |
[Java] Exception ์์ธ์ฒ๋ฆฌ (0) | 2024.09.25 |