๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก๐—ฃ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ถ๐—ป๐—ด๐Ÿ’ป/๐‰๐š๐ฏ๐š (15)

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Review] JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ - 2. ์ž๋ฐ” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„ํ”Œ๋กœ

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

[Review] JVM ๋ฐ‘๋ฐ”๋‹ฅ๊นŒ์ง€ ํŒŒํ—ค์น˜๊ธฐ - 1. ์ž๋ฐ” ๊ธฐ์ˆ  ์‹œ์Šคํ…œ

์ž๋ฐ”ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฟ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์†Œํ”„ํŠธ์›จ์–ด์™€ ๋ช…์„ธ๋กœ ๊ตฌ์„ฑ๋œ ๊ธฐ์ˆ  ์‹œ์Šคํ…œํฌ๋กœ์Šค ํ”Œ๋žซํผ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ณต์ƒ๋‹นํžˆ ์•ˆ์ „ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์„ ๊ฐ–์ท„๋‹ค.๋Ÿฐํƒ€์ž„์— ํ•ซ์ฝ”๋“œ๋ฅผ ๊ฐ์ง€, ์ปดํŒŒ์ผํ•˜๊ณ  ์ตœ์ ํ™”ํ•˜์—ฌ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ตœ์ƒ์˜ ์„ฑ๋Šฅ์„ ๋‚ด๋„๋ก ๋„์™€์ค€๋‹ค.ํ‘œ์ค€ API ํ’๋ถ€, ์ˆ˜๋งŽ์€ ๊ธฐ์—…๊ณผ ์˜คํ”ˆ ์†Œ์Šค ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์˜ ์„œ๋“œ ํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.์ž๋ฐ” ๊ธฐ์ˆ  ์‹œ์Šคํ…œ ์ผ๋ฐ˜์ ์œผ๋กœ ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ ์œ„์—์„œ ๋™์ž‘ํ•˜๋Š” ์ฝ”ํ‹€๋ฆฐ, ํด๋กœ์ €, JRuby, ๊ทธ๋ฃจ๋น„ ๋“ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๊ทธ ์™ธ ๊ด€๋ จ ํ”„๋กœ๊ทธ๋žจ๋“ค๋„ ์ž๋ฐ” ๊ธฐ์ˆ  ์‹œ์Šคํ…œ์— ์†ํ•œ๋‹ค.์ „ํ†ต์ ์œผ๋กœ ์ž๋ฐ” ๊ธฐ์ˆ  ์‹œ์Šคํ…œ์€ ๋‹ค์Œ ์š”์†Œ๋“ค์„ ํฌํ•จํ•œ๋‹ค.์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด(๋‹ค์–‘ํ•œ ํ•˜๋“œ์›จ์–ด ํ”Œ๋žซํผ์šฉ) ์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹  ๊ตฌํ˜„ํด๋ž˜์Šค ํŒŒ์ผ ํฌ๋งท์ž๋ฐ”..

[JAVA] JVM, JVM ๋ฉ”๋ชจ๋ฆฌ, ๊ฐ์ฒด, ์ธ์Šคํ„ด์Šค, ์˜ค๋ฒ„๋ผ์ด๋”ฉ, ์˜ค๋ฒ„๋กœ๋”ฉ, ์ถ”์ƒํ™”

์ž๋ฐ” ๊ฐ€์ƒ ๋จธ์‹ (Java Virtual Machine, JVM)์€ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ํ™˜๊ฒฝ์ด๋‹ค. ์ž๋ฐ” ์ฝ”๋“œ๋Š” ๋ฐ”๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฐ”์ดํŠธ์ฝ”๋“œ(.class ํŒŒ์ผ)๋กœ ๋ณ€ํ™˜๋˜๊ณ , ์ด ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• ์„ ํ•˜๋Š” ๊ฒŒ JVM์ด๋‹ค.  JVM์˜ ์ฃผ์š” ์—ญํ• ๋ฐ”์ดํŠธ์ฝ”๋“œ ์‹คํ–‰: ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณ€ํ™˜ํ•œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ ์ œ๊ณต: ํ•œ ๋ฒˆ ์ปดํŒŒ์ผ๋œ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์€ ์šด์˜ ์ฒด์ œ์™€ ์ƒ๊ด€์—†์ด ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค. ("Write Once, Run Anywhere")๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ: ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(GC)๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ๊ฐ์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์ •๋ฆฌํ•œ๋‹ค.๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ์ œ๊ณต: ์Šคํƒ, ํž™, ๋ฉ”์„œ๋“œ ์˜์—ญ ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ๋•๋Š”๋‹ค.  JVM ์‹คํ–‰ ๊ณผ์ •์†Œ์Šค ์ฝ”๋“œ(.java) ์ž‘์„ฑ์ปดํŒŒ์ผ(javac) → ๋ฐ”..

[Java] Action Tag

โญAction Tag ์•ก์…˜ ํƒœ๊ทธ ์„œ๋ฒ„๋‚˜ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์–ด๋–ค ํ–‰๋™์„ ํ•˜๋„๋ก ๋ช…๋ นํ•˜๋Š” ํƒœ๊ทธ ๊ธฐ๋Šฅ JSP ํŽ˜์ด์ง€์—์„œ ํŽ˜์ด์ง€์™€ ํŽ˜์ด์ง€ ์‚ฌ์ด๋ฅผ ์ œ์–ด ๋‹ค๋ฅธ ํŽ˜์ด์ง€์˜ ์‹คํ–‰๊ฒฐ๊ณผ ๋‚ด์šฉ์„ ํ˜„์žฌ ํŽ˜์ด์ง€์— ํฌํ•จ ์ž๋ฐ” ๋นˆ์ฆˆ (JavaBeans) (์ž๋ฐ”๊ฐ์ฒด) ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต ์ข…๋ฅ˜ Include ์—ฌ๋Ÿฌ jsp ํŽ˜์ด์ง€์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ํฌํ•จ ๋‚ด์šฉ(ex. header, footer)์ด ์žˆ์œผ๋ฉด ๋ณ„๋„ ํŒŒ์ผ ์ €์žฅํ•˜๊ณ  ํฌํ•จ ์†Œ์Šค์ฝ”๋“œ ์ž์ฒด๊ฐ€ ํฌํ•จ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€ํ•จ. ์•„๋‹˜ ์—๋Ÿฌ๋ฐœ์ƒํ•จ. ๐Ÿ†š action tag๋ฅผ ํ†ตํ•ด ๋ณ„๋„ ํŒŒ์ผ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ์Œ ์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋งŒ ํฌํ•จ๋จ ํ•ด์„ํ•œ ๊ฒฐ๊ณผ๋งŒ ์ •์  ํ…์ŠคํŠธ๋กœ ์ „๋‹ฌํ•จ include์—๋Š” 2๊ฐ€์ง€ ๋ฐฉ์‹์ด ์กด์žฌ include directive(์ง€์‹œ์–ด) ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ํฌํ•จ์‹œํ‚จ ํ›„์— ์ปดํŒŒ์ผ์„ ํ•œ..

[Java] JSP, Directive

JSP JSP(Java Server Page)๋Š” Servlet์˜ ํ™•์žฅ๋œ ๊ธฐ์ˆ ๋กœ ๋ธŒ๋ผ์šฐ์ €์— ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ HTML์ฝ”๋“œ์— JAVA ์ฝ”๋“œ๋ฅผ ํ˜ผ์šฉํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ด๋กœ์จ ๋””์ž์ธ๊ณผ ๋กœ์ง ๊ฐœ๋ฐœ์„ ๋ถ„์—…ํ™”์‹œ์ผœ ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ƒ์‚ฐํ•ด ๋‚ผ ์ˆ˜ ์žˆ๊ฒŒํ•œ๋‹ค. JSP ๊ธฐ๋ณธ๋ฌธ๋ฒ• ๋ฐ ์šฉ์–ด -> ์ „์—ญ๋ณ€์ˆ˜, ํ•จ์ˆ˜ -> ์ฝ”๋”ฉ, ์ง€์—ญ๋ณ€์ˆ˜ ->๋ฌธ์ž์—ด, ๋ณ€์ˆ˜๊ฐ’, ํ•จ์ˆ˜๋ฆฌํ„ด๊ฐ’ ์ถœ๋ ฅ ๋Š” ํ•ด๋‹น jspํŽ˜์ด์ง€์—์„œ ์–ด๋–ค ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š”์ง€, ์–ด๋–ค ์ž๋ฐ” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€, ์„ธ์…˜์— ์ฐธ์—ฌํ•˜๋Š”์ง€, ์ถœ๋ ฅ ๋ฒ„ํผ์˜ ์กด์žฌ์—ฌ๋ถ€๋“ฑ jspํŽ˜์ด์ง€๋ฅผ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. (ex) = exception์„ ํ•ธ๋“ค๋งํ•˜๊ธฐ์œ„ํ•ด ๋งŒ๋“  ์—๋ŸฌํŽ˜์ด์ง€์ด๋‹ค ๋ผ๊ณ  ์„ ์–ธ๋ฌธ. ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์—๋ŸฌํŽ˜์ด์ง€๋ผ๊ณ  ์„ ์–ธํ•˜๊ฒŒ ๋˜๋ฉด์€ exception๊ฐ์ฒด๊ฐ€ ์‚ด๊ณ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ exception...

[Java] Generic Method ์ œ๋„ค๋ฆญ ๋ฉ”์†Œ๋“œ

โญ์ œ๋„ค๋ฆญ ๋ฉ”์†Œ๋“œ(generic method) ์ œ๋„ค๋ฆญ ๋ฉ”์†Œ๋“œ๋ž€ ๋ฉ”์†Œ๋“œ์˜ ์„ ์–ธ๋ถ€์— ํƒ€์ž… ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์˜๋ฏธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ƒ์†๊ด€๊ณ„์™€ ์ƒ๊ด€์—†์ด ๋‹ค์–‘ํ•˜๊ฒŒ ์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ํ˜•ํƒœ public class ํด๋ž˜์Šค๋ช… { ... } public interface ์ธํ„ฐํŽ˜์ด์Šค๋ช… { ... } ํŠน์ง• ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์ด๋‚˜ ๋ฆฌํ„ด ํƒ€์ž…์— ๋Œ€ํ•œ ์ •์˜๋ฅผ ์™ธ๋ถ€๋กœ ๋ฏธ๋ฃธ ํƒ€์ž…์— ๋Œ€ํ•œ ์•ˆ์ •์„ฑ๊ณผ ์œ ์—ฐ์„ฑ ํ™•๋ณด ๋งŒ์•ฝ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค Object๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›๋Š”๋‹ค๋ฉด ๊ฐ์ฒด๋ณ€์ˆ˜์˜ ์‹ค์ œ ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋‚˜ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ• ๋•Œ ํ˜•๋ณ€ํ™˜ ํ•„์š”ํ•˜๋‹ค. ๋˜ํ•œ Object ๊ฐ์ฒด๋ณ€์ˆ˜์˜ ์‹ค์ œ ์ธ์Šคํ„ด์Šค ํ•„๋“œ๋‚˜ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ํ˜•๋ณ€ํ™˜์„ ์ž˜๋ชปํ•  ๊ฒฝ์šฐ ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ์ด๋ฅผ ์žก์ง€ ๋ชปํ•œ๋‹ค. ์ œ๋„ˆ๋ฆญ ์žฅ์  ๋ฐ์ดํ„ฐ ํ˜• ๋ณ€ํ™˜ ์ œ๊ฑฐ ์ปดํŒŒ์ผ์‹œ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ฒดํฌ ๊ฐ€๋Šฅ ์˜ˆ์‹œ impor..