๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

DEV/Java

chapter01. ์ž๋ฐ” ์‹œ์ž‘ํ•˜๊ธฐ

๐Ÿ“ข ๊ฐœ์š”

๋ณธ ํฌ์ŠคํŒ…์€ ์‹ ์šฉ๊ถŒ, ์ž„๊ฒฝ๊ท ๋‹˜์˜ ์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค ์„œ์ ๊ณผ ๋ฐฑ๊ธฐ์„ ๋‹˜์˜ ์ž๋ฐ” ๊ธฐ์ดˆ ์Šคํ„ฐ๋””๋ฅผ follow-up ํ•œ๋‹ค.


๐Ÿ“Œ ๋ชฉ์ฐจ

  1. ๊ณ ๊ธ‰ ์–ธ์–ด์™€ ์ €๊ธ‰ ์–ธ์–ด
  2. ์ปดํŒŒ์ผ
  3. ๋ฐ”์ดํŠธ ์ฝ”๋“œ
  4. 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