๋‚ด์ผ๋ฐฐ์›€์บ ํ”„

๐Ÿ‘ท ์“ฐ๋ ˆ๋“œ(์ผ๊พผ) ํ”„๋กœ์„ธ์Šค์™€ ์“ฐ๋ ˆ๋“œ ๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค vs ์“ฐ๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค : ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์ž์›์„ ํ• ๋‹น๋ฐ›๋Š” ์ž‘์—…์˜ ๋‹จ์œ„ ์“ฐ๋ ˆ๋“œ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰์˜ ๋‹จ์œ„ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธ OS ์œ„์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ OS๊ฐ€ ๋งŒ๋“ค์–ด์ค€ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋จํ”„๋กœ์„ธ์Šค ๊ตฌ์กฐ OS๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•ด์ค„๋•Œ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ํ”„๋กœ๊ทธ๋žจ code์™€ data ๊ทธ๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(stack, heap)์„ ํ•จ๊ป˜ ํ• ๋‹น code ๋Š” java main ๋ฉ”์†Œ๋“œ์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธ data๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ ๊ณต๊ฐ„์„ ์˜๋ฏธ ์ „์—ญ ๋ณ€์ˆ˜, ์ •์  ๋ณ€์ˆ˜(static), ๋ฐฐ์—ด ๋“ฑ ์ดˆ๊ธฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„ memory stack : ์ง€์—ญ ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฆฌํ„ด ๋ณ€์ˆ˜๋ฅผ ์ €์žฅ..
Generic public class Generic { ... } Generic stringGeneric = new Generic(); Generic ์˜ ํด๋ž˜์Šค์ฒ˜๋Ÿผ, ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•œ ํด๋ž˜์Šค๋ฅผ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค๋ผ๊ณ  ํ•จ ์ œ๋„ค๋ฆญ์—์„œ ์‚ฌ์ด์— ๋“ค์–ด๊ฐ€๋Š” ๋ณ€์ˆ˜๋ช… T๋Š” ํƒ€์ž… ๋ณ€์ˆ˜๋ผ๊ณ  ํ•จ Generic ํด๋ž˜์Šค๋ฅผ ์›์‹œ ํƒ€์ž…์ด๋ผ๊ณ  ํ•จ ์ œํ•œ ๊ฐ์ฒด์˜ static ๋ฉค๋ฒ„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ ํƒ€์ž… ๋ณ€์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋กœ ๊ฐ„์ฃผ๋˜๊ณ , ๋ชจ๋“  ๊ฐ์ฒด์— ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ด์•ผํ•˜๋Š” static ํ•„๋“œ ํŠน์„ฑ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ ์ œ๋„ค๋ฆญ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Œ ๋ฌธ๋ฒ• ๋‹ค์ˆ˜์˜ ํƒ€์ž… ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ public class Generics { public E multiTypeMethod(T t, U u) { ... } } Generic instance ..
์˜ˆ์™ธ์ฒ˜๋ฆฌ ์˜ค๋ฅ˜(Error) vs ์˜ˆ์™ธ(Exception) ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ์ค€์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ๋ณต ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ์˜ค๋ฅ˜(Error) ์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ๋ณต์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์—์„œ, ๋˜๋Š” ์ฃผ๋กœ ํ™˜๊ฒฝ์ ์ธ ์ด์œ ๋กœ ๋ฐœ์ƒ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์–ด๋– ํ•œ ์—๋Ÿฌ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋Œ€์‘ ์˜ˆ์™ธ(Exception) ์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ๋ณต์ด ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ ํšŒ๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ „์ œ๋Š” ๊ทธ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ง€ํ•˜๊ณ , ๋Œ€์‘ํ–ˆ์„ ๊ฒƒ ์ฝ”๋“œ๋ ˆ๋ฒจ์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ƒํ™ฉ์— ๋Œ€ํ•œ ๋Œ€์‘์€ ์˜ˆ์™€ ์ฒ˜๋ฆฌ์— ์†ํ•จ ์˜ˆ์™ธ์˜ ์ข…๋ฅ˜ ์ฝ”๋“œ์‹คํ–‰ ๊ด€์ ์—์„œ ์˜ˆ์™ธ์˜ ์ข…๋ฅ˜ ์ปดํŒŒ์ผ ์—๋Ÿฌ(์˜ˆ์™ธ) .java -> .class ๋กœ ์ปดํŒŒ์ผํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๋Œ€๋ถ€๋ถ„ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ทœ์น™์„ ์ง€ํ‚ค์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒ ์˜ˆ) ์žˆ์ง€ ์•Š์€ ํด๋ž˜์Šค๋ฅผ ํ˜ธ์ถœ, ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅ..
ํด๋ž˜์Šค ๊ฐ์ฒด ๊ฐ์ฒด๋Š” ์„ธ์ƒ์— ์กด์žฌํ•˜๋Š” ๋ฌผ์ฒด๋ฅผ ๋œปํ•˜๋ฉฐ ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ์˜๋ฏธ ๊ฐ์ฒด๋Š” ์†์„ฑ๊ณผ ํ–‰์œ„๋กœ ๊ตฌ์„ฑ Java์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์†์„ฑ๊ณผ ํ–‰์œ„๋ฅผ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋กœ ์ •์˜ํ•˜์—ฌ ๊ตฌํ˜„ ๊ฐ€๋Šฅ ํ˜„์‹ค ์„ธ๊ณ„ ๊ฐ์ฒด -> ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฐ์ฒด : ๊ฐ์ฒด ๋ชจ๋ธ๋ง ๊ฐ์ฒด ๊ฐ„์˜ ํ˜‘๋ ฅ ํ–‰์œ„๋ฅผ ์ •์˜ํ•˜๋Š” Java์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง ๊ฐ์ฒด๋“ค์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜น์€ ๋งค๊ฐœ๊ฐ’์ด๋ผ๊ณ  ํ‘œํ˜„ ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง• ์บก์Šํ™” ์†์„ฑ(ํ•„๋“œ)์™€ ํ–‰์œ„(๋ฉ”์„œ๋“œ)๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ๊ฐ์ฒด๋กœ ๋งŒ๋“  ํ›„ ์‹ค์ œ ๋‚ด๋ถ€ ๊ตฌํ˜„ ๋‚ด์šฉ์€ ์™ธ๋ถ€์—์„œ ์•Œ ์ˆ˜ ์—†๊ฒŒ ๊ฐ์ถ”๋Š” ๊ฒƒ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ์ถœ์‹œ์ผœ ์ค€ ํ•„๋“œ ํ˜น์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅ ์™ธ๋ถ€ ๊ฐ์ฒด์—์„œ ๊ฐ์ฒด๋ฅผ ๋ณ€ํ•˜๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ ๋…ธ์ถœ์‹œํ‚ฌ ์ง€ ๊ฐ์ถœ ์ง€ ๊ฒฐ..
์—ฐ์‚ฐ์ž ๋น„ํŠธ ์—ฐ์‚ฐ 1 Byte = 8 Bits Bit๋Š” 0, 1 ๋‘˜ ์ค‘์˜ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ์„ ์ €์žฅํ•˜๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ €์žฅ(ํ‘œํ˜„)๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„ ์—ฐ์‚ฐ ์ค‘ Bit ์—ฐ์‚ฐ์ด ๊ฐ€์žฅ ๋น ๋ฆ„ 0, 1์€ 2์ง„์ˆ˜ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ž๋ฆฌ์ˆ˜๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ํšŸ์ˆ˜๋งŒํผ 2์˜ ๋ฐฐ์ˆ˜๋กœ ๊ณฑ์…ˆ์ด ์—ฐ์‚ฐ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผ ์ž๋ฆฌ์ˆ˜๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ํšŸ์ˆ˜๋งŒํผ 2์˜ ๋ฐฐ์ˆ˜๋กœ ๋‚˜๋ˆ—์…ˆ์ด ์—ฐ์‚ฐ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผ ์ปฌ๋ ‰์…˜ ๐Ÿงฌ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๋ฐฐ์—ด์„ ๋” ๊ณ ๋„ํ™”์‹œ์ผœ์„œ ์ปฌ๋ ‰์…˜์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ฐธ์กฐํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. ์ปฌ๋ ‰์…˜์€ ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋งŒ ์ €์žฅํ•จ์œผ๋กœ์จ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์ œ๊ณตํ•จ
JVM Java Virtual Machine ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๊ธฐ์œ„์— Java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ƒ์˜ ๊ธฐ๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธ ๐Ÿ’ก Java ์ปดํŒŒ์ผ๋Ÿฌ๋ž€? ์ž‘์„ฑํ•œ Java ์ฝ”๋“œ(.java ํŒŒ์ผ)์„ ์šด์˜์ฒด์ œ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ(.class ํŒŒ์ผ)๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ณ€ํ™˜๊ธฐ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๐Ÿ“‡ Java .class ์ฝ”๋“œ ํ•ด์„๊ธฐ ์šด์˜์ฒด์ œ๊ฐ€ ์ฝ์€ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ธฐ(๊ธฐ๊ณ„)๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ JIT ์ปดํŒŒ์ผ๋Ÿฌ ๐Ÿ“‡ ๋น ๋ฅธ Java .class ์ฝ”๋“œ ํ•ด์„๊ธฐ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ํšจ์œจ์„ ๋†’์—ฌ์ฃผ๋Š” ์„œํฌํ„ฐ ํ•ด์„๊ธฐ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๐Ÿ—‚๏ธ Java ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์˜์—ญ ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ JVM์ด ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ํด๋ž˜์Šค ๋กœ๋” ๐Ÿšš Java .class ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋‹ด๋Š” ์šด๋ฐ˜๊ธฐ JVM์œผ๋กœ class(๋ฐ”์ดํŠธ ์ฝ”๋“œ)๋ฅผ..
KIMHYEYUN
'๋‚ด์ผ๋ฐฐ์›€์บ ํ”„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (4 Page)