[Java] Java8, Java11, Java17์˜ ์ฐจ์ด ๋ฐ ๊ธฐ๋Šฅ

Java8, Java11, Java17 ์ˆ˜๋งŽ์€ ๋ฒ„์ „๋“ค์ด ์žˆ๋‹ค๊ณ  ์ด์•ผ๊ธฐ ํ•˜์ง€๋งŒ,

์ด ๋ฒ„์ „๋“ค์— ๋Œ€ํ•ด์„œ ์ด๊ฒŒ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ค ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€๋Š” ์ž˜ ๋ชฐ๋ผ์„œ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.

 

Java8, Java11, Java17

์ด๊ฒƒ๋“ค์€ ์˜ค๋ผํด(Oracle)์ด๋‚˜ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ์— ์˜ํ•ด ๊ฐœ๋ฐœ๋œ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ์—ฌ๋Ÿฌ ๋ฒ„์ „์„ ๋งํ•œ๋‹ค. 

์ด๋Ÿฌํ•œ ๋ฒ„์ „๋“ค์€ ์ž๋ฐ” ํ”Œ๋žซํผ์˜ ์ฃผ์š” ์—…๋ฐ์ดํŠธ์ด๋ฉฐ, ๊ฐ๊ฐ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๊ณผ ๊ฐœ์„ ์‚ฌํ•ญ์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. 

 

Java 8 

1. ๋žŒ๋‹ค ํ‘œํ˜„์‹(Lambda Expressions) 

: ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋žŒ๋‹ค ํ‘œํ˜„์‹์ด ๋„์ž…๋˜์—ˆ๋‹ค. 

๋žŒ๋‹ค ํ‘œํ˜„์‹์„ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

2. ์ŠคํŠธ๋ฆผ API(Stream API) 

: ์ปฌ๋ ‰์…˜ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ์ƒˆ๋กœ์šด API๋กœ, ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๋ฅผ ์ง€์›ํ•˜๋ฉฐ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ์„ ์ฑ„ํƒํ•œ๋‹ค. 

 

3. ๋‚ ์งœ์™€ ์‹œ๊ฐ„ API(Date and Time API) 

: java.time ํŒจํ‚ค์ง€๊ฐ€ ๋„์ž…๋˜์–ด ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. 

 

4. ๋””ํดํŠธ ๋ฉ”์†Œ๋“œ(Default Methods) 

: ์ธํ„ฐํŽ˜์ด์Šค์— ๋””ํดํŠธ ๋ฉ”์†Œ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

์ด๋ฅผ ํ†ตํ•ด ๊ธฐ์กด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 


Java 11

1. ๋กœ์ปฌ ๋ณ€์ˆ˜ ๋ฌธ๋ฒ• (Local Variable Syntax for Lambda Parameters) 

: ๋žŒ๋‹ค ํ‘œํ˜„์‹์˜ ํŒŒ๋ผ๋ฏธํ„ฐ์— var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ์ปฌ ๋ณ€์ˆ˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. 

 

2. HTTP ํด๋ผ์ด์–ธํŠธ (HTTP Client)

: ํ‘œ์ค€ํ™”๋œ HTTP ํด๋ผ์ด์–ธํŠธ API๊ฐ€ ๋„์ž…๋˜์—ˆ๋‹ค. 

์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ HTTP/2 ๋ฐ WebSocket์„ ์ง€์›ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

3. Epsilon GC 

: ์‹คํ—˜์ ์ธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์ธ Epsilon GC๊ฐ€ ๋„์ž…๋˜์—ˆ๋‹ค. 

์ด๋Š” GC๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜์–ด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฐ ํ•ด์ œ ์„ฑ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค. 

 

4. ZGC(Experimental)

: ๋Œ€์šฉ๋Ÿ‰ ํž™ ๋ฉ”๋ชจ๋ฆฌ์— ์ตœ์ ํ™”๋œ ์‹คํ—˜์ ์ธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์ธ ZGC๊ฐ€ ๋„์ž…๋˜์—ˆ๋‹ค. 

์ด๋Š” ๋งค์šฐ ํฐ ํž™ ํฌ๊ธฐ์—์„œ๋„ ์ผ๊ด€๋œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค. 

 


Java 17

1. ํŒจํ„ด ๋งค์นญ(Pattern Matching)

: instance of ์—ฐ์‚ฐ์ž์™€ switch ๋ฌธ์— ํŒจํ„ด ๋งค์นญ์„ ๋„์ž…ํ•˜์˜€๋‹ค. 

์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. 

 

2. Sealed ํด๋ž˜์Šค (Sealed Classes)

: ํด๋ž˜์Šค ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ด‰์ธ(Sealed) ํ•จ์œผ๋กœ์จ ์™ธ๋ถ€์—์„œ ์ƒ์†์ด๋‚˜ ๊ตฌํ˜„์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

3. ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ(New Memory Structure) 

: ๊ธฐ์กด์˜ HotSpot ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ฐœ์„ ํ•˜์—ฌ ํšจ์œจ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค. 

 

4. ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ์— ํž™ ํฌ๊ธฐ ์ง€์ • (Heap Size on Launch) 

: java ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฉ”์ธ ๋ฉ”์†Œ๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ํž™ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. 

๋Œ“๊ธ€