Skip to content

Latest commit

ย 

History

History
96 lines (71 loc) ยท 4.43 KB

java.md

File metadata and controls

96 lines (71 loc) ยท 4.43 KB

JAVA์˜ ํŠน์ง•

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

1.๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด

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

2.์šด์˜์ฒด์ œ์— ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘

 "Write once, run anywhere"

์šด์˜์ฒด์ œ์˜ ์ข…๋ฅ˜์— ๊ด€๊ณ„์—†์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (JVM)์„ ํ†ตํ•ด์„œ ๊ฐ€๋Šฅํ•œ ์ผ์ž…๋‹ˆ๋‹ค.

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

๊ทธ๋Ÿฌ๋‚˜, JVM์€ ์šด์˜์ฒด์ œ์— ์ข…์†์ ์ด๋‹ค.์ฌ์—์„œ๋Š” ์—ฌ๋Ÿฌ ์šด์˜์ฒด์ œ์— 
์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ JVM์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

3.์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€๋Š” ๋‹ฌ๋ฆฌ, ์ž๋ฐ”๋Š” ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(GC)๊ฐ€ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ 
์ฐธ์กฐ๋˜๊ณ  ์žˆ์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•ด์ค๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์ง•์œผ๋กœ ์ธํ•ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์— ์‹ ๊ฒฝ ์“ธ ํ•„์š” ์—†์ด 
์˜ค์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—๋งŒ ์ง‘์ค‘ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ์ง€์›

ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ ๋‹จ์œ„๊ฐ€ ๋™์ผํ•œ ์“ฐ๋ ˆ๋“œ๋ฅผ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๋ฐ”์˜ ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ๋Š” ์‹œ์Šคํ…œ๊ณผ ๊ด€๊ณ„์—†์ด ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, Java API๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

5.๋™์  ๋กœ๋”ฉ์˜ ์ง€์›

๋™์ ๋กœ๋”ฉ์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ํด๋ž˜์Šค๋ฅผ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 
์ด๋Š” ๋Ÿฐํƒ€์ž„ ์‹œ์— ํ•„์š”ํ•œ ํด๋ž˜์Šค๋ฅผ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, 
์ž๋ฐ”์˜ ์œ ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ๋†’์ด๋Š” ๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.

์ž๋ฐ”์˜ ๋™์ ๋กœ๋”ฉ์€ ์ฃผ๋กœ ํด๋ž˜์Šค๋กœ๋”(ClassLoader)์™€ ๋ฆฌํ”Œ๋ ‰์…˜(Reflection)์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค.

ํด๋ž˜์Šค๋กœ๋”(ClassLoader): ํด๋ž˜์Šค๋กœ๋”๋Š” ์ž๋ฐ” ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ํด๋ž˜์Šค๋ฅผ
๋™์ ์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. 

์ž๋ฐ”์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์„ธ ๊ฐ€์ง€ ํด๋ž˜์Šค๋กœ๋”๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค
1.๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํด๋ž˜์Šค๋กœ๋”  2.ํ™•์žฅ ํด๋ž˜์Šค๋กœ๋” 3.์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์Šค๋กœ๋”

๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํด๋ž˜์Šค๋กœ๋”๋Š” ์ž๋ฐ” ๋Ÿฐํƒ€์ž„ ์ž์ฒด๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค 
ํ™•์žฅ ํด๋ž˜์Šค๋กœ๋”๋Š” ์‹œ์Šคํ…œ ํ™•์žฅ ์˜์—ญ์˜ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค. 
์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์Šค๋กœ๋”๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํด๋ž˜์ŠคํŒจ์Šค์— ์žˆ๋Š” ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค. 
๊ฐœ๋ฐœ์ž๋Š” ์ปค์Šคํ…€ ํด๋ž˜์Šค๋กœ๋”๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ๋™์ ๋กœ๋”ฉ์„ ๊ตฌํ˜„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌํ”Œ๋ ‰์…˜(Reflection): ๋ฆฌํ”Œ๋ ‰์…˜์€ ํ”„๋กœ๊ทธ๋žจ์ด ๋Ÿฐํƒ€์ž„์— ์ž๊ธฐ ์ž์‹ ์˜ ๊ตฌ์กฐ๋ฅผ ๋ถ„์„ํ•˜๊ณ  
์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. 

์ž๋ฐ”์—์„œ๋Š” Class ํด๋ž˜์Šค์™€ java.lang.reflect ํŒจํ‚ค์ง€๋ฅผ ํ†ตํ•ด ๋ฆฌํ”Œ๋ ‰์…˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 

๋ฆฌํ”Œ๋ ‰์…˜์„ ์ด์šฉํ•˜๋ฉด ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋กœ๋“œํ•˜๊ณ , ํด๋ž˜์Šค์˜ ํ•„๋“œ, 
๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž ๋“ฑ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 
์ด๋ฅผ ํ†ตํ•ด ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃจ๊ฑฐ๋‚˜ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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