๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ/Java

[Java] ์ž๋ฐ”๋ฅผ ํ•œ๋‹ค๋ฉด ์•Œ์•„์•ผ ํ•˜๋Š” ์šฉ์–ด๋“ค

by HanaV 2023. 4. 14.
728x90

์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ํฌ๊ฒŒ ์ปดํŒŒ์ผ ์–ธ์–ด์™€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋กœ ๋‚˜๋‰œ๋‹ค.
์ปดํŒŒ์ผ ์–ธ์–ด(C, C++ ..)๋Š” ๋ฒˆ์—ญ๊ณผ ์‹คํ–‰์ด ๋”ฐ๋กœ ์ด๋ฃจ์–ด์ง€๋Š” ์–ธ์–ด์ด๊ณ , ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด(Python, JavaScript ..)๋Š” ๋ฒˆ์—ญ๊ณผ ์‹คํ–‰์„ ๋™์‹œ์— ์ง„ํ–‰ํ•˜๋Š” ์–ธ์–ด์ด๋‹ค.
์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์ค„ ๋‹จ์œ„๋กœ ๋ฒˆ์—ญํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์ด ๋Š๋ฆฌ์ง€๋งŒ, ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ์ค„ ์•„๋ž˜๋กœ๋Š” ์•„์˜ˆ ์‹คํ–‰์ด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊น…์ด ์‰ฝ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์ปดํŒŒ์ผ ์–ธ์–ด๋Š” ์ปดํŒŒ์ผ์ด ์˜ค๋ž˜๊ฑธ๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ ํ•œ ๋ฒˆ ์ปดํŒŒ์ผ์ด ๋์œผ๋ฉด ์‹คํ–‰๋งŒ ์‹œํ‚ค๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‹คํ–‰์€ ๋นจ๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์šด์˜์ฒด์ œ๋งˆ๋‹ค ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๊ณ , ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ๊ทธ OS์— ๋งž๋Š” ์–ธ์–ด๋กœ ๋‹ค์‹œ ์ปดํŒŒ์ผ์„ ํ•ด์ค˜์•ผํ•œ๋‹ค.

Java๋Š” ์–ผํ• ๋ณด๋ฉด ๋‹น์—ฐํžˆ ์ปดํŒŒ์ผ ์–ธ์–ด ๊ฐ™์ง€๋งŒ, ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์˜ ํŠน์ง•๋„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ์• ๋งคํ•˜๋‹ค. Java๋„ ๋‹ค๋ฅธ ์ปดํŒŒ์ผ ์–ธ์–ด์™€ ๊ฐ™์ด Java Compiler๋กœ ์ปดํŒŒ์ผ์„ ํ•˜๊ณ , JVM์—์„œ ์‹คํ–‰์„ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ปดํŒŒ์ผ ๋œ Java ํŒŒ์ผ(*.class)์€ JVM์•ˆ์— ์žˆ๋Š” ์ž๋ฐ” ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ํ•œ ์ค„์”ฉ ์‹คํ–‰์‹œํ‚ค๋Š”๋ฐ, ์ด ์ ์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ์–ธ์–ด์™€ ๋น„์Šทํ•˜๋‹ค.
๋˜ํ•œ, ๋‹ค๋ฅธ ์ปดํŒŒ์ผ ์–ธ์–ด์ธ C๋‚˜ C++๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ปดํŒŒ์ผ ๋œ ํŒŒ์ผ์„ ์šด์˜์ฒด์ œ๊ฐ€ ๋ฐ”๋กœ ์‹คํ–‰์‹œํ‚ฌ  ์ˆ˜ ์—†๋‹ค. Java ์†Œ์Šค ํŒŒ์ผ์„ JVM์ด ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” Byte์ฝ”๋“œ๋กœ ๋งŒ๋“ค๊ณ  (*.class ํŒŒ์ผ), ์ด ์ฝ”๋“œ๋Š” ๊ฐ€์ƒ๋จธ์‹ ์—์„œ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. Byte์ฝ”๋“œ๋Š” ์šด์˜์ฒด์ œ์˜ ์˜ํ–ฅ์„ ๊ฑฐ์˜ ๋ฐ›์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— OS์— ๋งž๋Š” ์–ธ์–ด๋กœ ๋‹ค์‹œ ์ปดํŒŒ์ผ ํ•ด์ค„ ํ•„์š”๊ฐ€ ์—†์—ˆ๋‹ค.
์ฆ‰, ๊ฐ€์ƒ๋จธ์‹ ๋งŒ ์žˆ๋‹ค๋ฉด ์šด์˜์ฒด๋‚˜ CPU๋“ฑ ํ”Œ๋žซํผ์— ์ƒ๊ด€์—†์ด ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ๊ฒŒ๋‹ค๊ฐ€ ํ˜‘์—…์ด ํŽธ๋ฆฌํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด์ด๊ธฐ๊นŒ์ง€ ํ•œ Java๊ฐ€ ๋Œ€์„ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ๋งŽ์ด ์“ฐ์ด๊ณ  ์žˆ๋‹ค.

Java ํ”Œ๋žซํผ์€ Java ์–ธ์–ด๋กœ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋˜๋Š” ํ”„๋กœ๊ทธ๋žจ ๋ชจ์Œ์ด๋‹ค.
Java Compiler(JAVAC), Java Virtual Machine(JVM), Garbage Collector, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ์‹คํ–‰ ์—”์ง„์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ๊ฐœ๋ฐœ ๋ถ„์•ผ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ ์šฐ๋ฆฌ๊ฐ€ ์“ฐ๋Š”๊ฑด ์ œ์ผ ๊ธฐ๋ณธ์ด ๋˜๋Š” Java SE(Standard Edition)์ด๋‹ค.

JDK(Java Development Kit)๋Š” Java ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์— ์‚ฌ์šฉ๋˜๋Š” Java ์ปดํŒŒ์ผ๋Ÿฌ, ๋””๋ฒ„๊ฑฐ, ํ•ต์‹ฌ ํด๋ž˜์Šค ๋“ฑ์ด ํฌํ•จ๋˜์–ด ์žˆ๋Š”๋ฐ, Java 8๋ฒ„์ „ ๊นŒ์ง€๋Š” JRE(Java Runtime Environment)๋„ ํฌํ•จ๋˜์–ด ์žˆ์—ˆ๋‹ค. JRE๋Š” ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹ ์œผ๋กœ ์‹คํ–‰ํ•  ๋•Œ ํ•„์š”ํ•œ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด์ง„ ํ”„๋กœ๊ทธ๋žจ(ํ•จ์ˆ˜)๋กœ, ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”๋กœ ํ•  ๋•Œ๋งˆ๋‹ค ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๋‹ด์œผ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ์ฐจ์ด์ ์ด๋ผ๋ฉด, ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ˜ธ์ถœ์„ ํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ์‹œํ‚ค๋Š” ๋Œ€๋กœ ์ฝ”๋”ฉ์„ ํ•ด์•ผํ•˜๋Š” ๋ฐ˜๋ฉด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ฃผ๋„๊ถŒ์ด ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์žˆ๋‹ค.
JDK๋Š” GPL(General Public License)์ด๋ฉฐ ๋ฌด๋ฃŒ๋กœ ๋ฐฐํฌ๋˜๊ณ  ์žˆ๊ณ , ํ˜„์žฌ JIT(Just In Time) ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

Java๋Š” ๊ณ„์† ์—…๊ทธ๋ ˆ์ด๋“œ ๋˜์–ด์„œ ์ƒˆ๋กœ์šด ๋ฒ„์ „์ด ๋‚˜์˜ค๊ณ  ์žˆ๋‹ค. ํ˜„์žฌ๋Š” Java 20๊นŒ์ง€ ๋‚˜์˜จ ์ƒํƒœ์ด๋‹ค.
Java ๋ฒ„์ „์˜ ๋ณ€ํ™”๋ฅผ ๊ฐ„๋žตํ•˜๊ฒŒ ์‚ดํŽด๋ณด์ž๋ฉด, Java 8์€ ๋žŒ๋‹ค ํ‘œํ˜„์‹, ์ฐธ์กฐํ˜• ๋ฉ”์†Œ๋“œ(Reference Type), Stream API, Optionalํด๋ž˜์Šค ๋“ฑ ๋งŽ์€ ๋ฌธ๋ฒ•์  ๋ณ€ํ™”๊ฐ€ ์ƒ๊ฒผ๋‹ค. Java 9์€ ๊ตฌ์กฐ์ ์œผ๋กœ ์—ญ๋Œ€๊ธ‰ ๋ณ€ํ™”๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, JRE๊ฐ€ Java 8๊นŒ์ง€๋งŒ ์ง€์›๋œ ์ด์œ ๊ฐ€ ์—ฌ๊ธฐ์— ์žˆ๋‹ค. ๋ฐ”๋กœ ๋ชจ๋“ˆํ™”์˜ ๊ฐœ๋…์„ ํƒ‘์žฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. Java 8๊นŒ์ง€๋Š” ํŒจํ‚ค์ง€๋กœ ํด๋ž˜์Šค๋ฅผ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ–ˆ๋Š”๋ฐ, 9๋ถ€ํ„ฐ๋Š” ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ JDK ์ž์ฒด๋„ ๋ชจ๋“ˆํ™”๊ฐ€ ๋˜์–ด์„œ ์„œ๋กœ ๋…๋ฆฝ์ ์ธ ๊ตฌ์กฐ๊ฐ€ ๋˜์–ด์„œ ์›ํ•˜๋Š” ๋ชจ๋“ˆ๋งŒ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ JRE๋„ ํ๊ธฐ๋˜์—ˆ๊ณ , ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋Ÿฐํƒ€์ž„๋„ ํ™• ์ค„์–ด์„œ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ ๋ฐฐํฌ์— ์ ์šฉํ•˜๊ธฐ ์•Œ๋งž์€ ์–ธ์–ด๊ฐ€ ๋˜์—ˆ๋‹ค.

์ž๋ฐ”๋Š” ์ค‘๊ฐ„์ค‘๊ฐ„ LTS(Long Term Support) ๋ฒ„์ „์„ ์ถœ์‹œํ•˜๋Š”๋ฐ, ์ด๋Š” ๊ทธ ๋ฒ„์ „์€ ์ตœ์†Œ 5๋…„ ์ด์ƒ ์ง€์›ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. ํ˜„์žฌ ๋‚˜์™€์žˆ๋Š” LTS ๋ฒ„์ „์€ Java 8 (~ 2030),  Java 11 (~ 2026), Java 17 (~ 2029)์ด ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ Java๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด LTS ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.

728x90

"); wcs_do();