CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /๋ชจ๋“  Java ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•  ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๊ณ  ์œ ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

๋ชจ๋“  Java ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•  ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๊ณ  ์œ ์šฉํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

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

JUnit์€ Java ๋ฐ JVM์„ ์œ„ํ•œ ๋งค์šฐ ์ผ๋ฐ˜์ ์ด๊ณ  ์ž˜ ์•Œ๋ ค์ง„ ์˜คํ”ˆ ์†Œ์Šค ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์ง‘ํ•ฉ์ ์œผ๋กœ xUnit์œผ๋กœ ์•Œ๋ ค์ง„ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ ์ œํ’ˆ๊ตฐ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. Oracle์— ๋”ฐ๋ฅด๋ฉด JUnit์€ Java ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค.

Apache Commons๋Š” ๋‹ค์–‘ํ•œ ๋ชฉ์ ์„ ์œ„ํ•ด ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Java ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์ค‘์ ์„ ๋‘” Apache Software Foundation์˜ ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. Apache Commons์—๋Š” Java ๊ฐœ๋ฐœ์ž์˜ ๊ฑฐ์˜ ๋ชจ๋“  ์š”๊ตฌ์— ๋งž๋Š” ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. IO ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์„ ์ง€์›ํ•˜๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Apache Commons IO๋Š” ์ด ์„ธํŠธ์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

Google Guava๋Š” ์ƒˆ๋กœ์šด ์ปฌ๋ ‰์…˜ ์œ ํ˜•(์˜ˆ: multimap ๋ฐ multiset), ๋ถˆ๋ณ€ ์ปฌ๋ ‰์…˜, ๊ทธ๋ž˜ํ”„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋™์‹œ์„ฑ ์œ ํ‹ธ๋ฆฌํ‹ฐ, I/O, ํ•ด์‹ฑ, ์บ์‹ฑ, ํ”„๋ฆฌ๋ฏธํ‹ฐ๋ธŒ, ๋ฌธ์ž์—ด ๋ฐ ๋”. Guava๋Š” Google ๋‚ด์˜ ๋Œ€๋ถ€๋ถ„์˜ Java ํ”„๋กœ์ ํŠธ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

"JSON for Java"๋กœ ์•Œ๋ ค์ง„ Jackson์€ ์ฃผ์š” ์ŠคํŠธ๋ฆฌ๋ฐ JSON ๊ตฌ๋ฌธ ๋ถ„์„๊ธฐ/์ƒ์„ฑ๊ธฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(JSON๊ณผ์˜ POJO) ๋ฐ JVM์šฉ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋„๊ตฌ์˜ ์ธ๊ธฐ ์žˆ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Avro, BSON, CBOR, CSV, Smile, (Java) Properties, Protobuf, XML ๋˜๋Š” YAML๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ถ”๊ฐ€ ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋ชจ๋“ˆ Guava, Joda, PCollection ๋“ฑ๊ณผ ๊ฐ™์ด ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ง€์›ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋ชจ๋“ˆ ์„ธํŠธ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

Mockito๋Š” Java ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํšจ๊ณผ์ ์ธ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์— ์‚ฌ์šฉ๋˜๋Š” ๋ชจํ‚น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. Java๋ฅผ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์กฐ๋กฑ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ํ•˜๋‚˜๋กœ ๊ฐ„์ฃผ๋ฉ๋‹ˆ๋‹ค.

SLF4J๋Š” Simple Logging Facade for Java์˜ ์•ฝ์ž์ž…๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ(์˜ˆ: java.util.logging, logback, log4j)์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ํŒŒ์‚ฌ๋“œ ๋˜๋Š” ์ถ”์ƒํ™”๋กœ ์‚ฌ์šฉ๋˜์–ด ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐฐํฌ ์‹œ ์›ํ•˜๋Š” ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

JAXB(Java Architecture for XML Binding)๋Š” XML ๋ฌธ์„œ์™€ Java ๊ฐœ์ฒด ๊ฐ„์˜ ๋งคํ•‘์„ ์ž๋™ํ™”ํ•˜๋Š” API ๋ฐ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ์ด๋ฅผ ์–ธ๋งˆ์ƒฌ๋งํ•˜์ง€ ์•Š๊ณ ๋„ XML ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Apache Log4j๋Š” Java ์—์ฝ”์‹œ์Šคํ…œ ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋งค์šฐ ์˜ค๋ž˜๋˜๊ณ  ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. Apache Log4j 2๋Š” ์ด์ „ ๋ฒ„์ „์— ๋น„ํ•ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ Log4j์˜ ์ตœ์‹  ์—…๋ฐ์ดํŠธ ๋ฒ„์ „์ž…๋‹ˆ๋‹ค.

Android AppCompat ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด์ „ API ๋ฒ„์ „์˜ Android์—์„œ ์ƒˆ API์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(๋Œ€๋ถ€๋ถ„ Material Design ์‚ฌ์šฉ).

Apache HttpComponents๋Š” HTTP ๋ฐ ๊ด€๋ จ ํ”„๋กœํ† ์ฝœ์— ์ค‘์ ์„ ๋‘” ํ•˜์œ„ ์ˆ˜์ค€ Java ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋„๊ตฌ ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ HTTP ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ๊ฐ•๋ ฅํ•œ ์ง€์›์„ ์ œ๊ณตํ•˜๋ฉด์„œ ํ™•์žฅ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ HttpComponents ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €, ์›น ์ŠคํŒŒ์ด๋”, HTTP ํ”„๋ก์‹œ, ์›น ์„œ๋น„์Šค ์ „์†ก ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ๋ถ„์‚ฐ ํ†ต์‹ ์„ ์œ„ํ•ด HTTP ํ”„๋กœํ† ์ฝœ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION