CodeGym/Java Blog/๋ฌด์ž‘์œ„์˜/์ž๋ฐ” ํ•™์Šต์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

์ž๋ฐ” ํ•™์Šต์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
ํšŒ์›

์ž๋ฐ” ์–ธ์–ด

์ž๋ฐ”๋Š” ๋‹จ์ˆœํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๊ด‘๋ฒ”์œ„ํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์ „์ฒด ์†Œํ”„ํŠธ์›จ์–ด ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์˜ ์ฃผ์š” ๊ตฌ์„ฑ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • Java ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํด๋ž˜์Šค(์–ธ์–ด์˜ ํ•ต์‹ฌ). Java์˜ ๊ธฐ๋ณธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋Šฅ์ธ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ, ์ˆ˜์ง‘, ๋กœ๊น…, ๋ฆฌํ”Œ๋ ‰์…˜, ๋ณด์•ˆ, ๋„คํŠธ์›Œํ‚น, XML ์ฒ˜๋ฆฌ, ์ง๋ ฌํ™”, ์ •๊ทœ์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋ฐฐํฌํ•˜๊ณ  ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
  • ํ”„๋ŸฐํŠธ์—”๋“œ(GUI, ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค)๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋„๊ตฌ. ์ด๋“ค์€ JavaFX, Swing ๋ฐ Java2D ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํด๋ž˜์Šค์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • JDBC, JNDI, RMI ๋ฐ Java RMI-IIOP์™€ ๊ฐ™์€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์›๊ฒฉ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.
Java ํด๋ž˜์Šค ๋ฐ ๋„๊ตฌ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด Oracle ์„ค๋ช…์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค . ๋ชจ๋“  ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์ธ Java JDK 1.0์—๋Š” "์˜ค์ง" ์ˆ˜๋ฐฑ ๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ํฌํ•จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง€๊ธˆ์€ ๊ทธ ์ˆ˜๊ฐ€ ์ˆ˜์ฒœ ๋ช…์œผ๋กœ ๋Š˜์–ด๋‚ฌ๋‹ค. ์–ธ์–ด์˜ ์ˆ˜๋ช… ๋™์•ˆ ์ž‘์„ฑ์ž๋Š” ๋ณด์•ˆ, ๊ธฐ๋Šฅ ๋ฐ ์ด์‹์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์—„์ฒญ๋‚œ ์ˆ˜์˜ ๋ณ€๊ฒฝ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ง€์†์ ์ธ ๊ฐœ์„ ๊ณผ ๊ฐœ๋ฐœ์ž์˜ ์ง€์› ๋•๋ถ„์— Java๋Š” ํ•ญ์ƒ IT ๊ธฐ์ˆ  ๊ฐœ๋ฐœ๊ณผ ๋ณด์กฐ๋ฅผ ๋งž์ถฐ ์™”์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์šฐ๋ฆฌ๋Š” ์ด์ œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ํŠน์ง•์„ ๊ฐ€์ง„ ์ตœ์ฒจ๋‹จ ์–ธ์–ด๋ฅผ ๊ฐ–๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ฎ์€ ์ง„์ž…์žฅ๋ฒฝ.
    Java๋ฅผ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์€ C์™€ ์œ ์‚ฌํ•œ ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์–ธ์–ด๋ณด๋‹ค ์‰ฝ์Šต๋‹ˆ๋‹ค.

  • ๊ฐœ์ฒด ๋ฐฉํ–ฅ.
    Java์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฐœ์ฒด์™€ ๊ฐœ์ฒด ๊ฐ„์˜ ์ƒํ˜ธ ์ž‘์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด OOP์˜ ๋ชจ๋“  ์ด์ ์„ ๋ˆ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํœด๋Œ€์„ฑ.
    ์ธํ„ฐํ”„๋ฆฌํ„ฐ(Java ๊ฐ€์ƒ ๋จธ์‹ )๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ๊ณผ ์žฅ์น˜์—์„œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ
    ํ•˜๋‚˜์˜ ํ”Œ๋žซํผ์šฉ์œผ๋กœ ์ž‘์„ฑ๋œ Java ํ”„๋กœ๊ทธ๋žจ์€ ํŠน์ • ํ”Œ๋žซํผ๋งˆ๋‹ค JVM์—์„œ ํ•ด์„๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘๊ฐ„ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค.

  • ๊ณ ๊ธ‰ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ.
    Java ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ์˜ ์‹คํ–‰์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค์ค‘ ์Šค๋ ˆ๋“œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณด์•ˆ.
    JVM์—๋Š” ๋ฐ”์ดํŠธ์ฝ”๋“œ ํ™•์ธ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๊ณ  Java์—๋Š” ์ˆ˜๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์—†์œผ๋ฉฐ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ๋ฅผ ์ถ”์ ํ•˜๊ณ  ๋ณด์•ˆ์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ API๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ Java์—์„œ ์ •๋ง ์•ˆ์ „ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ฒฐํ•จ ํ—ˆ์šฉ.
    ์˜ˆ์™ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ปดํŒŒ์ผ ์‹œ๊ฐ„๊ณผ ์‹คํ–‰ ์‹œ๊ฐ„ ๋ชจ๋‘์—์„œ ํ”„๋กœ๊ทธ๋žจ์˜ ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋†’์ด๊ณ  ์˜ค๋ฅ˜ ์ˆ˜๋ฅผ ์ค„์ž…๋‹ˆ๋‹ค.

  • ํ•ด์„ ๊ฐ€๋Šฅ์„ฑ.
    Java ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” JVM ๋ฐ JRE๊ฐ€ ์žˆ๋Š” ๋ชจ๋“  ์‹œ์Šคํ…œ์—์„œ Java ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐฐํฌ ๊ฐ€๋Šฅ์„ฑ.
    Java์—๋Š” ๋ถ„์‚ฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์„ฑ๋Šฅ.
    JIT (just-in-time) ์ปดํŒŒ์ผ๋Ÿฌ ๋Š” C ๋ฐ C++์— ํ•„์ ํ•˜๋Š” ๊ณ ์† ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Java๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ฒ˜์Œ๋ถ€ํ„ฐ Java ํ•™์Šต์„ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ํŒŒํ—ค์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค. Java ์–ธ์–ด์—๋Š” ๋ฌด์—‡์ด ํฌํ•จ๋˜์–ด ์žˆ๊ณ  Java ํ”„๋กœ๊ทธ๋žจ์€ ๋ฌด์—‡์ด๋ฉฐ ์–ด๋–ป๊ฒŒ ์‹คํ–‰๋ฉ๋‹ˆ๊นŒ? ๊ทธ๋Ÿฐ ๋‹ค์Œ ์–ธ์–ด์˜ ๊ตฌ๋ฌธ ๋ฐ ๊ธฐ๋ณธ ์‚ฌํ•ญ์œผ๋กœ ์ด๋™ํ•˜๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. Java์— ๋Œ€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ์‚ฌ๋ฅผ ์ฝ์€ ํ›„ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ˆœ์„œ๋„๋Š” ๋‹จ๊ณ„ ์ˆœ์„œ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. Java ํ•™์Šต์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ• - 2

Java๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋ ค๋ฉด ๋ฌด์—‡์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

๋จผ์ € ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๋ฐ ์‹คํ–‰์„ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด์ธ JDK(Java Development Kit)๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ปดํ“จํ„ฐ์— JDK๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ํ™˜๊ฒฝ์ธ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(IDE)์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” IDE๋Š” IntelliJ IDEA์ž…๋‹ˆ๋‹ค. ๋Œ€์•ˆ์€ Eclipse, NetBeans, JCreator ๋ฐ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์ž…๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ์— Java ์„ค์น˜

์ด๋ฏธ ์‚ดํŽด๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ ์ฒ˜์Œ๋ถ€ํ„ฐ Java๋ฅผ ๋ฐฐ์šธ ๋•Œ ์ฒซ ๋ฒˆ์งธ ๋‹จ๊ณ„๋Š” JDK๋ฅผ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  1. ์˜ค๋ผํด ์›น์‚ฌ์ดํŠธ ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค .
  2. ์šด์˜ ์ฒด์ œ์— ๋งž๋Š” ์„ค์น˜ ํŒŒ์ผ์„ ์„ ํƒํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์„ค์น˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. Windows๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์ •์˜

Java๋ฅผ ๋ง‰ ๋ฐฐ์šฐ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๋ฉด ํ™•์‹คํžˆ ๋‹ค์Œ ์šฉ์–ด๋ฅผ ์ ‘ํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. JVM์€ Java ๊ฐ€์ƒ ๋จธ์‹ ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์†Œ์Šค ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ํ”Œ๋žซํผ ์ข…์† ์†Œํ”„ํŠธ์›จ์–ด ๋ชจ๋“ˆ์ž…๋‹ˆ๋‹ค. JRE๋Š” Java Runtime Environment์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ํŠน์ • ํ”Œ๋žซํผ์šฉ JVM ๊ตฌํ˜„๊ณผ Java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ธํŠธ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. JDK๋Š” Java Development Kit์˜ ์•ฝ์ž๋กœ Java ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ์„ธํŠธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ปดํŒŒ์ผ๋Ÿฌ, JRE, ํ‘œ์ค€ Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋ฌธ์„œ ๋ฐ ๋‹ค์–‘ํ•œ ์œ ํ‹ธ๋ฆฌํ‹ฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋Š” ํ™•์žฅ์ž๊ฐ€ .java์ธ Java ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ํ…์ŠคํŠธ ํŒŒ์ผ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋Š” JVM์— ๋Œ€ํ•œ ์ผ๋ จ์˜ ๋ช…๋ น์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ธฐ๊ณ„ ๋…๋ฆฝ์ ์ธ ํ•˜์œ„ ์ˆ˜์ค€ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๊ธฐ๊ณ„ ์ฝ”๋“œ๋Š” ํ”„๋กœ์„ธ์„œ์— ์˜ํ•ด ์ง์ ‘ ์‹คํ–‰๋˜๋Š” ์ด์ง„ ๊ธฐ๊ณ„ ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ์€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Interpret๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ณ„ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐ ํ•˜๋“œ์›จ์–ด ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํ”Œ๋žซํผ์€ Microsoft Windows, Linux, Solaris OS ๋ฐ Mac OS์ž…๋‹ˆ๋‹ค. ์ด ๋‹ค์ด์–ด๊ทธ๋žจ์€ JVM, JRE ๋ฐ JDK์˜ ๊ฐœ๋…์„ ๋” ์ž˜ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. Java ํ•™์Šต์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ• - 3

ํ”„๋กœ๊ทธ๋žจ ์ˆ˜๋ช… ์ฃผ๊ธฐ

Java ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜๋ช…์€ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ž‘์„ฑ๋  ๋•Œ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ž‘์—…์€ IDE(ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ)๋ผ๋Š” ํŠน์ˆ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํ™˜๊ฒฝ์—์„œ ์ˆ˜ํ–‰๋˜์ง€๋งŒ ๊ฐ„๋‹จํ•œ ํ”„๋กœ๊ทธ๋žจ์€ ๋ชจ๋“  Windows ๋ฒ„์ „๊ณผ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๋ฉ”๋ชจ์žฅ๊ณผ ๊ฐ™์€ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์Šค ์ฝ”๋“œ๋Š” ํ™•์žฅ์ž๊ฐ€ .java์ธ ํŒŒ์ผ์— ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ ํ”„๋กœ๊ทธ๋žจ: HelloWorld.java :
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("This is my first program");
    }
}
์ด ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „์— ์ปดํŒŒ์ผ๋Ÿฌ์— ์˜ํ•ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” JDK์˜ ์ผ๋ถ€์ธ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. .class ํ™•์žฅ์ž๋ฅผ ๊ฐ€์ง„ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์—๋Š” JVM์— ๋Œ€ํ•œ ์ง€์นจ์ธ ๋ฐ”์ดํŠธ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜•์‹์€ ์–ด์…ˆ๋ธ”๋ฆฌ ์–ธ์–ด์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. HelloWorld.java ํ”„๋กœ๊ทธ๋žจ์€ HelloWorld.class ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋ฉ๋‹ˆ๋‹ค. Java ํ”Œ๋žซํผ์€ ๋ฐ”์ดํŠธ์ฝ”๋“œ ํŽธ์ง‘ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์ง€๋งŒ ๋ณผ ์ˆ˜๋Š” ์žˆ์Šต๋‹ˆ๋‹ค. Java ํ”„๋กœ๊ทธ๋žจ์˜ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ๋ณด๋ ค๋ฉด JDK์— ํฌํ•จ๋œ javap ๋””์Šค์–ด์…ˆ๋ธ”๋Ÿฌ ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. HelloWorld.class์—๋Š” ๋‹ค์Œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
Compiled from "HelloWorld.java"
public class HelloWorld {
  public HelloWorld();
    Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return

  public static void main(java.lang.String[]);
    Code:
0: getstatic #2 // Fieldjava/lang/System.out:Ljava/io/PrintStream;
3: ldc #3 // String This is my first program
5:invokevirtual #4// Methodjava/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
์ด์ œ ์šฐ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ์€ HelloWorld.class ํŒŒ์ผ์— ์ปดํŒŒ์ผ๋œ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด JRE๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. JVM์€ Java ํ”„๋กœ๊ทธ๋žจ์„ ๋ชจ๋“  ํ”Œ๋žซํผ์œผ๋กœ ์ด์‹ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰์ด๋ž€ Java ๊ฐ€์ƒ ๋จธ์‹ ์— ์˜ํ•œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ์˜ ์‹คํ–‰์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ java ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
  1. JVM์ด ์ปดํ“จํ„ฐ์˜ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๊ฒƒ์€ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•˜๋Š” Java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.
  2. ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํด๋ž˜์Šค ๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JVM์€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ ์ด๊ฒƒ์€ HelloWorld ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ์œผ๋กœ JVM์€ ํด๋ž˜์Šค์—์„œ public static void main(String []) ๋ฉ”์„œ๋“œ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค .
  4. main ๋ฉ”์„œ๋“œ ์˜ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์— ๋‹ค๋ฅธ ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ํด๋ž˜์Šค๊ฐ€ ๋กœ๋“œ๋˜๊ณ  ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.
  5. ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ ํ›„ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘์ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ง€์šฐ๊ธฐ ๋ฐ JVM ํ”„๋กœ๊ทธ๋žจ ๋‹ซ๊ธฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
์ด๋Ÿฌํ•œ ๋ชจ๋“  ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ JVM์€ ์‹คํ–‰ ์ค‘์ธ ์šด์˜ ์ฒด์ œ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ํ”„๋กœ์„ธ์„œ์˜ ๊ธฐ๊ณ„ ๋ช…๋ น์œผ๋กœ ํ•ด์„(๋ณ€ํ™˜)ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹ค์ด์–ด๊ทธ๋žจ์—์„œ Java ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java ํ•™์Šต์„ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ• - 4

๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ ํƒ ๋ฐ ์„ค์น˜

Java๋กœ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋ ค๋ฉด Java ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Java ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” IDE๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
  • IntelliJ IDEA
  • ์‹
  • ๋„ท๋นˆ์ฆˆ
2017๋…„ RebelLabs์—์„œ ์ค€๋น„ํ•œ Java ๊ฐœ๋ฐœ ๋„๊ตฌ ์ธ๊ธฐ๋„ ๋ฆฌ๋ทฐ ์— ๋”ฐ๋ฅด๋ฉด 1์œ„๋Š” IntelliJ IDEA, 2์œ„๋Š” Eclipse, 3์œ„๋Š” NetBeans๋กœ ์ƒ์œ„ 2์œ„์— ํฌ๊ฒŒ ๋’ค์ฒ˜์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ IDE๋Š” ์‹œ์žฅ์˜ ์ž‘์€ ๋ถ€๋ถ„์„ ์ฐจ์ง€ํ•˜๋ฉฐ ์ด 3%๋ฅผ ๋„˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ดˆ๋ณด์ž์˜ ๊ฒฝ์šฐ IntelliJ IDEA Community Edition์„ ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์ฒซ์งธ, ์ตœ์‹  IDE(์ž๋™ ์™„์„ฑ, ์ฝ”๋“œ ๊ฒ€์‚ฌ, ์ฝ”๋“œ ๋””๋ฒ„๊น…, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ์„œ๋ฒ„์™€์˜ ํŽธ๋ฆฌํ•œ ํ†ตํ•ฉ)์˜ ๋ชจ๋“  ์ด์ ์€ ๋ฌผ๋ก  ๋งŽ์€ ๊ฐœ๋ฐœ ๋„๊ตฌ ๋ฐ ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ง€์›์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘˜์งธ, ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ „๋ฌธ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ๋งˆ์Šคํ„ฐํ•˜๊ธฐ ์œ„ํ•œ ์ฒซ ๋‹จ๊ณ„๋ฅผ ๋ฐŸ์Šต๋‹ˆ๋‹ค. IntelliJ IDEA ์„ค์น˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์€ ๋‹ค์Œ์˜ ๋ ˆ๋ฒจ 3 ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.์ฝ”๋“œ์ง ๊ต์œก๊ณผ์ • .

์ž๋ฐ”๋ฅผ ๋ฐฐ์šฐ๋Š” ๋ฐ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฝ๋‹ˆ๊นŒ?

์–ผ๋งˆ๋‚˜ ์ง‘์ค‘์ ์œผ๋กœ ๊ณต๋ถ€ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ 6๊ฐœ์›”์—์„œ 12๊ฐœ์›” ์•ˆ์— Java์˜ ๊ธฐ์ดˆ๋ฅผ ๋ฐฐ์šฐ๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์„ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐํ™”๋œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ทจํ•˜์‹ญ์‹œ์˜ค: ํ•™์Šต ๊ณ„ํš์„ ์„ธ์šฐ๊ณ , ํ•„์š”ํ•œ ์ž๋ฃŒ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ํ•˜๋ฃจ์— ๋ช‡ ์‹œ๊ฐ„์”ฉ ๊ณต๋ถ€๋ฅผ ์œ„ํ•ด ๋”ฐ๋กœ ๋–ผ์–ด๋†“์œผ์‹ญ์‹œ์˜ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ์—ด์‡ ๋Š” ์—ฐ์Šต์ด๋ผ๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์‹ญ์‹œ์˜ค.

๊ฒฐ๋ก 

ํ˜ผ์ž์„œ Java๋ฅผ ๊ณต๋ถ€ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์ปดํ“จํ„ฐ ๊ธฐ์ˆ ๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. Java ํ•™์Šต์„ ํšจ๊ณผ์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋ช‡ ๊ฐ€์ง€ ๊ฐ„๋‹จํ•œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค.
  1. ์ปดํ“จํ„ฐ์— ์ž๋ฐ” ์„ค์น˜
  2. ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์ตํ˜€๋ผ
  3. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์น˜
  4. ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ ๋ฐ ์‹คํ–‰
์ฝ”๋ฉ˜ํŠธ
  • ์ธ๊ธฐ
  • ์‹ ๊ทœ
  • ์ด์ „
์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋ ค๋ฉด ๋กœ๊ทธ์ธ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค
์ด ํŽ˜์ด์ง€์—๋Š” ์•„์ง ์ฝ”๋ฉ˜ํŠธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค