개발공부(java, springboot)

인터프리터 언어 ? 컴파일 언어?

Jr.고래 2024. 6. 2. 11:37

인터프리터 언어와 컴파일 언어는 프로그래밍 언어가 실행되는 방식에 따라 구분되는 두 가지 주요 유형

 

인터프리터 언어 (Interpreted Language)

인터프리터 언어는 코드를 한 줄씩 읽고 실행하는 방식으로 동작합니다. 코드가 실행될 때마다 인터프리터가 코드를 해석하고 즉시 실행합니다.

특징:

  1. 실시간 실행: 소스 코드를 즉시 실행하므로 수정 후 바로 결과를 확인할 수 있습니다.
  2. 디버깅 용이: 실행 중인 코드의 각 줄을 확인할 수 있어 디버깅이 상대적으로 쉽습니다.
  3. 플랫폼 독립성: 인터프리터만 있다면 어떤 플랫폼에서도 동일한 코드를 실행할 수 있습니다.

예시:

  • Python
  • JavaScript
  • Ruby
  • PHP

 

컴파일 언어 (Compiled Language)

컴파일 언어는 전체 소스 코드를 먼저 기계어(또는 중간 코드)로 번역하는 컴파일 과정을 거친 후 실행합니다. 번역된 기계어 코드는 실행 파일로 생성되어 이후에 실행됩니다.

특징:

  1. 성능: 사전에 컴파일된 코드가 기계어로 변환되므로 실행 속도가 빠릅니다.
  2. 에러 검사: 컴파일 시점에 많은 오류를 잡아낼 수 있어 실행 전에 코드를 검증할 수 있습니다.
  3. 플랫폼 종속성: 특정 플랫폼에 맞는 실행 파일을 생성하기 때문에 플랫폼마다 컴파일이 필요할 수 있습니다.

예시:

  • C
  • C++
  • Java (Java는 바이트코드로 컴파일되고, JVM이 이를 인터프리트하여 실행)
  • Go

 

혼합 접근법

자바는 인터프리터와 컴파일의 혼합 방식을 사용합니다. Java 프로그램은 소스 코드를 먼저 바이트코드로 컴파일한 후, 이 바이트코드를 JVM(Java Virtual Machine)이 실행하는 방식입니다. JVM은 바이트코드를 인터프리트하거나 JIT(Just-In-Time) 컴파일을 통해 기계어로 변환하여 실행합니다.

 

 

Java의 실행 과정

  1. 컴파일 단계:
    • 자바 컴파일러(javac)가 Java 소스 코드(.java 파일)를 바이트코드(.class 파일)로 컴파일합니다.
    • 이 바이트코드는 플랫폼 독립적입니다.
     
javac HelloWorld.java

 

2. 실행 단계:

  • JVM이 컴파일된 바이트코드를 실행합니다. JVM은 바이트코드를 해석(인터프리트)하거나 JIT 컴파일을 통해 기계어로 변환하여 실행합니다.
java HelloWorld