๐ข ๊ฐ์
๋ณธ ํฌ์คํ ์ ์ ์ฉ๊ถ, ์๊ฒฝ๊ท ๋์ ์ด๊ฒ์ด ์๋ฐ๋ค ์์ ๊ณผ ๋ฐฑ๊ธฐ์ ๋์ ์๋ฐ ๊ธฐ์ด ์คํฐ๋๋ฅผ follow-up ํ๋ค.
๐ ๋ชฉ์ฐจ
- ๊ณ ๊ธ ์ธ์ด์ ์ ๊ธ ์ธ์ด
- ์ปดํ์ผ
- ๋ฐ์ดํธ ์ฝ๋
- JVM
1. ๊ณ ๊ธ ์ธ์ด์ ์ ๊ธ ์ธ์ด
ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๊ณ ๊ธ ์ธ์ด์ ์ ๊ธ ์ธ์ด๋ก ๊ตฌ๋ถ๋๋ค.
๊ณ ๊ธ ์ธ์ด๋ ์ฌ๋์ด ์ฝ๊ฒ ์ดํดํ ์ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋ฅผ ๋งํ๋ฉฐ, ๊ณ ๊ธ ์ธ์ด๋ก ์์ฑ๋ ์์ค ํ์ผ์ ์ปดํจํฐ๊ฐ ๋ฐ๋ก ์ดํดํ ์ ์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ์ด๋ผ๋ ๊ณผ์ ์ ํตํด์ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ๊ธฐ๊ณ์ด๋ก ๋ณํ ํ ์ปดํจํฐ๊ฐ ์ฌ์ฉํ๊ฒ ๋๋ค. ๋ฐ๋๋ก ์ ๊ธ ์ธ์ด๋ ๊ธฐ๊ณ์ด์ ๊ฐ๊น์ด ์ธ์ด ๋ฅผ ๋งํ๋ฉฐ, ๋ํ์ ์ผ๋ก ์ด์
๋ธ๋ฆฌ์ด๊ฐ ์ ๊ธ ์ธ์ด์ ์ํ๋ค.
๋ด๊ฐ ์์ผ๋ก ๊ณต๋ถํ๊ฒ ๋ ์๋ฐ๋ ์ฌ๋์ด ์ดํดํ๊ธฐ ์ฌ์ด ๊ณ ๊ธ ์ธ์ด์ ์ํ๋ฉฐ, ๊ณ ๊ธ ์ธ์ด๋ก ์์ฑ๋ ์์ค ์ฝ๋(.java) ๋ฅผ ์ปดํ์ผ๋ฌ๋ฅผ ํตํด ๋ฐ์ดํธ ์ฝ๋(.class) ๋ก ๋ณํ ํ, JVM์ด๋ผ๋ ๊ฐ์ ๋จธ์ ์ ํตํด ์คํ๋๋ค.
2. ์ปดํ์ผ
์์
์ ํตํด ์๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ ์๊ฐํด ๋ณธ ์ฌ๋์ด๋ผ๋ฉด ์๋ง ํ ๋ฒ์ฏค์ ์ปค๋งจ๋ ์ฐฝ์ ํตํด ์ปดํ์ผ์ ํด๋ณด์ง ์์์๊น ์ถ๋ค.
์ดํด๋ฅผ ๋๊ธฐ ์ํด ์ปดํ์ผ ๊ณผ์ ์ ์ง์ ๊ฒฝํํด๋ณด์.
2-1. ํด๋์ค๋ฅผ ์์ฑํด๋ณด์
๋ณธ์ธ์ Hello World! ๋ฅผ(๋๋ํ ์์ผ๋ฉด ์ญํจ) ์ถ๋ ฅํ๋ ๊ฐ๋จํ Main ํด๋์ค ํ๋๋ฅผ ์์ฑํ๋ค.
๊ทธ๋ฆฌ๊ณ ํน์ ๊ฒฝ๋ก์ Main.java* ๋ผ๋ ์ด๋ฆ์ผ๋ก ํ์ผ์ ์ ์ฅํ๋ค.
์ด ๊ณผ์ ์ ์ฌ๋์ด ์ฝ๊ฒ ์ดํดํ ์ ์๋ ๊ณ ๊ธ ์ธ์ด ๋ฅผ ์ด์ฉํด ์์ค ์ฝ๋ ๋ฅผ ์์ฑํ ํ์์ด๋ค.
public class Main {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
2-2. ์๋ฐ ๋ฒ์ ์ ํ์ธํด๋ณด์
์์ฑํ .java ํ์ผ์ ์ปดํ์ผ ํ๊ธฐ ์ํด์๋ ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ํฌํจ๋ JDK๊ฐ ์ค์น๋์ด์์ด์ผ ํ๋ค.
์ปดํ์ผ์ ์ํํ ํ๊ฒฝ์ JDK๊ฐ ์ค์น ๋์ด์๋์ง ํ์ธํ๊ธฐ ์ํด ์๋ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํด๋ณด์.
java -version
์ด๋ PC์ ์ค์น๋ ์๋ฐ ๋ฒ์ ์ ํ์ธํ๊ธฐ ์ํ ๋ช
๋ น์ด๋ก, JDK๊ฐ ์ค์น๋์ด ์์ง ์์ ๊ฒฝ์ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
๋ณธ์ธ์ ์ด๋ฏธ ์ค๋ ์ ์ JDK ์ค์น๋ฅผ ํด ๋์๊ธฐ์ ๋ช
๋ น์ด๋ฅผ ์ณค์ ๋ ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
2-3. ์ปดํ์ผ์ ํด๋ณด์
2-2๊ฐ ์ ์์ ์ผ๋ก ์คํ๋์๋ค๋ฉด Main.java ํ์ผ์ด ์ ์ฅ๋ ๊ฒฝ๋ก๋ก ์ด๋ํด๋ณด์.
์ ์ฅ๋ ํ์ผ์ ๋ด์ฉ์ cat ๋ช
๋ น์ด๋ฅผ ํตํด ํ์ธํ๊ณ , ์ด์์ด ์๋ค๋ฉด ์๋ ๋ช
๋ น์ด๋ฅผ ํตํด ์ปดํ์ผ์ ์ํํ์.
javac Main.java
์๋ฌด ์ค๋ฅ๋ ์ฐํ์ง ์์๋ค๋ฉด ls ๋ช
๋ น์ด๋ฅผ ํตํด Main.class ํ์ผ์ด ์์ฑ๋์๋์ง ํ์ธํ๋ค.
Main.class ํ์ผ์ด ์์ฑ ๋์๋ค๋ฉด ์ปดํ์ผ์ ์ฑ๊ณตํ ๊ฒ์ด๋ค.
3. ๋ฐ์ดํธ ์ฝ๋
๋ฐ์ดํธ ์ฝ๋ ๋ ๊ฐ์ ๋จธ์ ์ด ์ดํดํ ์ ์๋ ์ธ์ด๋ก ๋ณํ๋ ์์ค ์ฝ๋ ์ด๋ค.
์์ ์ปดํ์ผ์ ํตํด ๋ณํ๋ .class ํ์ผ์ด ๋ฐ๋ก ์ด ๋ฐ์ดํธ ์ฝ๋์ ํด๋น๋๋ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๋ณํ๋ ๋ฐ์ดํธ ์ฝ๋๋ JVM์ ์ํด OS์ ๋ง๋ ๊ธฐ๊ณ์ด๋ก ๋ค์ ๋ณํ๋์ด ์คํ๋๋ค.
4. JVM
JVM์ด๋ Java Virtual Machine ์ ์ฝ์๋ก, ์๋ฐ๋ฅผ ์คํํ๊ธฐ ์ํ ๊ฐ์ ๊ธฐ๊ณ์ด๋ค.
๋ฐ์ดํธ์ฝ๋(.class) ๋ฅผ OS์ ๋ง๋ ๊ธฐ๊ณ์ด ๋ก ๋ณํํ์ฌ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํ์์ผ์ค๋ค.
์ด์ ์ค์ต์ ํตํด ์์ฑ๋ Main.class ํ์ผ์ ์๋ ๋ช
๋ น์ด๋ฅผ ํตํด ์คํ์์ผ๋ณด์.
java Main
Hello World! ๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ์ฑ๊ณต์ ์ผ๋ก ์ถ๋ ฅ๋์๋ค.
๋์ ๋ณด์ด์ง ์์ง๋ง JVM์ด ๋ด๋ถ์ ์ผ๋ก class ํ์ผ์ ๊ธฐ๊ณ์ด๋ก ๋ณํํ์ฌ ์คํํ ๊ฒ์ด๋ค.
๋ง๋ฌด๋ฆฌ
2023๋
๋ 1๋ถ๊ธฐ์ ์๋ฐ๋ฅผ ๋ค์ ์ ๋ฆฌํ๋ฉฐ ํ ํด๋ฅผ ์์ํ๊ณ ์ ํ๋ค.
ํ๋ฆํ๋ฆํ๋ ์์ ๋ ์ด๋๋ง ์ง๋ ๋ฌผ๋ง ๋จน์ 5๋
์ฐจ๊ฐ ๋ ๋...
์ด ๊ฒฐ์ฌ์ด ์ผ๋ง๋ ์ค๋ ๊ฐ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง
๊ณ ์ด์ง ์๊ธฐ ์ํด ๋ค์ ๊ณต๋ถํ์!๋ ๋ง์์ผ๋ก ์์ฑํ ์ฒซ ํฌ์คํ
๋ค์ ํฌ์คํ
์์ JVM์ ๊ตฌ์กฐ์ ๋์ ์๋ฆฌ์ ๋ํด ๋ค๋ค๋ด์ผ๊ฒ ๋ค!๐
'DEV > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
chapter02. JVM (0) | 2023.02.03 |
---|