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

Programming/JAVA

[ JAVA ] ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•˜๊ธฐ

๐ŸŽˆ ๋“ค์–ด๊ฐ€๋ฉฐ

์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Java ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ณผ์ •์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

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

 

โœจ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• ์ˆœ์„œ

1. Java ์„ค์น˜

2. IDE ์„ค์น˜

3. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

 

1. Java ์„ค์น˜

๊ฐœ๋ฐœ์— ์•ž์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์ผ๋‹จ, ์ž๋ฐ” ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜๊ธฐ ์œ„ํ•ด ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Java๋ฅผ ์„ค์น˜ํ•˜๋ ค๋ฉด ์–ด๋””๋กœ ๊ฐ€์•ผํ• ๊นŒ. ๋Œ€ํ‘œ์ ์ธ Java ๋Š” Oracle JDK์™€ OpenJDK๋กœ ๋‚˜๋‰  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

1.1 ์™œ Java๋Š” ๋‘ ๊ฐœ์ธ๊ฐ€์š”?

์š”์•ฝํ•˜์ž๋ฉด, Java์˜ ๋ฌด๋ฃŒ ๋…ผ์Ÿ์€ 2011๋…„ ์˜ค๋ผํด์ด ์†Œ์œ ๊ถŒ์„ ๊ฐ€์ง€๋ฉด์„œ ์‹œ์ž‘๋˜์—ˆ๊ณ , Java๋ผ๋Š” ์–ธ์–ด ์ž์ฒด๋Š” GPL ๋ผ์ด์„ผ์Šค๋กœ ๋ฌด๋ฃŒ์ด๋ฉฐ, Oracle ์ธก์—์„œ๋Š” BCL(Oracle Binary Code License) ๋ผ์ด์„ผ์Šค๋กœ ์ผ๋ฐ˜์ ์ธ ๋ชฉ์ (๋น„์ƒ์—…์ )์˜ ์ปดํ“จํŒ…์—๋งŒ ์‚ฌ์šฉ์‹œ ๋ฌด๋ฃŒ๋ผ๊ณ  ๋ฐํžˆ๊ณ  ์žˆ๋‹ค. ์ฆ‰,  "Oracle JDK๋Š” ๊ฐœ๋ฐœํ™˜๊ฒฝ์—์„œ์˜ ์‚ฌ์šฉ์€ ๋ฌธ์ œ๊ฐ€ ์—†์œผ๋‚˜, ์šด์˜ํ™˜๊ฒฝ์—์„œ๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค" ๋Š” ๊ฒƒ์ด ๊ด€๊ฑด์ž…๋‹ˆ๋‹ค.

ref) Java ์œ ๋ฃŒ ๋…ผ์Ÿ, Oracle JDK์™€ OpenJDK์˜ ์ฐจ์ด ์ •๋ฆฌ", ์ง€๋‹จ๋กœ๋ณดํŠธ, 2017, ๋งํฌ

Java๋Š” ๊ธฐ์—…์—์„œ ๊ฐ€์žฅ ์‚ฌ๋ž‘ ๋ฐ›๊ณ  ์žˆ๋Š” ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์—ฌํƒœ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•ด์˜ค๋˜ Java๊ฐ€ Subscription ๋ฐฉ์‹(๋‹ค๋‹ฌ์ด )์˜ ์œ ๋ฃŒ๊ฐ€ ๋˜๋‹ˆ ๊ธฐ์—…์—์„œ๋Š” ๋Œ€์•ˆ์„ ์ฐพ๊ธฐ ์‹œ์ž‘ํ–ˆ๋Š”๋ฐ์š”, ๊ทธ ๋Œ€์•ˆ์ด ๋ฐ”๋กœ ์˜คํ”ˆ์†Œ์Šค ๊ธฐ๋ฐ˜์˜ OpenJDK์ž…๋‹ˆ๋‹ค.

OpenJDK๋Š” ์˜คํ”ˆ์†Œ์Šค๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ •์„ฑ์ด ์˜์‹ฌ๋˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ์š”, ๊ฒ€์ฆ๋œ ๋ฒ„์ „(TCK ์ธ์ฆ)์„ ์ด์šฉํ•˜๋ฉด ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค! ์ฐธ๊ณ ๋กœ TCK(Technology Compatibility Kit)๋Š” ์ž๋ฐ” ๊ธฐ์ˆ ์„ ๊ตฌํ˜„ํ•œ License ๋“ค์˜ VM์ด ๊ทœ๊ฒฉ์— ๋งž๊ฒŒ ์ œ๋Œ€๋กœ ๊ตฌํ˜„๋˜์—ˆ๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ทธ ๋„๊ตฌ๋“ค์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค!

 

1.2. Java ์„ค์น˜ํ•˜๊ธฐ

์šฐ์„  ์„ค์น˜๋ฅผ ์œ„ํ•ด ์˜ค๋ผํด ํ™ˆํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ์˜ค๋ผํด Java๋Š” ์œ ๋ฃŒ์ง€๋งŒ, ๊ฐœ๋ฐœ์šฉ์œผ๋กœ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ผ์ด์„ผ์Šค ๋น„์šฉ์„ ์ง€๋ถˆํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฑฑ์ •ํ•˜์ง€ ์•Š์œผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค! ๋‹จ, ๋‹ค์šด๋กœ๋“œ์‹œ Oracle ํ™ˆํŽ˜์ด์ง€์— ๋กœ๊ทธ์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฒˆ๊ฑฐ๋กœ์šฐ์‹œ๋‹ค๋ฉด OpenJDK ์„ค์น˜๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค:) https://www.oracle.com/java/technologies/downloads/

Oracle ํ™ˆํŽ˜์ด์ง€

 

1.3 JDK vs JRE

์„ค์น˜ ํ•˜๋ ค๊ณ  ๋ง‰์ƒ๋ดค๋”๋‹ˆ, JDK๋Š” ๋ญ๊ณ  JRE๋Š” ๋ญ์•ผ!? ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ์žˆ์„ ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค!

  • JDK๋ž€? JDK๋ž€ ์ž๋ฐ” ๊ฐœ๋ฐœํ‚คํŠธ(JDK, Java Development Kit)์˜ ์•ฝ์ž๋กœ, ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ์ž๋ฐ” ๊ฐ€์ƒ ๊ธฐ๊ณ„(JVM), ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ API, ์ปดํŒŒ์ผ๋Ÿฌ ๋“ฑ์˜ ๊ฐœ๋ฐœ ๋„๊ตฌ๊ฐ€ ํฌํ•จ๋œ ๊ฐœ๋ฐœ ํ‚คํŠธ์ž…๋‹ˆ๋‹ค.
  • JRE๋Š” ์ž๋ฐ” ์‹คํ–‰ ํ™˜๊ฒฝ(JRE, Java Runtime Environment)์˜ ์•ฝ์ž๋กœ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ์—๋„ Java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด JRE ๋งŒ ์„ค์น˜ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์š”์•ฝํ•˜์ž๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ฃ !

  •  JRE = JVM + ํ‘œ์ค€ ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ  = ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์šฉ 
  • JDK = JRE + ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋„๊ตฌ = ๊ฐœ๋ฐœ์ž์šฉ

 

์ด๋ฐ–์—๋„ ์„ค์น˜์‹œ ์ฃผ์˜์‚ฌํ•ญ์œผ๋กœ๋Š”

  • ์šด์˜์ฒด์ œ ํ™•์ธํ•˜๊ธฐ: linux, macOS, Solaris, Windows
  • bit์ˆ˜(32 Bit/ 64 Bit) ํ™•์ธํ•˜๊ธฐ

๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค!

 

๐ŸŒ• 2. Java IDE ์„ค์น˜: Eclipse ์„ค์น˜

IDE๋ž€, ํ†ตํ•ฉ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ(IDE, Integration Development Environment)์˜ ์•ฝ์ž๋กœ, ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ํ†ตํ•ฉ ๊ฐœ๋ฐœ ๋„๊ตฌ๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š” Java IDE๋กœ ์œ ๋ช…ํ•œ Eclipse๋ฅผ ์„ค์น˜ํ•˜์—ฌ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ถ”๊ฐ€๋กœ ์ตœ๊ทผ์—๋Š” JetBrains ์‚ฌ์˜ IntelliJ๋„ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Eclipse Installer๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์„ค์น˜ํ•œ๋‹ค. => Eclipse ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€

Eclipse Installer

 

eclipse ์„ค์น˜๋ฅผ ํ•˜๋‹ค๊ฐ€ ๊ฐ„ํ˜น ์ด๋Ÿฐ ์„ ํƒ์ง€์— ๋†€๋ž€์ ์€ ์—†์œผ์‹ ๊ฐ€์š”? ์™œ ์ด๋ ‡๊ฒŒ ์„ ํƒ์ง€๊ฐ€ ๋งŽ์€๊ฑฐ์•ผ...

์ •๋ฆฌํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค! ์•„๋ž˜ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋งž๊ฒŒ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ๋˜๋Š”๋ฐ, ์œ„์—์„œ 3๋ฒˆ์งธ๋ถ€ํ„ฐ๋Š” Java ๊ฐœ๋ฐœ ๋ชฉ์ ์ด ์•„๋‹ˆ๋‹ˆ, ์ œ์™ธํ•˜์…”๋„ ๋ฉ๋‹ˆ๋‹ค!

๋˜ํ•œ ์ˆœ์ˆ˜ Java Application์„ ๊ฐœ๋ฐœํ•˜๋Š” ์šฉ๋„๋Š” ๊ฑฐ์˜ ์—†์œผ๋‹ˆ ์•„๋ž˜ Eclipse IDE for Enterprise Java Developers ๋ฅผ ์„ ํƒํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค!

  • ๋‹จ์ˆœํžˆ Java ์–ธ์–ด๋งŒ์„ ๊ณต๋ถ€ํ•  ๋ชฉ์ : Eclipse IDE for Java Developers๋ฅผ ์„ ํƒ
  • ์ถ”ํ›„ ์›น ํ”„๋กœ์ ํŠธ ๋ชฉ์ : Eclipse IDE for Enterprise Java Developers(Java EE) ์„ ํƒ

 

๐ŸŒ› 3. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •: Path ์„ค์ •

Java๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šฐ๋Š” ์‚ฌ๋žŒ๋“ค์€ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋“ฑ๋ก, Path ๋“ฑ๋ก์„ ์‹ค์Šตํ•˜๋ฉด์„œ ์™œ ํ•ด์•ผํ•˜๋Š” ์ง€ ์ด์œ ๋ฅผ ์ž˜ ๋ชจ๋ฅผ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

IDE(Eclipse) ์ƒ์—์„œ๋Š” ๊ฑฐ์˜ ์•„๋ฌด๋Ÿฐ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ธ๋ฐ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ  Path์— ๋“ฑ๋กํ•˜๋Š” ์ด์œ ๋Š” ์ž๋ฐ”๋กœ ๊ฐœ๋ฐœ๋œ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ๋•Œ ์š”๊ตฌ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค! (์–ธ์ œ ์–ด๋””์„œ ์š”๊ตฌํ• ์ง€ ๋ชจ๋ฅด๋Š” ์ƒํ™ฉ)

ํŠนํžˆ, ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ(cmd)์ƒ์—์„œ ์ž๋ฐ” ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” path์— ๋ช…๋ น์–ด๊ฐ€ ์žˆ๋Š” ์œ„์น˜๋ฅผ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!

์‹œ์Šคํ…œ - ์‹œ์Šคํ…œ ์†์„ฑ - ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํด๋ฆญ
Path์— java์˜ ๋ช…๋ น์–ด ๋””๋ ‰ํ„ฐ๋ฆฌ ์ถ”๊ฐ€

 

path์— %JAVA_HOME%\bin; ๋ฅผ ์•ž์— ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค!

path ๋“ฑ๋ก์ด ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด javac ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค

 

์ž ์ด์ œ, ์ž๋ฐ”๋ฅผ ์‹œ์ž‘ํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค!

๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ๊ณต๊ฐ&๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค๐Ÿ˜