์ด์์ฒด์ ์ ๋ ๋ฆฝ์ โก๏ธ ์ด์์ฒด์ ์ข ๋ฅ, ํ๋์จ์ด ๊ด๊ณ์์ด ์คํ ๊ฐ๋ฅํจ
"Write once, run anywhere"
๐ JVM (์๋ฐ๊ฐ์๋จธ์ )
๊ตฌ๋ถ | ๊ด๊ณ |
---|---|
์๋ฐํ๋ก๊ทธ๋จ | ์ด์์ฒด์ ์ ๋ ๋ฆฝ์ ๐ |
JVM | ์ด์์ฒด์ ์ ์ข ์์ ๐ |
๐ค ๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ์ธ์ด(object-oriented programming language)
- ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ์กฐ์ โ ๊ฐ์ฒด๊ฐ ๊ด๊ณ ๋งบ์ โ ๋ค์์ ๊ฐ์ฒด๊ฐ ํจ๊ป ์ํ
- ํ๋ก๊ทธ๋จ โ ๋ฐ์ดํฐ + ์ฒ๋ฆฌ๋ฐฉ๋ฒ โ๏ธ
- ํ๋ก๊ทธ๋จ โ ๋ค์์ ๊ฐ์ฒด ๊ฐ ์ํธ์์ฉ โ
๐ ์์๊ฐ๋
๐ ์์ (extends)
- ๊ธฐ์กด์ ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉ โ ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํ๋ ๊ฒ
โก๏ธ ์กฐ์ํด๋์ค + ์์ํด๋์ค
class Parent {}
class Child extends Parent {}
๐ ์บก์ํ๊ฐ๋
๐ ์บก์ํ (Encapsulation)
- โ ์ฐ๊ด์ฑ ์๋ ๋ณ์ + ํจ์
โ ํ๋์ ํด๋์ค๋ก ๋ฌถ์ด ์ธ๋ถ์์ ์ฝ๊ฒ ์ ๊ทผํ์ง ๋ชปํ๋๋ก ์๋
- โก ๋ฐ์ดํฐ์ ์๊ณ ๋ฆฌ์ฆ์ ํ๋๋ก ๋ฌถ๋ ๊ฒ
๐ ๋คํ์ฑ๊ฐ๋
๐ ๋คํ์ฑ (polymorphism)
- ํ type ์ฐธ์กฐ๋ณ์ โ ์ฌ๋ฌ type ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์๊ฒ ํ๋ ๊ฒ
- ์กฐ์ํด๋์ค type ์ฐธ์กฐ๋ณ์ โก๏ธ ์์ํด๋์ค ์ธ์คํด์ค ์ฐธ์กฐ
class TV {
boolean power;
int channel;
void power() {power = !power;}
void channelUp() {++channel;}
void channelDown() {--channel;}
}
class SmartTv extends TV {
String text;
void caption() {}
}
SmartTv s = new SmartTv(); // ์ฐธ์กฐ๋ณ์ = ์ธ์คํด์ค ํ์
์ผ์น
Tv t = new SmartTv(); // ์กฐ์ ์ฐธ์กฐ๋ณ์ t, ์์ ์ธ์คํด์ค
// ์กฐ์ํด๋์ค์ ๋ฉค๋ฒ๋ค๋ง ์ฌ์ฉํ ์ ์์ (์์ ๋ฉค๋ฒ ์ฌ์ฉ ๋ถ๊ฐ)
๐ค ๊ฐ๋น์ง์ปฌ๋ ํฐ
: Garbage Collector๊ฐ ์๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ โ ํ๋ก๊ทธ๋๋จธ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ โ
๐ค Java API (๋ผ์ด๋ธ๋ฌ๋ฆฌ)
- ์ธํฐ๋ท๊ณผ ๋๊ท๋ชจ๋ถ์ฐํ๊ฒฝ์ ์ฉ์ด
- ํ๋ถํ๊ณ ๋ค์ํ ๋คํธ์ํฌ + ํด๋์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ โ ์งง์ ์๊ฐ์ ํ๋ก๊ทธ๋จ ์ฝ๊ฒ ๊ฐ๋ฐ ๊ฐ๋ฅ
๐ค ๋ฉํฐ์ฐ๋ ๋ (multi-thread)
: ํ๋์ ํ๋ก์ธ์ค ๋ด์์ ๋ ์ด์์ ์ฐ๋ ๋๊ฐ ๋์์ ์์ ์ํ ํ๋ ๊ฒ
(์๋ ํ๋์ ํ๋ก์ธ์ค๋ ํ๋์ ์ฐ๋ ๋๋ก ์์ ์ํ)
์ข ๋ฅ | ํน์ง |
---|---|
์ผ๋ฐ์ ๋ฉํฐ์ฐ๋ ๋ | ์ฌ์ฉ๋๋ ์ด์์ฒด์ โ ๊ตฌํ๋ฐฉ๋ฒ + ์ฒ๋ฆฌ๋ฐฉ์ ์์ด |
์๋ฐ ๋ฉํฐ์ฐ๋ ๋ | โ ์์คํ ๊ด๊ณ์์ด ๊ตฌํ ๊ฐ๋ฅ โ |
โก ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Java API)์ ๊ณต โ ๊ตฌํ์ฌ์ โ | |
โข ์ฌ๋ฌ ์ฐ๋ ๋์ ๋ํ ์ค์ผ์ค๋ง โ Java ์ธํฐํ๋ฆฌํฐ๊ฐ ๋ด๋น โ |
๐ค ๋์ ๋ก๋ฉ (Dynamic Loading)
- ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ : ์ฌ๋ฌ๊ฐ์ ํด๋์ค๋ก ๊ตฌ์ฑ
- ์คํ(run)์ โ ๋ชจ๋ ํด๋์ค ๋ก๋ฉ โ๏ธ, ํ์ํ ์์ ์ ํด๋์ค ๋ก๋ฉ โ