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

๐Ÿ’Š Java & Kotlin & Spring/- Java & kotlin14

๋‹คํ˜•์„ฑ์„ ์œ„ํ•œ instanceof ๋ฅผ Generic ์œผ๋กœ ์ œ๊ฑฐํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ชฉ์ฐจ ์„œ๋ก  instanceof ๋ž€? ์ฝ”๋“œ์—์„œ instanceof ๋ฅผ ๋Š๊ปด๋ณด์ž Generic ์„ ์ด์šฉํ•˜์—ฌ ์šฐ์•„ํ•˜๊ฒŒ ์ œ๊ฑฐํ•˜๊ธฐ ๊ทธ๋Ÿผ์—๋„ ์กด์žฌํ•˜๋Š” ๋ฌธ์ œ์  ํ•˜์ง€๋งŒ? ์„œ๋ก  ์ž๋ฐ”์—์„œ ๋‹คํ˜•์„ฑ์„ ์ด์šฉํ•œ ๊ฐ์ฒด์ง€ํ–ฅ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค๋ณด๋ฉด ์ข…์ข… ํŠน์ • ๊ฐ์ฒด๊ฐ€ ์ง€์ •๋œ ์œ ํ˜•์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ ๊ฒฝ์šฐ ์šฐ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์„ ํƒ์ง€๊ฐ€ ์žˆ์ง€๋งŒ, ์˜ค๋Š˜์€ instanceof ์— ๋Œ€ํ•ด ์ง‘์ค‘ํ•˜๊ณ  ์ด์•ผ๊ธฐํ•ด๋ณด๋ ค ํ•œ๋‹ค. ๋‹คํ˜•์„ฑ์„ ์ด์šฉํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ช‡๊ฐ€์ง€ ์ž‘์—…์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๊ฒƒ์ด ๋ฐ”๋กœ instanceof ์—ฐ์‚ฐ์ž์ด๋‹ค. instanceof ๋ž€? ์•ž์„œ ๋งํ–ˆ๋“ฏ Java ์—์„œ๋Š” ์–ด๋–ค ๊ฐ์ฒด์˜ ํŠน์ • type ์— ๋Œ€ํ•ด์„œ ๋™์ผํ•œ type ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์„ instanceof ์—ฐ์‚ฐ์ž.. 2022. 4. 3.
[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] JVM์˜ Runtime Data Area, Execution Engine, Garbage Collection ์— ๋Œ€ํ•ด์„œ ์ž๋ฐ”๋ฅผ ๊ณต๋ถ€ํ•ด๋ณด์•˜๋‹ค๋ฉด ์ตํžˆ ๋“ค์—ˆ์„ JVM, Java Virtual Machine ์— ๋Œ€ํ•ด์„œ ์ด์•ผ๊ธฐํ•ด๋ณด๋ ค ํ•œ๋‹ค. ๋ง‰์—ฐํ•˜๊ฒŒ JVM ์ด ๋™์ž‘ํ•˜๊ณ  JVM์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ด๋ฉฐ Garbage Collection ์œผ๋กœ ์žฅ์ ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ๋งŽ์„ ๊ฒƒ์ด๋‹ค. ์˜ค๋Š˜์€ JRE์˜ ๊ตฌ์„ฑ์š”์†Œ์ธ JVM์ด ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑ๋˜๊ณ  Garbage Collection ์ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค. JVM ์ด๋ž€? ์ง€๋‚œ 2๋ฒˆ์˜ ์‹œ๊ฐ„์— ๊ฑฐ์ณ ์šฐ๋ฆฌ๋Š” Java Bytecode์™€ Java ClassLoader ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. ์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” ์–ด๋–ป๊ฒŒ ์ž๋ฐ” ํŒŒ์ผ์ด ์ปดํŒŒ์ผ๋˜์–ด ํด๋ž˜์Šค ํŒŒ์ผ๋กœ ๋ณ€ํ™˜์ด ๋˜๊ณ , ์–ด๋–ป๊ฒŒ ํด๋ž˜์Šค๋กœ๋”์— ์˜ํ•ด์„œ ๋™์  ์ ์žฌ๋˜๋ฉฐ verification ์„ ์ˆ˜ํ–‰ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. ์˜ค๋Š˜์€ ๊ทธ ์ดํ›„.. 2021. 12. 5.
[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] JRE์˜ Classloader ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž ์˜ค๋Š˜์€ JRE์˜ ํ•ต์‹ฌ ๊ตฌ์„ฑ์š”์†Œ์ธ Classloader์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. ์ง€๋‚œ ์‹œ๊ฐ„ ์šฐ๋ฆฌ๋Š” Java Bytecode ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜๋‹ค. [์กฐ๊ธˆ ๋” ๊นŠ์€ Java] Java Bytecode ๋ฅผ ์•Œ์•„๋ณด์ž (์ž๋ฐ”๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ?) ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์‹œ๊ฐ„ Java๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋“ค์—ˆ๋˜ ์†Œ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. Java๋Š” JVM ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‹์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค. ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณธ ๊ฒฝ wonit.tistory.com ์šฐ๋ฆฌ๊ฐ€ .java ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•œ๋‹ค๋ฉด .class ๋ผ๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜์ด๋˜๊ณ  JVM์ด ํ•ด๋‹น class ํŒŒ์ผ์„ ๋™์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ClassLoader ์ด๋‹ค. Java ClassLoader Java.. 2021. 12. 2.
[์กฐ๊ธˆ ๋” ๊นŠ์€ Java] Java Bytecode ๋ฅผ ์•Œ์•„๋ณด์ž (์ž๋ฐ”๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ?) ์šฐ๋ฆฌ๋Š” ๋งŽ์€ ์‹œ๊ฐ„ Java๋ฅผ ์ด์šฉํ•ด์„œ ๋‹ค์–‘ํ•œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋“ค์—ˆ๋˜ ์†Œ๋ฆฌ๊ฐ€ ์žˆ๋‹ค. Java๋Š” JVM ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํ”Œ๋žซํผ์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ  ์ด์‹์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค. ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณธ ๊ฒฝํ—˜์ด ์žˆ๋Š”๊ฐ€? ์˜ค๋Š˜์€ ์œ„์˜ JVM๊ณผ ์ด์‹์„ฑ์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ๊ผญ ์•Œ์•„์•ผ ํ•˜๋Š” Java Bytecode ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ ค ํ•œ๋‹ค. Java Bytecode, ์ž๋ฐ” ๋ฐ”์ดํŠธ์ฝ”๋“œ ์šฐ๋ฆฌ๋Š” Java ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•ด์„œ JDK๋ฅผ ์„ค์น˜ํ•˜๊ณ  Java ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ JRE ๋ฅผ ์„ค์น˜ํ•œ๋‹ค. ๋˜ํ•œ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ Compile ๊ณผ์ •์„ ๊ฑฐ์น˜๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ์ปดํŒŒ์ผ์€ ๋ฐ”๋กœ JDK๋‚˜ JRE ์— ํ•จ๊ป˜ ํฌํ•จ๋˜๋Š” javac.exe ์‹คํ–‰ํŒŒ์ผ์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ .java ํŒŒ์ผ์„ .. 2021. 11. 25.