๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
1. Java ์ž๋ฐ”/1_0. ์ฑ…, ๊ฐ•์˜

[๋ช…ํ’ˆ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ1] 3์ฃผ์ฐจ ๊ฐ•์˜_ํ•„๊ธฐ

by ๋น„์†Œ์•ผ 2022. 4. 23.
728x90

[๋ช…ํ’ˆ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ1] 3์ฃผ์ฐจ ๊ฐ•์˜_ํ•„๊ธฐ

์ž๋ฐ”

1์ฐจ์‹œ ์ ˆ์ฐจ์ง€ํ–ฅ๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ, C์–ธ์–ด์˜ ํƒœ๋™, ์ž๋ฐ”์˜ ํƒœ๋™

 

์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ // ์ž‘์—…์„ ์ˆœ์„œ๋Œ€๋กœ ํ‘œํ˜„, ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰
์ž‘์—…์„ ํ•จ์ˆ˜๋กœ ์ž‘์„ฑํ•œ ํ•จ์ˆ˜๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ // ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์œผ๋กœ ํ‘œํ˜„
ํด๋ž˜์Šค ๋˜๋Š” ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์ž‘์„ฑ
ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ์ ˆ์ฐจ์ง€ํ–ฅ๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ ๋‘ ๊ฐˆ๋ž˜๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. // ์ ˆ์ฐจ์ง€ํ–ฅ์— ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๊ฐœ๋…์ด ์ถ”๊ฐ€๋œ ๊ฒƒ

C์–ธ์–ด์˜ ํƒœ๋™์€ ์ข‹์€ ์šด์˜์ฒด์ œ ๊ฐœ๋ฐœ (1970๋…„๋Œ€ ์ดˆ) 
AT&T<์ „ํ™” ๊ตํ™˜๊ธฐ(์ผ์ข…์˜ ์ปดํ“จํ„ฐ)<์šด์˜์ฒด์ œ(์ผ์ข…์˜ ์†Œํ”„ํŠธ์›จ์–ด)<ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

์ž๋ฐ”์˜ ํƒœ๋™์€ IoT ์‚ฌ๋ฌผ ์ธํ„ฐ๋„ท ๊ฐ™์€ ๊ฐ€์ „์ œํ’ˆ์— ๋“ค์–ด๊ฐˆ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ (1990๋…„๋Œ€)
1. ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ ์ธ ์–ธ์–ด ๊ฐœ๋ฐœ // ๋‚ ์”จ ์–ดํ”Œ์„ ํ•œ ๋ฒˆ๋งŒ ๋งŒ๋“ค๋ฉด ์—ฌ๋Ÿฌ ํ”Œ๋žซํผ์—์„œ ๋‹ค ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด, WORA
2. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ์ ์€ ์ž„๋ฒ ๋””๋“œ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ
+) ๊ฐ์ฒด ์ง€ํ–ฅ 100% // 1990๋…„๋Œ€ ๊ฐ์ฒด์ง€ํ–ฅ ์—ดํ’

-> ์ž๋ฐ”๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ์ฒด๋กœ ๋ณธ๋‹ค.

2์ฐจ์‹œ ํ”Œ๋žซํผ ๋…๋ฆฝ์„ฑ

 

ํ”Œ๋žซํผ = ํ•˜๋“œ์›จ์–ด + ์šด์˜์ฒด์ œ // CPU + O/S
์ž๋ฐ” ํ”Œ๋žซํผ = ํ•˜๋“œ์›จ์–ด + ์šด์˜์ฒด์ œ + JVM // CPU + O/S + JVM 
๋…๋ฆฝ์ (ํ˜ธํ™˜์„ฑ) = ํ”Œ๋žซํผ์ด ๋‹ฌ๋ผ์ ธ๋„ ์‹คํ–‰๋จ
์ข…์†์ (์ข…์†์„ฑ) = ํŠน์ •ํ•œ ํ”Œ๋žซํผ์—์„œ๋งŒ ์‹คํ–‰๋จ

ํ”Œ๋žซํผ์— ํ˜ธํ™˜์„ฑ์ด ์—†๋Š” ์ด์œ 
1. ๊ฐ CPU ๋งˆ๋‹ค ๊ธฐ๊ณ„์–ด๊ฐ€ ๋‹ค๋ฅด๋‹ค.
2. ๊ฐ ์šด์˜์ฒด์ œ ๋งˆ๋‹ค API๊ฐ€ ๋‹ค๋ฅด๋‹ค.
3. ๊ฐ ์šด์˜์ฒด์ œ ๋งˆ๋‹ค ์‹คํ–‰ํŒŒ์ผ ํ˜•์‹์ด ๋‹ค๋ฅด๋‹ค.

์ž๋ฐ” ์†Œ์Šค ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•œ ์ค‘๋ฆฝ์ ์ธ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ฝ”๋“œ์ธ ๋ชฉ์  ์ฝ”๋“œ = ๋ฐ”์ดํŠธ ์ฝ”๋“œ๊ฐ€ ์ง์ ‘ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, JVM์— ์˜ํ•ด ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๋ฐฉ์‹์œผ๋กœ ๊ฐ๊ฐ์˜ ํ”Œ๋žซํผ์— ๋งž๊ฒŒ ๋ณ€ํ™˜๋œ ๋’ค ์‹คํ–‰๋œ๋‹ค.

C/C++ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ”Œ๋žซํผ์— ์ข…์†์ 
JAVA ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ํ”Œ๋žซํผ์— ๋…๋ฆฝ์ 
JVM์€ ํ”Œ๋žซํผ์— ์ข…์†์ 

3์ฐจ์‹œ ์ž๋ฐ”์— ๊ด€ํ•˜์—ฌ

 

์ž๋ฐ” ์†Œ์ŠคํŒŒ์ผ์˜ ํ™•์žฅ์ž .java
์ž๋ฐ” ์†Œ์ŠคํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•œ ํด๋ž˜์Šค ํŒŒ์ผ์˜ ํ™•์žฅ์ž .class

 

C/C++ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๋ฐ ์‹คํ–‰

// ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์†Œ์Šค ํŒŒ์ผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•œ ๋’ค, ์†Œ์Šค ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•œ ๋ชฉ์  ํŒŒ์ผ๊ณผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ํ•˜๋‚˜์˜ ์‹คํ–‰ ํŒŒ์ผ๋กœ ๋งŒ๋“ฆ, ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ ์€ ๊ฒฝ์šฐ ์‹คํ–‰ ๋ถˆ๊ฐ€

Java ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ๋ฐ ์‹คํ–‰

// ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์†Œ์Šค ํŒŒ์ผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•œ ๋’ค, ์†Œ์Šค ํŒŒ์ผ์„ ์ปดํŒŒ์ผํ•œ ๋ฐ”์ดํŠธ์ฝ”๋“œ๋กœ ์ด๋ฃจ์–ด์ง„ ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋งํฌํ•˜์—ฌ ํ•˜๋‚˜์˜ ์‹คํ–‰ํŒŒ์ผ๋กœ ๋งŒ๋“œ๋Š” ๊ณผ์ •์ด ์—†์Œ, ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ
ํด๋ž˜์Šค ๋กœ๋”๋ฅผ ํ†ตํ•ด JVM์ด ๋˜๋Š” Class Loader ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•„์š”ํ•œ ํด๋ž˜์Šค ํŒŒ์ผ์„ ๋™์ ์œผ๋กœ ๋กœ๋”ฉ

// ๋™์ ์€ ๊ทธ๋•Œ ๊ทธ๋•Œ


JDK>JRE>JVM // JDK์˜ ํ•ต์‹ฌ์€ ์ปดํŒŒ์ผ๋Ÿฌ, JRE์˜ ํ•ต์‹ฌ์€ JVM
๊ฐœ๋ฐœ ์‹คํ–‰

JDK์˜ bin ๋””๋ ‰ํ† ๋ฆฌ์˜ ์‹คํ–‰ํŒŒ์ผ
javac // ์ปดํŒŒ์ผ๋Ÿฌ
java // ์ž๋ฐ” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๊ธฐ(JVM)

์ž๋ฐ” ๋ฐฐํฌํŒ์˜ ์ข…๋ฅ˜
Java SE(Standard Edition) // ๋ฐ์Šคํฌํƒ‘, ์„œ๋ฒ„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ
Java ME(Micro Editon) // SE + ์ž„๋ฒ ๋””๋“œ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ
Java EE(Enterprise Edition) // SE + ์ธํ„ฐ๋„ท ๊ธฐ๋ฐ˜ ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํ”Œ๋žซํผ

์ž๋ฐ” API // ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
ํŒจํ‚ค์ง€ // ์„œ๋กœ ๊ด€๋ จ๋œ ํด๋ž˜์Šค๋“ค์„ ๋ฌถ์–ด ๋†“์€ ๊ฒƒ, ๋””๋ ‰ํ† ๋ฆฌ, ๊ณ„์ธต๊ตฌ์กฐ
๋ชจ๋“ˆ // ํŒจํ‚ค์ง€, ์ด๋ฏธ์ง€, XML ํŒŒ์ผ ๋“ฑ์˜ ์ž์›๋“ค์„ ๋ฌถ์€ ๋‹จ์œ„, ํผ์ฆ ์—ฐ๊ฒฐํ•˜๋“ฏ์ด ์ž‘์„ฑ

 

728x90