๋ชฉ์ฐจ
Java์ ์คํ๊ณผ์ (feat. TCPSchool)๐

Java ํ๋ก๊ทธ๋จ์ ์คํ๊ณผ์ ์ ๊ธฐ๋กํ๋ค.
๋ฌผ๋ก ๋ด๋ถ์ ์ผ๋ก๋ ๋ ๋ณต์กํ์ง๋ง ์ ๋ง ๊ฐ๋จํ ์ ๋ฆฌํด ๋ณธ๋ค.
์ปดํ์ผ ํ์ ํ๊ฒฝ๐
๊ฐ๋ฐ์๊ฐ ์ฝ๋ฉํ ์๋ฐ์์ค๋ฅผ ์ปดํ์ผ ์ ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ JVM์ด ์ดํดํ ์ ์๋ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋(.class)๋ก ๋ณํํ๋ค.
์๋ฐ ํด๋์ค ํ์ผ(.java)

์๋ฐ ์ปดํ์ผ๋ฌ
์๋ฐ ์ปดํ์ผ๋ฌ๋ ์๋ฐ ์ค์น ์ javac.exe๋ผ๋ ์คํ ํ์ผ ํํ๋ก ์ค์น๋จ

์๋ฐ ๋ฐ์ดํธ ์ฝ๋(.class)
์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ JVM(์๋ฐ ๊ฐ์ ๋จธ์ )์ด ์ดํดํ ์ ์๋ ์ธ์ด๋ก ๋ณํ๋ ์๋ฐ ์์ค ์ฝ๋๋ฅผ ์๋ฏธํจ
์๋ฐ ์ปดํ์ผ๋ฌ์ ์ํด ๋ณํ๋๋ ์ฝ๋์ ๋ช ๋ น์ด ํฌ๊ธฐ๊ฐ 1๋ฐ์ดํธ๋ผ์ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ผ๊ณ ๋ถ๋ฆฐ๋ค.
ํ์ฅ์๋ .class์ด๊ณ JVM์ด ์ค์น๋์ด ์๋ ๊ณณ ์ด๋์๋ ์คํ ๊ฐ๋ฅํ๋ค.
์คํ๋ง ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ target > classes > ํ๋ก์ ํธ ํจํค์ง ๊ฒฝ๋ก์ ์์ฑ๋๋ค.
์๋๋ ์ ์์ ๋ถํ๋ ์์ํฌ์์ ์ปดํ์ผ๋ ๋ฐ์ดํธ ์ฝ๋ ์์์ด๋ค.

๋ฐํ์(์คํ) ํ๊ฒฝ๐
JVM(Java Virtual Machine)

JVM์ด๋ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ์คํ์ํค๊ธฐ ์ํ ๊ฐ์์ ๊ธฐ๊ณ๋ผ๊ณ ํ ์ ์๋ค.
์๋ฐ๋ก ์์ฑ๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์ด JVM ์์์ ์๋๋๊ธฐ์ JVM์ด ๋ฐ๋์ ์ค์น๋์ด ์์ด์ผ ํ๋ค.
์์ ๊ทธ๋ฆผ์ฒ๋ผ ์ด์์ฒด์ ๊ฐ ๋ฌ๋ผ๋ ๊ฐ์ JVM์ด ์ค์น ๋์ด ์๋ค๋ฉด ์๋ฌด๋ฐ ์ถ๊ฐ ์กฐ์น ์์ด ๋์ ๊ฐ๋ฅํ๋ค.
๋ฐ๋ผ์ ๊ฐ๋ฐ์๋ ํ ๋ฒ๋ง ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ฉด, ๋ชจ๋ ์ด์์ฒด์ ์์ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค๋ ์ฅ์ ์ด ์๊ณ
์ด๋ฅผ ๋๊ณ ์ด์์ฒด์ ๋ ๋ฆฝ์ ์ด๋ผ๊ณ ์๊ธฐํ๋ค.
๋จ, ์๋ฐ ํ๋ก๊ทธ๋จ๊ณผ๋ ๋ฌ๋ฆฌ JVM์ ์ด์์ฒด์ ์ ์ข ์์ ์ด๋ฏ๋ก, ๊ฐ ์ด์์ฒด์ ์ ๋ง๋ JVM์ ์ค์นํด์ผ ํจ
ex) ์๋์ฐ ์ด์์ฒด์ ์ฉ JVM์ ๋ฆฌ๋ ์ค์ ์ค์นํ๋ฉด ์๋จ
๋ํ, ์๋ฐ๋ ์ผ๋ฐ ํ๋ก๊ทธ๋จ๋ณด๋ค JVM์ด๋ผ๋ ํ ๋จ๊ณ๋ฅผ ๋ ๊ฑฐ์ณ์ผ ํ๋ฏ๋ก, ์๋์ ์ผ๋ก ์คํ ์๋๊ฐ ๋๋ฆฌ๋ค๋ ๋จ์ ์ ๊ฐ์ง๊ณ ์์
JVM์ ๊ตฌ์ฑ
1. ์๋ฐ ์ธํฐํ๋ฆฌํฐ(interpreter)
์๋ฐ ์ปดํ์ผ๋ฌ์ ์ํด ๋ณํ๋ ์๋ฐ ๋ฐ์ดํธ ์ฝ๋(.class)๋ฅผ ์ฝ๊ณ ํด์ํ๋ ์ญํ ์ ํ๋ค.
2. ํด๋์ค ๋ก๋(class loader)
์๋ฐ๋ ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ์ฝ์ด์ค๋ฏ๋ก, ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์ธ ๋ฐํ์์์์ผ ๋ชจ๋ ์ฝ๋๊ฐ JVM๊ณผ ์ฐ๊ฒฐ๋จ
์ด๋ ๊ฒ ๋์ ์ผ๋ก ํด๋์ค๋ฅผ ๋ก๋ฉํด์ฃผ๋ ์ญํ ์ ํ๋ ๊ฒ์ด ํด๋์ค ๋ก๋์ด๋ค.
3. JIT ์ปดํ์ผ๋ฌ(Just-In-Time compiler)
JIT ์ปดํ์ผ๋ฌ๋ ํ๋ก๊ทธ๋จ์ด ์คํ ์ค์ธ ๋ฐํ์์ ์ค์ ๊ธฐ๊ณ์ด๋ก ๋ณํํด ์ฃผ๋ ์ปดํ์ผ๋ฌ๋ฅผ ์๋ฏธํจ
๋์ ๋ฒ์ญ(dynamic translation)์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ ์ด ๊ธฐ๋ฒ์ ํ๋ก๊ทธ๋จ์ ์คํ ์๋๋ฅผ ํฅ์์ํค๊ธฐ ์ํด ๊ฐ๋ฐ๋์์, ์ฆ JIT ์ปดํ์ผ๋ฌ๋ ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ์์ฑํ ๋ฐ์ดํธ ์ฝ๋๋ฅผ ๋ฐํ์์ ๋ฐ๋ก ๊ธฐ๊ณ์ด๋ก ๋ณํํ๋ ๋ฐ ์ฌ์ฉํจ
4. ๊ฐ๋น์ง ์ปฌ๋ ํฐ(garbage collector)
JVM์์ ์ฌ์ฉํ์ง ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ํ์ํด์ฃผ๋ ์ญํ ์ ํจ
๋ฐ๋ผ์ ๊ฐ๋ฐ์๊ฐ ๋ฐ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํ์ง ์์๋ ๋๋ฏ๋ก, ๋์ฑ ์์ฝ๊ฒ ํ๋ก๊ทธ๋๋ฐ์ ํ ์ ์๋๋ก ๋์์ค
์ฐธ์กฐ : tcpschool, http://www.tcpschool.com/java/java_intro_programming

'IT > development' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [php] laravel MVC ํจํด(laravel ver 8.83.2) (0) | 2022.11.24 |
|---|---|
| [IDE] eclipse quick fix ์๋ ์๋ ๋...(feat. stackoverflow) (0) | 2022.11.24 |
| [Java] Java String convert to byte[], byte[] convert to String (2) | 2022.11.23 |
| [php] php <-> cubrid driver ์ฐ๋ (0) | 2022.11.23 |
| [Java] Java Stream ์ฌ์ฉ๋ฒ ์ ๋ฆฌ(jdk 1.8 ๋ถํฐ ์ฌ์ฉ ๊ฐ๋ฅ) (0) | 2022.11.23 |
๋๊ธ