νλ‘κ·Έλλ° μΈμ΄/μλ°
1. μλ° νλ‘κ·Έλλ° μμνκΈ°
alswlfl
2026. 5. 27. 02:01
νλ‘κ·Έλλ°κ³Ό μλ°
νλ‘κ·Έλλ°: μ»΄ν¨ν° νλ‘κ·Έλ¨μ λ§λλ μΌ
νλ‘κ·Έλλ¨Έ: νλ‘κ·Έλ¨μ λ§λλ μ¬λ
νλ‘κ·Έλ¨: μ»΄ν¨ν°μκ² μΌμ μν€λ λͺ λ Ήμ μ§ν©(= μμ€ μ½λ μ§ν© + μ»΄νμΌλ κ²°κ³Όλ¬Ό)
μ»΄νμΌ(compile): λ§λ νλ‘κ·Έλ¨μ΄ νλ‘κ·Έλλ° μΈμ΄ λ¬Έλ²μ μ λ§λμ§ νμΈνκ³ , μ»΄ν¨ν°κ° μ΄ν΄ν μ μλ μΈμ΄λ‘ λ²μνλ μμ
μ»΄νμΌλ¬(compiler): μ»΄νμΌ μμ μ νλ νλ‘κ·Έλ¨
μλ°λ₯Ό μ¬μ©νλ μ΄μ
1. νλ«νΌμ μν₯μ λ°μ§ μμ λ€μν νκ²½μμ μ¬μ© κ°λ₯νλ€.
- μλ°λ 'ν λ² μμ±νλ©΄, μ΄λμλ λμκ°λ€(write once, run anywhere)'λΌλ μ¬λ‘건μ κ°μ§
- νλ«νΌμ μ’ μλμ§ μλ νλ‘κ·Έλ¨μ κ°λ°ν΄ μ¬λ¬ νλ«νΌμμ μ€ν κ°λ₯ν¨
- μλ₯Ό λ€μ΄ μλμ° μ΄μ체μ μμ CμΈμ΄λ‘ κ°λ°ν νλ‘κ·Έλ¨μ μ€ν νμΌ(.exe)μ 리λ
μ€ μ΄μ체μ μμλ μ€νν μ μμ.
[CμΈμ΄ νλ‘κ·Έλ¨ μ»΄νμΌ κ³Όμ ]
CμΈμ΄ μμ€ μ½λ(test.c) → μ μ²λ¦¬κΈ°(preprocessor) → μ»΄νμΌλ¬(compiler)[μ΄μ λΈλ¦¬ μΈμ΄λ‘ λ³ν] → μ΄μ λΈλ¬(assembler)[λͺ©μ νμΌ] → λ§μ»€(linker)[λ§νΉ] → μ€ννμΌ(test.exe) - νμ§λ§, μλ°λ μ€ν νμΌμ΄ μλ λ°μ΄νΈ μ½λ(.class)λΌκ³ νλ νμΌμ μμ±ν΄ μ΄μ체μ μμ μ§μ μ€ννλ κ²μ΄ μλλΌ κ°μ λ¨Έμ μμ λ¨Όμ μ€ννκ³ , μ΄ κ°μ λ¨Έμ μ΄ μ΄μ체μ μ λ§λ μλ²½ν μ€ν νμΌ(.exe)λ‘ λ°κΏμ€
[Java νλ‘κ·Έλ¨ μ»΄νμΌ κ³Όμ ]
μλ° μμ€ μ½λ(test.java) → μλ° μ»΄νμΌλ¬[λ°μ΄νΈ μ½λ(test.class)] → JVMμ μν΄ μ€ν - μ΄λ¬ν νΉμ± λλ¬Έμ νλ‘κ·Έλ¨ μ€ν μλκ° λ리λ€λ νμ΄ λ§μμ§λ§, νλμ¨μ΄κ° λ°μ νλ©΄μ μλ° μ»΄νμΌλ¬λ JIT(Just In Time) μ»΄νμΌ λ°©μμΌλ‘ κ°μ λμ΄ μ€ν μλλ μ무 λ¬Έμ κ° μμ
μλ° κ°μ λ¨Έμ (Java Virtual Machine: JVM): μλ° νλ‘κ·Έλ¨ μ€ν νκ²½μ λ§λ€μ΄ μ£Όλ μννΈμ¨μ΄
- μλ° μ½λ μ»΄νμΌν΄ .class λ°μ΄νΈ μ½λλ‘ λ§λ€λ©΄ μ΄ μ½λκ° μλ° κ°μ λ¨Έμ νκ²½μμ μ€νλ¨
- νμ¬ μ¬μ©νλ μ»΄ν¨ν°μ μ΄μ체μ μ λ§λ μλ° μ€ν νκ²½(Java Runtime Environment: JRE)μ΄ μ€μΉλμ΄ μλ€λ©΄ μλ° κ°μ λ¨Έμ μ΄ μ€μΉλμ΄ μλ κ²μ
JIT(Just In Time) μ»΄νμΌλ¬: μ€ν μμ μ κΈ°κ³μ΄ μ½λλ₯Ό μμ±νλλ°, κ°μ μ½λκ° λ°λ³΅λλ©΄ λ§€λ² κΈ°κ³μ΄ μ½λλ₯Ό μλ‘ μμ±νμ§ μκ³ μ΄μ μ λ§λ κΈ°κ³μ΄λ₯Ό μ¬μ¬μ©ν¨
- JIT μ»΄νμΌλ¬λ μ΄μ체μ μ λ§κ² λ°μ΄νΈ μ€ν μ½λλ‘ ν λ²μ λ³ννμ¬ μ€ννκΈ° λλ¬Έμ μ΄μ μ μλ° ν΄μκΈ°(Java interpreter) λ°©μλ³΄λ€ μ±λ₯μ΄ 10~20λ°° μ’μ
2. κ°μ²΄ μ§ν₯ μΈμ΄μ΄κΈ° λλ¬Έμ μ μ§λ³΄μκ° μ½κ³ νμ₯μ±μ΄ μ’λ€.
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄λ μΌμ μμλλ‘ νλ‘κ·Έλλ° νλ κ²μ΄ μλ μ¬λ¬ κ°μ²΄μ νλ ₯μ ν΅ν΄ νλ‘κ·Έλ¨μ ꡬννλ κ²μ΄λ€.
- μλ°λ κ°μ²΄ μ§ν₯ μΈμ΄μ΄λ€.
- ex) νμ, μν, μ£Όλ¬Έ, λ°°μ‘ λ±μ΄ κ°μ²΄κ° λκ³ , κ° κ°μ²΄ κ°μ μνΈ κ΄κ³ μ΄μ©ν΄ νλ‘κ·Έλλ°νλ κ²
- 곡ν΅μΌλ‘ μ¬μ©νλ λΆλΆμ μμ νμ§ μκ³ λ νλ‘κ·Έλ¨μ μ κΈ°λ₯μ μ½κ² μΆκ° κ°λ₯ν¨
- λ°λΌμ, μ μ§λ³΄μκ° μ½κ³ νμ₯μ±μ΄ μ’μ
3. νλ‘κ·Έλ¨μ΄ μμ μ μ΄λ€.
- μλ°λ λΉκ΅μ μ΅κ·Όμ μΆμλ μΈμ΄λ‘ κΈ°μ‘΄ μΈμ΄κ° κ°μ§λ λͺ¨νΈμ±κ³Ό λΆμμ ν λΆλΆμ κ³Όκ°ν μμ κ³ κ°μ ν¨
- C/C++μμ μ 곡νλ λ¬Έλ²μΈ ν¬μΈν°λ₯Ό μ¬μ©νμ§ μμ λ©λͺ¨λ¦¬λ₯Ό μ§μ μ μ΄ν μ μμ
- νλ‘κ·Έλ¨μμ λ©λͺ¨λ¦¬λ₯Ό μ§μ μ μ΄νλ©΄ μ€λ₯κ° λ°μν μ μλλ°, μ΄λ¬ν μνμ±μ΄ μμ΄ ν¨μ¬ μμ μ μΈ μ½λλ₯Ό λ§λ€ μ μμ
- λμ λ©λͺ¨λ¦¬ μκ±°λ₯Ό νλ‘κ·Έλλ¨Έκ° νμ§ μκ³ κ°λΉμ§ 컬λ ν°(GC)λ₯Ό μ΄μ©νλ―λ‘ λ©λͺ¨λ¦¬λ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬ κ°λ₯ν¨
4. νλΆν κΈ°λ₯μ μ 곡νλ μ€ν μμ€μ΄λ€.
- κΈ°μ‘΄μ λ€λ₯Έ μΈμ΄μμλ νΉμ κΈ°λ₯μ λλΆλΆ κ°λ°μκ° μ§μ κ°λ°ν΄μ μ¬μ©ν¨
- μλ°λ κΈ°λ³Έ κΈ°λ₯μ μ 곡νλ ν΄λμ€, μλ£κ΅¬μ‘°, λ€νΈμν¬, μ μΆλ ₯, μμΈ μ²λ¦¬ λ±μ μ΅μ νλ μκ³ λ¦¬μ¦ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ 곡νλ μλ° κ°λ° ν€νΈ(Java Development Kit: JDK)κ° μμ