๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธdevelop/Springboot

[Springboot] ํ‡ด๊ทผ๊ธธ ๋ฒ„์Šค์•ˆ์—์„œ ํ˜ธ๋‹ค๋‹ฅ ๊ณต๋ถ€ํ•˜๋Š” ์Šคํ”„๋ง๋ถ€ํŠธ-๋„๊ตฌ ์ด์ƒํ˜• ์›”๋“œ์ปต

by ํ‚ํ‚์ž‰ 2024. 12. 7.

ํ˜ธ๊ธฐ๋กญ๊ฒŒ ์Šคํ”„๋ง๋ถ€ํŠธ ์Šคํ„ฐ๋””์— ๋›ฐ์–ด๋“ค์—ˆ์ง€๋งŒ ์กธ๋…ผ + ํ”„๋กœ์ ํŠธ ์ด์Šˆ๋กœ ์ €๋ฒˆ์ฃผ์—๋Š” ์ œ๋Œ€๋กœ ์ฐธ์—ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค..์‚ฌ์‹ค ์–ด์ œ๊นŒ์ง€ ์กธ์—…๋…ผ๋ฌธ๊ณผ ํ”„๋กœ์ ํŠธ ๋ณด๊ณ ์„œ ๋งˆ๊ฐ์ผ์ด์—ˆ์–ด์„œ ์ด๋ฒˆ ์ฃผ๋„ ๊ณต๋ถ€๋ฅผ ๋ชปํ•œ ๊ฒƒ์€ ๋งˆ์ฐฌ๊ฐ€์ง€์ธ๋ฐ ํ•œ ์ฃผ ๋” ๊ฑด๋„ˆ๋›ฐ๊ธฐ์—๋Š”๋„ˆ๋ฌด ๋ˆˆ์น˜๊ฐ€ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์Šค ์•ˆ์—์„œ ํ˜ธ๋‹ค๋‹ฅ ๋ฒผ๋ฝ์น˜๊ธฐ ํ•ด๋ณด์•˜๋‹ค.

 

๋‹ค์Œ ์ฑ…์„ ์ฐธ๊ณ ํ•˜์˜€๋‹ค.

 

๋‚˜ ์„ค์น˜์—๋งŒ ๋‘์‹œ๊ฐ„ ๊ฑธ๋ ธ๋‹ค

 

๋นŒ๋“œ ๋„๊ตฌ 

์Šคํ”„๋ง๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ ๋ ˆํฌ๋ฅผ ๋ณด๋ฉด gadle์ด๋ผ๋Š” ํด๋”๊ฐ€ ๊ผญ ๋ณด์˜€๋Š”๋ฐ ๋„๋Œ€์ฒด ์ €๊ฒŒ ๋ญ”๊นŒ ํ•ญ์ƒ ๊ถ๊ธˆํ–ˆ์—ˆ๋‹ค(๋”ฐ๋กœ ์•Œ์•„๋ณผ ์ •๋„๋กœ ๊ถ๊ธˆํ•˜์ง€๋Š” ์•Š๊ณ  ๊ทธ๋ƒฅ ๋ณผ๋•Œ๋งŒ ์ž ๊น ๊ถ๊ธˆํ–ˆ๋‹ค).  ๋งˆ์นจ  ์ด ์ฑ… 2์žฅ์—์„œ ๋„๊ตฌ ์„ ํƒ์„ ๋‹ค๋ฃจ๋ฉด์„œ, ๊ทธ๋ ˆ์ด๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์„ ํฌํ•จํ•˜์—ฌ 2์žฅ์„ ๋จผ์ € ์ฝ์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค.

 

๋ฉ”์ด๋ธ(Maven)๊ณผ ๊ทธ๋ ˆ์ด๋“ค(gradle)์€ ๋นŒ๋“œ ๋„๊ตฌ์ด๋‹ค. ๊ณผ๊ฑฐ์—๋Š” ๋” ๋งŽ์€ ๋นŒ๋“œ ๋„๊ตฌ๋“ค์ด ์žˆ์—ˆ์ง€๋งŒ, ํ˜„์žฌ๋Š” ์ด ๋‘ ๊ฐœ์˜ ์ปค๋ฎค๋‹ˆํ‹ฐ๋งŒ ์‚ด์•„๋‚จ์€ ๋ชจ์–‘์ด๋‹ค.

 

์•„ํŒŒ์น˜ ๋ฉ”์ด๋ธ(Apache Maven)

๋ฉ”์ด๋ธ์€ 2002๋…„์— ์‹œ์ž‘๋œ ์ดํ›„๋กœ, ์—„์ฒญ๋‚˜๊ฒŒ ์˜ค๋ž˜ ์‚ฌ์šฉ๋œ ๋„๊ตฌ์ด๋‹ค. ๋ฉ”์ด๋ธ์€ ์„ ์–ธํ˜• ์ ‘๊ทผ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ, ๋‹ค๋ฅธ ๋นŒ๋“œ ๋„๊ตฌ๋ณด๋‹ค ๊ฐœ๋…์ด ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๋‹ค. XML ํ˜•์‹์˜ pom.xml ํŒŒ์ผ์— ํ”„๋กœ์ ํŠธ ์˜์กด์„ฑ๊ณผ ํ”Œ๋กœ๊ทธ์ธ์„ ์ ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

 

mvn ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์–ด๋–ค ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ• ์ง€ ์ง€์ •ํ•˜์—ฌ ์ปดํŒŒ์ผ, ์ด์ „ ๋นŒ๋“œ์—์„œ ์ƒ์„ฑ๋œ ์‚ฐ์ถœ๋ฌผ ์‚ญ์ œ, ํŒจํ‚ค์ง•, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ๋“ฑ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

๋ฉ”์ด๋ธ์€ ์ปจ๋ฒค์…˜์— ๋”ฐ๋ผ ํŠน์ • ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด, ์˜คํžˆ๋ ค ์—ญํšจ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

 

project-root/
โ”œโ”€โ”€ pom.xml                        # ๋ฉ”์ด๋ธ ํ”„๋กœ์ ํŠธ ์„ค์ • ํŒŒ์ผ
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ main/                      # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œ์Šค ์ฝ”๋“œ
โ”‚   โ”‚   โ”œโ”€โ”€ java/                  # Java ์†Œ์Šค ํŒŒ์ผ
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ com/example/demo/  # Java ํŒจํ‚ค์ง€ ๊ตฌ์กฐ
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ DemoApplication.java  # ๋ฉ”์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์Šค
โ”‚   โ”‚   โ””โ”€โ”€ resources/             # ์„ค์ • ํŒŒ์ผ ๋ฐ ๋ฆฌ์†Œ์Šค
โ”‚   โ”‚       โ””โ”€โ”€ application.properties  # ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค์ • ํŒŒ์ผ
โ”‚   โ””โ”€โ”€ test/                      # ํ…Œ์ŠคํŠธ ์†Œ์Šค ์ฝ”๋“œ
โ”‚       โ”œโ”€โ”€ java/                  # ํ…Œ์ŠคํŠธ Java ํŒŒ์ผ
โ”‚       โ”‚   โ””โ”€โ”€ com/example/demo/  # ํ…Œ์ŠคํŠธ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ
โ”‚       โ”‚       โ””โ”€โ”€ DemoApplicationTests.java  # ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค

 

๊ทธ๋ ˆ์ด๋“ค

๊ทธ๋ ˆ์ด๋“ค์€ JVM(Java Virtual Machine) ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋นŒ๋“œ ๋„๊ตฌ๋‹ค. ๋ฉ”์ด๋ธ์˜ ์—„๊ฒฉํ•œ ํด๋” ๊ตฌ์กฐ๊ฐ€ ๋งˆ์Œ์— ๋“ค์ง€ ์•Š๊ฑฐ๋‚˜, ์กฐ๊ธˆ ๋” ์œ ์—ฐํ•œ ์„ค์ •์ด ํ•„์š”ํ•œ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ๊ทธ๋ ˆ์ด๋“ค์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

๊ทธ๋ ˆ์ด๋“ค์€ DSL(Domain Specific Language)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ํŒŒ์ผ์„ ์ž‘์„ฑํ•œ๋‹ค. build.gradle ํŒŒ์ผ์€ ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ทธ๋ฃจ๋น„(Groovy) ๋˜๋Š” ์ฝ”ํ‹€๋ฆฐ(Kotlin)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. ๋นŒ๋“œ ๋Œ€๊ธฐ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

 

 

  • ์ž๋ฐ” ํด๋ž˜์Šค์˜ ์ฆ๋ถ„ ์ปดํŒŒ์ผ
    • ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ๋งŒ ์ปดํŒŒ์ผํ•˜์—ฌ ๋นŒ๋“œ ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๊ธฐ์ˆ . ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ธฐ์กด ์ปดํŒŒ์ผ๋œ ํŒŒ์ผ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•ด ๋น ๋ฅด๊ฒŒ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.
    • ์˜ˆ: ๋ฉ”์ด๋ธ์€ ์ „์ฒด ํŒŒ์ผ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์ง€๋งŒ, ๊ทธ๋ ˆ์ด๋“ค์€ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ์ฒ˜๋ฆฌํ•œ๋‹ค.
  • ๋ฐ๋ชฌ(Daemon)
    • ํ”„๋กœ์ ํŠธ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค.
    • ์ผ๋ฐ˜์ ์ธ JVM ํ”„๋กœ์„ธ์Šค์™€ ๋น„์Šทํ•˜๋ฉฐ, ํ•œ ๋ฒˆ ์‹œ์ž‘๋˜๋ฉด ์ข…๋ฃŒํ•˜์ง€ ์•Š๊ณ  ์ง€์†์ ์œผ๋กœ ๋นŒ๋“œ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•œ๋‹ค.
    • ๋•๋ถ„์— ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋นŒ๋“œํ•  ๋•Œ ์ดˆ๊ธฐํ™” ๊ณผ์ •์„ ์ƒ๋žตํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋ฉ”์ด๋ธ๊ณผ ๋น„์Šทํ•œ ๊ตฌ์กฐ๋ฅผ ๋”ฐ๋ฅด๋‚˜, ์›ํ•˜๋Š”๋Œ€๋กœ ์ปค์Šคํ…€ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฉ”์ด๋ธ vs ๊ทธ๋ ˆ์ด๋“ค

๋ฉ”์ด๋ธ์€ ์„ ์–ธํ˜• ์ ‘๊ทผ ๋ฐฉ์‹๊ณผ ์ผ๊ด€๋œ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด, ํ”„๋กœ์ ํŠธ์™€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ •ํ•ด์ง„ ๊ทœ์น™ ๋‚ด์—์„œ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์œ ์ง€ํ•œ๋‹ค. ์ด ๊ทœ์น™์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š” ์ด์ƒ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ํŠน์„ฑ ๋•๋ถ„์— ์ดˆ๋ณด์ž๋‚˜ ํ‘œ์ค€ํ™”๋œ ํ™˜๊ฒฝ์„ ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ์šฐ ์ข‹์€ ์„ ํƒ์ง€๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

 

์žฅ์ 

  1. ์ผ๊ด€์„ฑ ์œ ์ง€: ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ ๋นŒ๋“œ ์ ˆ์ฐจ๊ฐ€ ํ‘œ์ค€ํ™”๋˜์–ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ฐ„ ์ฐจ์ด๋ฅผ ์ตœ์†Œํ™”.
  2. ์•ˆ์ •์„ฑ: ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ๋„์ž… ์‹œ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๊ฐ€ ์ ์–ด ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋นŒ๋“œ ๊ฐ€๋Šฅ.
  3. ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์›€: ์„ค์ • ํŒŒ์ผ์ธ pom.xml์€ ์ฝ๊ธฐ ์‰ฝ๊ณ  ์„ ์–ธ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๋ณด์ž์—๊ฒŒ ์ ํ•ฉ.
  4. ํ’๋ถ€ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ: ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ๋ฌธ์„œํ™”๋กœ ํ™•์žฅ์„ฑ ํ™•๋ณด.

๋‹จ์ 

  1. ๋นŒ๋“œ ์†๋„: ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ๋นŒ๋“œ ์‹œ๊ฐ„์ด ๋Š๋ฆด ์ˆ˜ ์žˆ์Œ.
  2. ์œ ์—ฐ์„ฑ ๋ถ€์กฑ: ์ •ํ•ด์ง„ ๊ตฌ์กฐ์™€ ๊ทœ์น™์—์„œ ๋ฒ—์–ด๋‚˜๋Š” ์ž‘์—…์€ ์ถ”๊ฐ€์ ์ธ ์„ค์ •์ด ํ•„์š”.
  3. ์˜์กด์„ฑ ๋ฌธ์ œ: ํŠน์ • ๋ฒ„์ „ ๊ฐ„ ์˜์กด์„ฑ ์ถฉ๋Œ ์‹œ ํ•ด๊ฒฐ์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Œ.

 

๊ทธ๋ ˆ์ด๋“ค์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/์Šคํฌ๋ฆฝํŒ… ์ค‘์‹ฌ์˜ ๋นŒ๋“œ ๋„๊ตฌ๋กœ, ๋†’์€ ์œ ์—ฐ์„ฑ๊ณผ ์ตœ์‹  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ์œ ์—ฐํ•จ์€ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๋ฌธ์ œ๋ฅผ ์œ ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ, ์ตœ์‹  ๋ฒ„์ „์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋นŒ๋“œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฉ”์ด๋ธ๋ณด๋‹ค ๋น ๋ฅธ ์†๋„๋ฅผ ๋ณด์ธ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

 

์žฅ์ 

  1. ๋น ๋ฅธ ์†๋„: ์ฆ๋ถ„ ์ปดํŒŒ์ผ๊ณผ ๋ฐ๋ชฌ ๊ธฐ๋Šฅ์œผ๋กœ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋„ ๋†’์€ ์„ฑ๋Šฅ.
  2. ์œ ์—ฐ์„ฑ: ํด๋” ๊ตฌ์กฐ์™€ ์„ค์ • ํŒŒ์ผ์„ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ.
  3. ์ตœ์‹  ๊ธฐ์ˆ  ์ง€์›: ์ตœ์‹  JVM ์–ธ์–ด(Groovy, Kotlin)๋กœ ์œ ์—ฐํ•œ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ๊ฐ€๋Šฅ.
  4. ์˜์กด์„ฑ ๊ด€๋ฆฌ ๊ฐ•ํ™”: ๊ฐ•๋ ฅํ•œ ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋„๊ตฌ ์ œ๊ณต.

๋‹จ์ 

  1. ๋ณต์žก์„ฑ: ์œ ์—ฐ์„ฑ์ด ๋†’์•„์ง„ ๋งŒํผ, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋™์ž‘์ด๋‚˜ ๋ฌธ์ œ ํ•ด๊ฒฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์งˆ ์ˆ˜ ์žˆ์Œ.
  2. ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ: ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‚˜ ์ตœ์‹  ๋ฒ„์ „ ์‚ฌ์šฉ ์‹œ ๋นŒ๋“œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฐ€๋Šฅ์„ฑ.
  3. ํ•™์Šต ๊ณก์„ : DSL ๊ธฐ๋ฐ˜์˜ ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ์€ ๋ฉ”์ด๋ธ์— ๋น„ํ•ด ๋ฐฐ์šฐ๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค.
  4. ์ž‘์€ ํ”„๋กœ์ ํŠธ์—์„œ์˜ ํšจ๊ณผ ์ œํ•œ: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐ™์€ ์ž‘์€ ๊ทœ๋ชจ์—์„œ๋Š” ๋ฉ”์ด๋ธ๊ณผ ์†๋„ ์ฐจ์ด๊ฐ€ ํฌ์ง€ ์•Š์Œ.

 

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

 

์•„์ง ๋‘ ๋„๊ตฌ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด๋ณด์ง€ ๋ชปํ–ˆ์ง€๋งŒ, ์ง€๊ธˆ ๋‹น์žฅ ๋Œ๋ฆฌ๋Š”๊ฑด ๋ฉ”์ด๋ธ์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์ผ๊ด€์ ์ธ ๊ตฌ์กฐ์—์„œ ์˜ค๋Š” ์•ˆ์ •์„ฑ์ด ๋งค๋ ฅ์ ์ธ ๊ฒƒ ๊ฐ™๊ณ , ๋ฌด์—‡๋ณด๋‹ค ์ด๋ฆ„์ด ์ด์˜๋‹ค. ์Šคํ”„๋ง๋ถ€ํŠธ๋กœ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•ธ๋“ค๋ง ํ•  ์ผ๋„ ์—†์„ ๊ฒƒ ๊ฐ™์•„์„œ, ๊ทธ๋ ˆ์ด๋“ค์˜ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ์˜ ๋น ๋ฅธ ์†๋„๋ณด๋‹ค๋„ ์•ˆ์ •์„ฑ์ด ๋‚˜์—๊ฒ ๋” ์ ํ•ฉํ•œ ๋ฐฉ์‹์ธ ๊ฒƒ ๊ฐ™๋‹ค . ์˜ค๋ฅ˜ ์‹ซ์–ด์š”


 

์–ธ์–ด 

JVM์—์„œ๋Š” ๋งŽ์€ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž๋ฐ”์™€ ์ฝ”ํ‹€๋ฆฐ์„ ๊ฐ€์žฅ ๋งŽ์ด ์“ด๋‹ค. ์ž๋ฐ”๋Š” JVM์˜ ๊ทผ๋ณธ์ด๋ฉฐ, ์ฝ”ํ‹€๋ฆฐ์€ JVM์„ ์‚ฌ์šฉํ•˜๋Š” ๋น„๊ต์  ์ตœ์‹  ์–ธ์–ด์ด๋‹ค. ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ์ž๋ฐ”์™€ ์ฝ”ํ‹€๋ฆฐ์„ ์™„๋ฒฝํžˆ ์ง€์›ํ•˜๋ฉฐ, ํŠนํžˆ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ•˜๋ฉด ์ž๋ฐ”, ์ž๋ฐ”ํ•˜๋ฉด ์Šคํ”„๋ง ๋ถ€ํŠธ๊ฐ€ ์ƒ๊ฐ๋‚ ์ •๋„๋กœ...๋–ผ๋ ค์•ผ ๋—„ ์ˆ˜ ์—†๋Š” ๊ด€๊ณ„์ด๋‹ค.

 

์ž๋ฐ”โ˜•

์ž๋ฐ”๋Š” ๊ณต์‹ 1,0๋ฒ„์ „ ์ดํ›„ 25๋…„ ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค. ์˜ค๋ž˜๋˜์—ˆ์ง€๋งŒ, 2017๋…„ 9์›” ์ดํ›„๋ถ€ํ„ฐ๋Š” ์ถœ์‹œ ์ฃผ๊ธฐ๊ฐ€ 6๊ฐœ์›”๋กœ ๋ฐ”๋€Œ์–ด ๊ธฐ๋Šฅ ๊ฐœ์„ ์ด ์žฆ์€, ๊พธ์ค€ํžˆ ๋ฐœ์ „ ์ค‘์ธ ์–ธ์–ด์ด๋‹ค. Java Never Die๐Ÿ‘‘

 

์ž๋ฐ”๋Š” ์˜ค๋žซ๋™์•ˆ ์‚ฌ์šฉ๋˜์—ˆ๊ณ , ๊พธ์ค€ํžˆ ์—…๋ฐ์ดํŠธ ๋˜๋ฉด์„œ๋„ ์ด์ „ ๋ฒ„์ „๊ณผ ์ผ๊ด€๋˜๊ฒŒ ํ˜ธํ™˜๋œ๋‹ค. ๋•๋ถ„์—์ „ ์„ธ๊ณ„์—์„œ ์ˆ˜๋งŽ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ž๋ฐ” ๋ฒ ์ด์Šค๋กœ ๋งŒ๋“ค์–ด์กŒ๊ณ , ์œ ์ง€๋˜๊ณ , ๊ด€๋ฆฌ๋˜๊ณ  ๋˜ ์ง€๊ธˆ๋„ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ๋‹ค ๋Œ€๋ถ€๋ถ„์˜ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์Šคํ”„๋ง์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค.

 

์Šคํ”„๋ง ์ฝ”๋“œ๊ฐ€ ๋Œ€๋ถ€๋ถ„ ์ž๋ฐ”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด, ์ž๋ฐ” ๋ฒ ์ด์Šค ์Šคํ”„๋ง ๋ถ€ํŠธ๋Š” ๋งŽ์€ ์ด์ ์ด ์žˆ๋‹ค. .์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ์˜ˆ์ œ ์ฝ”๋“œ, ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ, ์‹œ์ž‘ํ•˜๊ธฐ ๊ฐ€์ด๋“œ ๋“ฑ ๋‹ค๋ฅธ ์–ธ์–ด์— ๋น„ํ•ด ์ž‘์—…์ด ํ›จ์”ฌ ์ˆ˜์›”ํ•˜๋‹ค.

 

์ฝ”ํ‹€๋ฆฐ๐ŸŒฑ

์ฝ”ํ‹€๋ฆฐ์€ 2010๋…„ JetBrains์—์„œ ๊ฐœ๋ฐœํ•ด, 2011๋…„ ๊ณต๊ฐœ๋œ ์ตœ์‹  ์–ธ์–ด์ด๋‹ค. ์ž๋ฐ”์˜ ์‚ฌ์šฉ์„ฑ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์กŒ์œผ๋ฏ€๋กœ ์„ค๊ณ„ ์ดˆ๊ธฐ๋ถ€ํ„ฐ ๋‹ค์Œ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•˜์—ฌ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค.

 

  • ๊ฐ„๊ฒฐํ•จ
  • ์•ˆ์ •์„ฑ- null ๊ฐ’์˜ ๊ฐ€๋Šฅ์„ฑ์„ ์‚ฌ์ „ ์ œ๊ฑฐ
  • ์ƒํ˜ธ ์šด์˜-๊ธฐ์กด์˜ ๋ชจ๋“  JVM, ์•ˆ๋“œ๋กœ์ด๋“œ, ๋ธŒ๋ผ์šฐ์ € ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์ œ์•ฝ ์—†์ด ํ˜ธํ™˜ํ•ด ์‚ฌ์šฉ
  • ๋„๊ตฌ ์นœํ™”์„ฑ- ์ˆ˜๋งŽ์€ IDE ๋˜๋Š” ๋ช…๋ น์ค„๋กœ ์ฝ”ํ‹€๋ฆฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋นŒ๋“œ

์ฝ”ํ‹€๋ฆฐ์€ ๊ฐ„๊ฒฐํ•˜๊ณ ๋„ ์œ ์—ฐํ•œ ์–ธ์–ด์ด๋‹ค. ํ™•์žฅ ํ•จ์ˆ˜, ์ค‘์œ„ ํ‘œ๊ธฐ๋ฒ• ๋“ฑ ๋ฌธ๋ฒ•์  ํŠน์ง•์ด ์žˆ๋‹ค. Language with language๋ฅผ ์ •์˜ํ•˜์—ฌ, API ์„ค๊ณ„์— ํฐ ๋„์›€์ด ๋œ๋‹ค. ๊ฐ„๊ฒฐํ•จ์˜ ํŠน์ง• ๋•๋ถ„์— ์ž๋ฐ” ๋ฒ ์ด์Šค ์Šคํ”„๋ง๋ถ€ํŠธ ์ฝ”๋“œ๋ณด๋‹ค๋„ ๋” ์งง๊ณ  ์ฝ๊ธฐ ์‰ฌ์šฐ๋ฉด์„œ๋„, ์ „๋‹ฌ๋ ฅ์„ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•œ๋‹ค.

 

์ž๋ฐ” vs ์ฝ”ํ‹€๋ฆฐ

๋‘˜ ์ค‘ ๋ญ˜ ์“ฐ๋Š”๊ฒŒ ์ข‹์„์ง€ ์—ด์‹ฌํžˆ ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ์—ˆ๋Š”๋ฐ...

 

๊ทธ๋ƒฅ ๋‘˜ ๋‹ค ์“ฐ๋ฉด ๋˜๋Š”๊ฑฐ์˜€๋‹ค.

 

์ฝ”ํ‹€๋ฆฐ์€ ์ž๋ฐ”์™€ ๋™์ผํ•œ JVM ๋ฐ”์ดํŠธ์ฝ”๋“œ ์ถœ๋ ฅ์œผ๋กœ ์ปดํŒŒ์ผ๋˜๋ฉฐ, ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ ์•ˆ์—์„œ ์ž๋ฐ” ์†Œ์Šค์™€ ์ฝ”ํ‹€๋ฆฐ ํŒŒ์ผ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ์•ˆ์—์„œ ์ž๋ฐ”์™€ ์ฝ”ํ‹€๋ฆฐ ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ํ•จ๊ป˜ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋งˆ๋ฆฌ ํ† ๋ผ ๋ชจ๋‘ ์žก๊ธฐ๐Ÿ‡๐Ÿ‡๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

๊ฒฐ๊ตญ ์ž๋ฐ”์™€ ์ฝ”ํ‹€๋ฆฐ ๋‘˜ ์ค‘ ์–ด๋Š ์–ธ์–ด๋ฅผ ์“ธ ๊ฒƒ์ธ์ง€๋Š” ์ทจํ–ฅ์˜ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 

๋‚˜๋Š” ์ž๋ฐ”๋Š” ์•Œ๊ณ , ์ฝ”ํ‹€๋ฆฐ์€ ๊ฑฐ์˜ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”๋„ ๋ฐฐ์šฐ๊ธฐ๋งŒ ํ–ˆ์ง€ ์•ˆ์“ด์ง€ 2๋…„์ด ๋‹ค ๋˜์–ด๊ฐ€๊ณ , ๋˜ ์ž๋ฐ”๋Š” ๋‚ด๊ฐ€ ์ œ์ผ์ œ์ผ์ œ์ผ ์‹ซ์–ดํ•˜๊ณ  ๊ทนํ˜ํ•˜๋Š” ์–ธ์–ด์ด๋‹ค. ๊ณ ์ž‘ hello world๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด system.out.println์ด๋ผ๋Š” ๊ฐœ ๊ธด ๋ฌธ์žฅ์„ ์จ์•ผ ํ•˜๋Š”๊ฒŒ ํ‚น๋ฐ›๊ธฐ ๊ทธ์ง€์—†๋‹ค. 

์ฝ”ํ‹€๋ฆฐ์€ ๊ฑฐ์˜ ๋ชจ๋ฅธ๋‹ค๊ณ  ๋ด๋„ ๋ฌด๋ฐฉํ•œ ์ˆ˜์ค€์œผ๋กœ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•๋งŒ ์•Œ์ง€๋งŒ, ๊ทธ๋ž˜๋„ ์ƒˆ๋กœ์šด ๋„์ „ ํ•˜๋Š” ์…ˆ ์น˜๊ณ , ๋งˆ์นจ ์ž…๋ฌธ์„œ๋„ ์žˆ์œผ๋‹ˆ ์ฝ”ํ‹€๋ฆฐ์„ ์‚ฌ์šฉํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.(๋ฌผ๋ก  ์‹ค์Šต์€ ์ž๋ฐ”๋กœ ๋”ฐ๋ผํ• ๊ฑฐ์ง€๋งŒ,,,,๋”ฐ๋กœ ๊ณต๋ถ€ํ•˜์ž ์ฝ”ํ‹€๋ฆฐ) 

 

๋ฒ„์ „ ์„ ํƒํ•˜๊ธฐ

๋ฒ„์ „ ์„ ํƒํ•˜๊ธฐ ์ฑ•ํ„ฐ๊ฐ€ ์žˆ์–ด์„œ ๋ฐฑ์—”๋“œ ์ธ๊ตฌ๋“ค์€ ์–ด๋–ค ์‹ธ์›€์„ ํ•˜๋Š”๊ฑฐ๋ƒ...๋ผ๊ณ  ๋†€๋ผ๊ณ  ์žˆ์—ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•  ๋•Œ๋Š” ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์—†๋‹ค๋ฉด ๊ฑฐ์˜ @latest์ด๊ณ , ๋”ฐ๋กœ ๋ฒ„์ „์„ ์„ ํƒํ•œ ์ ์€ ๊ฑฐ์˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ตœ๊ทผ react 19์™€ ์ผ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ˜ธํ™˜ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•œ ๊ฒฝํ—˜์€ ์žˆ์ง€๋งŒ ์˜๋„์ ์œผ๋กœ ๋ฒ„์ „์„ ๋ช…์‹œํ•˜์—ฌ ์‚ฌ์šฉํ•œ ๊ฒฝํ—˜์€ ๊ฑฐ์˜ ์—†์—ˆ๋‹ค.

 

๊ทผ๋ฐ ์•„๋‹ˆ๋‚˜ ๋‹ค๋ฅผ๊นŒ ์Šคํ”„๋ง๋ถ€ํŠธ๋„ ๊ทนํžˆ ์ผ๋ถ€ ์˜ˆ์™ธ๋‚˜ ์ž„์‹œ ์ƒํ™ฉ์„ ์ œ์™ธํ•œ๋‹ค๋ฉด, ์‹ค์ œ ํ”„๋กœ๋•ํŠธ๋กœ ๋ฐฐํฌ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ•ญ์ƒ ํ˜„์žฌ ๋ฒ„์ „์˜ ์Šคํ”„๋ง ๋ถ€ํŠธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋ฌผ๋ก  ๋‚˜๋Š” ํ•™์Šต ์šฉ๋„๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ต์žฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ„์ „(๊ฝค๋‚˜ ์˜ค๋ž˜๋จ)์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค.


๊ฐ„๋‹จํ•˜๊ฒŒ ์Šคํ”„๋ง ๋ถ€ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉํ•  ์„ค์ •๋“ค์„ ์•Œ์•„๋ณด์•˜๋‹ค. ๊ฐ ๋ฐฉ์‹์˜ ์žฅ๋‹จ์ ์„ ์•Œ๊ณ , ์„ ํƒ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์‹ค์Šต ํ™˜๊ฒฝ์—์„œ๋Š” Java๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ,  gradle-groovy๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ, Maven๊ณผ Kotlin์ด ๋” ๋งˆ์Œ์— ๋“œ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์ฑ…์„ ๋”ฐ๋ผ์„œ ์‹ค์Šต์„ ์ง„ํ–‰ํ•˜๋˜, ์ฝ”ํ‹€๋ฆฐ์„ ๋ณ‘ํ–‰ํ•˜๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๊ณต๋ถ€ํ•ด๋ด์•ผ๊ฒ ๋‹ค. ์ง„์งœ ์ž๋ฐ” ๋„ˆ๋ฌด ์‹ซ์›€