μλ° κ°μ λ¨Έμ (Java Virtual Machine, JVM)
μλ° κ°μ λ¨Έμ (Java Virtual Machine, JVM)μ μλ° μΈμ΄λ‘ μμ±λ νλ‘κ·Έλ¨μ μ€ννλ λ° μ¬μ©λλ κ°μ μ»΄ν¨ν° νκ²½μ λ§ν©λλ€. JVMμ μ΄μ 체μ μλ λ 립μ μ΄λ©°, μλ° νλ‘κ·Έλ¨μ μλ° λ°μ΄νΈ μ½λλ‘ λ³ννμ¬ μ€νν©λλ€. μ¬κΈ°μ λ°μ΄νΈ μ½λλ μλ° μ»΄νμΌλ¬μ μν΄ μμ±λλ©°, μ΄λ μ€κ° λ¨κ³μ μΈμ΄λ‘ λ³Ό μ μμ΅λλ€.
JVMμ λ€μν μ΄μ 체μ μμ λμΌν μλ° νλ‘κ·Έλ¨μ μ€νν μ μλλ‘ ν©λλ€. μ΄λ μλ°μ ν° κ°μ μ€ νλμ΄λ©°, "Write Once, Run Anywhere"λΌλ κ°λ μ μ§μν©λλ€. JVMμ μλ° νλ‘κ·Έλ¨μ΄ νλμ¨μ΄ λ° μ΄μ 체μ μ ꡬ체μ μΈ μΈλΆ μ¬νμ μ’ μλμ§ μλλ‘ ν΄μ€λλ€.
JVMμ μ£Όμ κ΅¬μ± μμ
- ν΄λμ€ λ‘λ(Class Loader): ν΄λμ€ λ‘λλ μλ° λ°μ΄νΈ μ½λλ₯Ό λ‘λ©νκ³ μ΄λ₯Ό JVM λ΄μ λ©λͺ¨λ¦¬μ μ μ¬ν©λλ€. ν΄λμ€ λ‘λλ νμν ν΄λμ€λ€μ λμ μΌλ‘ λ‘λ©νμ¬ μ€ν μ€μλ νλ‘κ·Έλ¨μ΄ νμ₯ κ°λ₯νλλ‘ ν©λλ€.
- μ€ν μμ§(Execution Engine): μ€ν μμ§μ λ‘λ©λ μλ° λ°μ΄νΈ μ½λλ₯Ό ν΄μνκ±°λ, λλ‘λ JIT(Just-In-Time) μ»΄νμΌλ¬λ₯Ό μ¬μ©νμ¬ λ€μ΄ν°λΈ μ½λλ‘ λ³ννμ¬ μ€νν©λλ€. JIT μ»΄νμΌλ¬λ νλ‘κ·Έλ¨ μ€ν μ±λ₯μ ν₯μμν€κΈ° μν΄ λ°μ΄νΈ μ½λλ₯Ό κΈ°κ³μ΄λ‘ λ³ννλ μν μ ν©λλ€.
- λ°νμ λ°μ΄ν° μμ(Runtime Data Area): JVMμ νλ‘κ·Έλ¨ μ€ν μ€μ μ¬μ©λλ λ°μ΄ν°λ₯Ό μ μ₯νλ λ° μ¬μ©λλ λ©λͺ¨λ¦¬ μμμ κ΄λ¦¬ν©λλ€. μ΄μλ λ©μλ μμ, ν, μ€ν λ±μ΄ ν¬ν¨λ©λλ€.
- κ°λΉμ§ 컬λ ν°(Garbage Collector): κ°λΉμ§ 컬λ ν°λ λ μ΄μ μ¬μ©λμ§ μλ κ°μ²΄λ₯Ό μλμΌλ‘ μλ³νκ³ μ κ±°νμ¬ λ©λͺ¨λ¦¬ κ΄λ¦¬λ₯Ό μ§μν©λλ€.
JVMμ μ΄λ¬ν κ΅¬μ± μμλ€μ μ‘°ν©νμ¬ μλ° νλ‘κ·Έλ¨μ μ€ννκ³ , μμ μ±κ³Ό μ΄μμ±μ μ 곡νλ μν μ ν©λλ€. μ΄λ¬ν νΉμ§λ€μ μλ°λ₯Ό λ€μν νλ«νΌμμ μ¬μ©λλ μΈμ΄λ‘ λ§λ€μ΄ μ£Όμμ΅λλ€.
JRE (Java Runtime Environment)
JREλ μλ° νλ‘κ·Έλ¨μ μ€ννλ λ° νμν λ°νμ νκ²½μ μ 곡ν©λλ€. μ¦, JREλ μλ° μ ν리μΌμ΄μ
μ μ€νν λ νμν λΌμ΄λΈλ¬λ¦¬, ν΄λμ€, μλ° κ°μ λ¨Έμ (JVM), κΈ°ν μ»΄ν¬λνΈλ₯Ό ν¬ν¨νκ³ μμ΅λλ€. JREλ§μΌλ‘λ μλ° νλ‘κ·Έλ¨μ κ°λ°νκ±°λ μ»΄νμΌνμ§ μκ³ , μ€λ‘μ§ μ€νλ§ κ°λ₯ν©λλ€.
μ£Όμ κ΅¬μ± μμ
- μλ° κ°μ λ¨Έμ (JVM): μλ° λ°μ΄νΈ μ½λλ₯Ό κΈ°κ³μ΄λ‘ λ³ννμ¬ μ€ννλ μν μ ν©λλ€.
- μλ° ν΄λμ€ λΌμ΄λΈλ¬λ¦¬: μμ£Ό μ¬μ©λλ μλ° ν΄λμ€ λ° λ©μλκ° ν¬ν¨λ λΌμ΄λΈλ¬λ¦¬μ λλ€.
JDK (Java Development Kit)
JDKλ JREλ₯Ό ν¬ν¨νλ©΄μ, μΆκ°λ‘ μλ° νλ‘κ·Έλ¨μ κ°λ°νκ³ μ»΄νμΌνλ λ° νμν λꡬλ€μ μ 곡ν©λλ€. JDKλ κ°λ°μκ° μλ° μ ν리μΌμ΄μ
μ μμ±νκ³ λλ²κΉ
νλ©°, νμν κ²½μ° μ»΄νμΌνμ¬ μ€νν μ μλ μ 체 κ°λ° νκ²½μ μ 곡ν©λλ€.
μ£Όμ κ΅¬μ± μμ
- μλ° μ»΄νμΌλ¬ (javac): μμ€ μ½λλ₯Ό λ°μ΄νΈ μ½λλ‘ λ³νν©λλ€.
- λλ²κΉ λꡬ: μ½λ λλ²κΉ μ μν λꡬλ€μ΄ μ 곡λ©λλ€.
- μλ° API λ¬Έμ μμ± λꡬ (Javadoc): μμ€ μ½λμμ API λ¬Έμλ₯Ό μλμΌλ‘ μμ±ν©λλ€.
- κΈ°ν κ°λ° λꡬ λ° λΌμ΄λΈλ¬λ¦¬: ν μ€νΈ λꡬ, μ±λ₯ λꡬ, μΆκ°μ μΈ λΌμ΄λΈλ¬λ¦¬ λ±μ΄ ν¬ν¨λμ΄ μμ΅λλ€.
κ°λ¨ν λ§νλ©΄, JREλ μλ° νλ‘κ·Έλ¨μ μ€ννλ λ° νμν μ΅μνμ νκ²½μ μ 곡νκ³ , JDKλ μλ° μ ν리μΌμ΄μ μ κ°λ°νκ³ μ€ννλ λ° νμν μ 체 λꡬμ νκ²½μ ν¬ν¨ν©λλ€. κ°λ°μκ° μλ° μ ν리μΌμ΄μ μ μμ±νλ €λ©΄ JDKλ₯Ό μ¬μ©ν΄μΌ νμ§λ§, μλ° μ ν리μΌμ΄μ μ μ€νλ§ ν κ²½μ°μλ JREλ§μΌλ‘λ μΆ©λΆν©λλ€.
JVM (Java Virtual Machine): The Java Virtual Machine is a virtual environment for executing Java programs, interpreting Java bytecode, or compiling it into machine code for execution.
JRE (Java Runtime Environment): The Java Runtime Environment provides the runtime environment necessary to execute Java programs, including the JVM and the Java class library.
JDK (Java Development Kit): The Java Development Kit includes the JRE and provides a complete development environment with tools and libraries for writing, compiling, and running Java applications.
'Programming > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
6 for loop (feat. Nested, foreach) (0) | 2024.01.07 |
---|---|
5 If & Switch (feat. break, continue) (0) | 2024.01.07 |
4 Operation (μ°μ°) (1) | 2023.12.30 |
3 Casting (0) | 2023.12.29 |
2 Variable, Constant and Primitive Type in Java (Feat. Literal) (0) | 2023.12.29 |
λκΈ