Table of Contents
μλ°μ μ μμ μ λ νλ €λλ° λκ° μμ΄ μκ°μ λ°±κΈ°μ λ μ€ν°λ λ°©μμ λ°λΌκ°λ³΄κ³ μ νλ€. 1μ£ΌμΌμ νλ²μ©μ΄λΌ ν° λΆλ΄μμ΄ κ³΅λΆν΄λ³Ό μ μμ κ² κ°λΉ!πΆ μλ°μ μ μμμ μ§κ³ λμ΄κ°μΌκ² λ€ μΆμΌλ©΄ λ΄μ©μ μΆκ°νλ©΄μ 곡λΆν μμ μ΄λ !
https://github.com/whiteship/live-study
μλ° μΈμ΄μ νΉμ§
1. μ΄μ체μ μ λ 립μ
μλ° μμ©νλ‘κ·Έλ¨μ μ΄μ체μ λ νλμ¨μ΄κ° μλ JVMνκ³ λ§ ν΅μ νλ―λ‘ ν λ² μμ±νλ©΄ μ΄λμλ μ€νλλ€.
2. κ°μ²΄μ§ν₯ μΈμ΄
μμ, μΊ‘μν, λ€νμ±μ΄ μ μ μ©λ μΈμ΄.
3. μλ λ©λͺ¨λ¦¬ κ΄λ¦¬
Garbage Collectionμ΄ μλμΌλ‘ λ©λͺ¨λ¦¬λ₯Ό κ΄λ¦¬ν΄μ€λ€.
4. λ€νΈμν¬μ λΆμ° μ²λ¦¬ μ§μ
λ€μν λ€νΈμν¬ νλ‘κ·Έλλ° λΌμ΄λΈλ¬λ¦¬ μ 곡
5. λ©ν°μ€λ λ μ§μ
μμ€ν κ³Ό κ΄κ³μμ΄ λ©ν°μ€λ λ νλ‘κ·Έλ¨ κ΅¬ν κ°λ₯, μ¬λ¬ μ€λ λμ λν μ€μΌμ€λ§μ μλ° μΈν°ν리ν°κ° λ΄λΉ
6. λμ λ‘λ© μ§μ
μ€ν μ λͺ¨λ ν΄λμ€κ° λ‘λ©λλ λμ μ, νμν μμ μ ν΄λμ€λ₯Ό λ‘λ©ν΄ μ¬μ©, μΌλΆ ν΄λμ€κ° λ³κ²½λμ΄λ μ»΄νμΌμ λ€μ νμ§ μμλ λ¨
JVMμ΄λ 무μμΈκ°
Java Virtual Machine
- JVMμ΄ OSμμ μ€νλλ©΄, Java μ ν리μΌμ΄μ μ JVMνκ³ λ§ μνΈμμ© -> OSμ μ’ μλμ§ μμ
- μλ°λ‘ μμ±ν μ ν리μΌμ΄μ μ ν΄λΉ μ΄μ체μ κ° μ΄ν΄ν μ μλλ‘ λ³ννμ¬ μ λ¬νλ€.
- λμ , JVMμ OSμ μ’ μμ μ΄λ€.
μ»΄νμΌ νλ λ°©λ²
1. κ°λ°μκ° μλ° μμ€μ½λ(.java)λ₯Ό μμ±νλ€.
2. μλ° μ»΄νμΌλ¬(Java Compiler)κ° μλ° μμ€νμΌμ μ»΄νμΌνμ¬ μλ° λ°μ΄νΈ μ½λ μμ±
3. μ»΄νμΌλ λ°μ΄νΈ μ½λλ₯Ό JVMμ ν΄λμ€λ‘λ(Class Loader)μκ² μ λ¬
4. ν΄λμ€ λ‘λλ λμ λ‘λ©(Dynamic Loading)μ ν΅ν΄ νμν ν΄λμ€λ€μ λ‘λ© λ° λ§ν¬νμ¬ λ°νμ λ°μ΄ν° μμ(Runtime Data area), μ¦ JVMμ λ©λͺ¨λ¦¬μ μ¬λ¦°λ€.
ν΄λμ€ λ‘λ μΈλΆ λμ
a. λ‘λ : ν΄λμ€ νμΌμ κ°μ Έμμ JVMμ λ©λͺ¨λ¦¬μ λ‘λνλ€.
b. κ²μ¦ : μλ° μΈμ΄ λͺ μΈ(Java Language Specification) λ° JVM λͺ μΈμ λͺ μλ λλ‘ κ΅¬μ±λμ΄ μλμ§ κ²μ¬νλ€.
c. μ€λΉ : ν΄λμ€κ° νμλ‘ νλ λ©λͺ¨λ¦¬λ₯Ό ν λΉ(νλ, λ©μλ, μΈν°νμ΄μ€ λ±λ±)
d. λΆμ : ν΄λμ€μ μμ ν λ΄ λͺ¨λ μ¬λ³Όλ¦ λ νΌλ°μ€λ₯Ό λ€μ΄λ νΈ λ νΌλ°μ€λ‘ λ³κ²½νλ€.
e. μ΄κΈ°ν : ν΄λμ€ λ³μλ€μ μ μ ν κ°μΌλ‘ μ΄κΈ°ννλ€.(static νλ)
5. μ€νμμ§(Execution Engine)μ΄ JVM λ©λͺ¨λ¦¬μ μ¬λΌμ¨ λ°μ΄νΈ μ½λλ€μ λͺ λ Ήμ΄ λ¨μλ‘ νλμ© κ°μ Έμμ μ€ν
μ€ννλ λ°©λ²
- JDK μ€μΉ
- μ€μΉλ λλ ν 리μ bin λλ ν 리λ₯Ό pathμ μΆκ°
- μλ° μ»΄νμΌλ¬λ₯Ό μ¬μ©ν΄ μμ€μ½λλ‘λΆν° ν΄λμ€ νμΌμ μμ±
- μλ° μΈν°ν리ν°λ‘ ν΄λμ€ νμΌ μ€ν
λ°μ΄νΈμ½λλ 무μμΈκ°
JVMμ΄ μ΄ν΄ν μ μλ κΈ°κ³μ΄
λ°μ΄νΈ μ½λμ κ° λͺ λ Ήμ΄λ 1λ°μ΄νΈ ν¬κΈ°μ Opcodeμ μΆκ° νΌμ°μ°μλ‘ μ΄λ£¨μ΄μ Έ μλ€.
JIT μ»΄νμΌλ¬λ 무μμ΄λ©° μ΄λ»κ² λμνλμ§
- λ°μ΄νΈμ½λ(μ»΄νμΌλ μλ° μ½λ)λ₯Ό νλμ¨μ΄μ κΈ°κ³μ΄λ‘ λ°λ‘ λ³νν΄μ€
- μΈν°νλ¦¬ν° λ°©μμΌλ‘ μ€ννλ€κ° μ μ ν μμ μ λ°μ΄νΈμ½λ μ 체λ₯Ό μ»΄νμΌνμ¬ λ€μ΄ν°λΈ μ½λλ‘ λ³κ²½νκ³ , μ΄νμλ ν΄λΉ λ©μλλ₯Ό λ μ΄μ μΈν°ν리ν νμ§ μκ³ λ€μ΄ν°λΈ μ½λλ‘ μ§μ μ€ννλ λ°©μμΌλ‘ λμν¨
- νλμ© μΈν°ν리ν νμ¬ μ€ννλ κ²μ΄ μλλΌ λ°μ΄νΈ μ½λ μ μ²΄κ° μ»΄νμΌλ λ°μ΄λ리 μ½λλ₯Ό μ€ννλ κ²μ΄κΈ° λλ¬Έμ μ 체μ μΈ μ€νμλλ μΈν°ν리ν λ°©μλ³΄λ€ λΉ λ₯΄λ€.
JVM κ΅¬μ± μμ
1. μλ° μΈν°ν리ν°(interpreter)
μλ° μ»΄νμΌλ¬μ μν΄ λ³νλ μλ° λ°μ΄νΈ μ½λλ₯Ό μ½κ³ ν΄μν¨
2. ν΄λμ€ λ‘λ(class loader)
νλ‘κ·Έλ¨μ΄ μ€ν μ€μΈ λ°νμμμ λͺ¨λ μ½λκ° JVMκ³Ό μ°κ²°λ λ, λμ μΌλ‘ ν΄λμ€λ₯Ό λ‘λ©ν¨
3. JIT μ»΄νμΌλ¬(Just-In-Time compiler)
μλ° μ»΄νμΌλ¬κ° μμ±ν μλ° λ°μ΄νΈ μ½λλ₯Ό λ°νμμ λ°λ‘ κΈ°κ³μ΄λ‘ λ³ν
4. κ°λΉμ§ 컬λ ν°(garbage collector)
λμ΄μ μ¬μ©νμ§ μλ λ©λͺ¨λ¦¬ ν΄μ
JDKμ JREμ μ°¨μ΄
JDK
- Java Development Kit
- JVMκ³Ό μλ°ν΄λμ€ λΌμ΄λΈλ¬λ¦¬ μΈ μλ° κ°λ°μ νμν νλ‘κ·Έλ¨λ€ μ€μΉ
- JRE + κ°λ°μ νμν μ€ννμΌ (javac.exe, java.exe, javap.exe λ±)
JRE
- Java Runtime Environment
- μλ°λ‘ μμ±λ μμ©νλ‘κ·Έλ¨μ΄ μ€νλκΈ° μν μ΅μ νκ²½
- JVM + ν΄λμ€λΌμ΄λΈλ¬λ¦¬(Java API)
μΆμ²
μλ°μ μ μ 3ν
http://www.tcpschool.com/java/java_intro_programming
https://catch-me-java.tistory.com/11
'Java > μλ°μ μ μ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
4μ£Όμ°¨: μ μ΄λ¬Έ (1) | 2022.10.01 |
---|---|
3μ£Όμ°¨: μ°μ°μ (0) | 2022.09.18 |
2μ£Όμ°¨: μλ° λ°μ΄ν° νμ , λ³μ κ·Έλ¦¬κ³ λ°°μ΄ (0) | 2022.09.03 |
λκΈ