์๋ก
1๋ ๊ฐ๊น์ด ๊ฐ๋ฐ์๋ฅผ ํ๊ฒ ๋ค๊ณ ์ด์ฌํ Java๋ถํฐ Springboot, DB, ์ธํ๋ผ, ๋ชจ๋ํฐ๋ง ๋ฑ๋ฑ ์ฌ๋ฌ๊ฐ์ง ํด๊ณผ ์ํํธ์จ์ด๋ค์ ์ฌ์ฉ๋ฒ์ ๋ฐฐ์ ๋ค. ํ์ง๋ง ์ด๋ฌํ ํ๋ก๊ทธ๋จ๋ค์ ๊ณ์ ์๋ฐ ๊ฒ ํฅ๊ธฐ ์์ผ๋ก ๋ฐฐ์ฐ๋ ๋ญ๊ฐ ๋จธ๋ฆฌ์ ๋จ๋๊ฒ ์๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ๋ค์ ์ฒ์๋ถํฐ ์๊ธฐ ์ฌ์ด ๋ด์ฉ์ด๋ ์ ๋ชจ๋ฅด๋ ๋ด์ฉ๋ค์ ํ๊ณ ํ๋ฉฐ ๋ค์ ์๋ฐ๋ถํฐ ๊ณต๋ถํด๋ณด๋ ค๊ณ ํ๋ค.
์๋ฐ?
JVM์ด๋ผ๋ ๊ฒ ์์ด ์ด์์ฒด์ ๋ง๋ค ๋ค๋ฅด๊ฒ ๋ง๋ค ํ์ ์์ด ๋๊ฐ์ด ์คํ๋๋ค.(OS์ ๋ฐ๋ฅธ ๊ท์ฐฎ์์ด ์ฌ๋ผ์ง๋ค.)
GC(๊ฐ๋น์ง ์ปฌ๋ ์ )์ด ์์ด์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ ๋น๊ต์ ํธํ๋ค.
ํน์ง
- ํ๋ซํผ ๋ ๋ฆฝ์ฑ: JVM๋ง ์์ผ๋ฉด OS์ ๊ด๊ณ์์ด ๋์ผํ ๋ฐ์ดํธ์ฝ๋๋ฅผ ์คํํ ์ ์๋ค.
- ๊ฐ์ฒด ์งํฅ ์ธ์ด: ํด๋์ค, ์์, ์บก์ํ, ๋คํ์ฑ ๋ฑ์ ์ง์ํ๋ค.
- Garbage Collection: JVM์ด ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ด๋ฆฌํจ.
- ๋ฉํฐ์ค๋ ๋ ์ง์: ๋ณ๋ ฌ ์ฒ๋ฆฌ๋ผ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
์ OS๋ฅผ ํ์ง ์์๊น?
์ด๊ฑธ ์๋ ค๋ฉด ์๋ฐ์ ๋์ ๊ตฌ์กฐ๋ฅผ ์์์ผ ํ๋ค.
- ๊ฐ๋ฐ์๊ฐ ์๋ฐ ์์ค์ฝ๋๋ฅผ ์์ฑํ๋ค.
- ์๋ฐ ์ปดํ์ผ๋ฌ(javac)๊ฐ ์๋ฐ ์์คํ์ผ์ ์ปดํ์ผํ๋ค. ์ด๊ฒ ๋๋๋ฉด ์๋ฐ ๋ฐ์ดํธ ์ฝ๋(. class)๊ฐ ๋์จ๋ค
!!์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋?: JVM๋ง์ด ์ฝ์ ์ ์๋ ์ฝ๋
- ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ฅผ JVM์ ClassLoader์๊ฒ ์ ๋ฌํด ์ค์ ๋ฏธ๋ฆฌ ์คํ์ ํ์ํ ์ค๋น๋ฅผ ํ๋ค.
- ClassLoader: ํ์ํ .class ํ์ผ๋ค์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ก๋
- Bytecode Verifier: ๋ก๋๋ ํด๋์ค๊ฐ ์ ํจํ์ง ๊ฒ์ฌ
- Runtime Data Area(๋ฐํ์ ๋ฉ๋ชจ๋ฆฌ): ํด๋์ค/๊ฐ์ฒด ์ ๋ณด๋ฅผ ์ ์ฌ
- Excution Engine(์คํ ์์ง): ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํ
- ์ฒ์์๋ ์ธํฐํ๋ฆฌํฐ๋ก ํ ์ค์ฉ ์ฝ์ด์ ์คํ
- ์์ฃผ ์คํ๋๋ ์ฝ๋๋ JIT ์ปดํ์ผ๋ฌ๊ฐ ๊ฐ์งํด์ ๊ธฐ๊ณ์ด๋ก ์ปดํ์ผ(ํด๋น ์ฝ๋๋ ๊ธฐ๊ณ์ด๋ก ์คํ๋๊ธฐ์ ๋น ๋ฅด๋ค)
- ์คํ
Call by value
์๋ฐ์์๋ ๋ชจ๋ ๋ฉ์๋ ์ธ์๋ ๊ฐ์ผ๋ก ์ ๋ฌ(call by value)
- ๊ธฐ๋ณธํ ํ์ ๋ค์ ์ง์ง ๊ฐ์ ๋ณต์ฌํด์ ๋๊ธด๋ค.
- ์ฐธ์กฐํ ํ์
๋ค์ ์ฐธ์กฐ๊ฐ(์ฃผ์)๋ฅผ ๋ณต์ฌํด์ ๋๊ธด๋ค.
- ๊ทธ๋์ ์๋ณธ ๊ฐ์ฒด ๋ด๋ถ ํ๋๋ ๋ฐ๊ฟ ์ ์๋ค
void modify(StringBuilder sb) { sb.append(" world"); // ๊ฐ๋ฅ sb = new StringBuilder(); // ์ด๊ฑด ํธ์ถ์์๊ฒ ๋ฐ์ ์ ๋จ }
์๋ฃํ์ด๋, ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ์ ์ธ ๋ ๊ฟํ
1. ์๋ฐ ์ฐ์ฐ์ ์ต์ ๋จ์๋ Int๋ค. ์๋ง ๋ฐ์ดํธ๋ Short๋ ์๋ฃํ ๋ฃ๊ณ ์ฐ์ฐ๋๋ ค๋ ๊ฒฐ๊ณผ๋ Int๋ค.
byte a = 1, b = 2; byte c = a + b; // ์ค๋ฅ → int๋ก ๋ฐ๋๋ฏ๋ก ํ ๋ณํ ํ์
2. ์ซ์ ์๋ฆฟ์๊ฐ ๋๋ฌด ์ปค์ง ๋, ์ธ๋๋ฐ(_)๋ฅผ ์ด์ฉํด์ ๊ฐ๋ ์ฑ์ ํค์ธ ์ ์๋ค.(์๋ฐ 7 ์ด์)
int million = 1_000_000;
3. ๋ฌธ์์ด์ ์ ๋ ฅํ ๋ ์์์ \u๋ฅผ ๋ถ์ด๋ฉด ์ ๋์ฝ๋ ์ ๋ ฅ์ด ๊ฐ๋ฅํ๋ค.
System.out.println('\uAC00'); // ๊ฐ
4. ์๋ฐ๋ C์ธ์ด์ ๋ฌ๋ฆฌ [0,1]์ด [false, true]๊ฐ ์๋๋ค.
if (1) {} // โ ์ปดํ์ผ ์๋ฌ
5. Label์ด๋ผ๋ ๊ฑธ ํ์ฉํด์ ์ค์ฒฉ๋ for๋ฌธ์ ํ ๋ฒ์ ๋ฒ์ด๋ ์ ์๋ค.(๊ทผ๋ฐ ๋จ๋ฐํ์ง ๋ง์. ๊ฐ๋ ์ฑ ์ ์ข๋ค.)
outer: for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (j == 2) break outer; } }
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ์ฝ๋ ์ธ ์์ฑํ ๊ฒ๋ค (0) | 2024.07.17 |
---|---|
[JAVA] ์์ (0) | 2024.07.17 |
[JAVA] ๊ฐ์ฒด (0) | 2024.07.16 |
[JAVA] ์๋ฃ๊ตฌ์กฐ (0) | 2024.07.15 |
[JAVA] ๋ณ์ (0) | 2024.07.15 |