[Python] 0. Java와 Python 실행 차이

김미숙's avatar
Aug 15, 2025
[Python] 0. Java와 Python 실행 차이
  • Java: .java → .class(바이트 코드)로 컴파일되고 JVM 위에서 실행
  • Python(보통의 CPython): .py를 바이트 코드로(.__pycache__/.pyc) 바꾼 뒤, CPython 안의 파이썬 가상머신(PVM)이 그 바이트 코드를 인터프리터 루프로 실행
    • 즉, JVM처럼 표준화된 외부 VM 위에서 도는 게 아니라, 인터프리터 자체 안에 VM이 들어있다고 보면 된다
    • Java: OSJVM(HotSpot) → .class 바이트 코드(JIT 가능) Python: OSCPython(인터프리터 + PVM) → .pyc 바이트 코드(인터프리트)
      JIT : Just-In-Time Compiler / 실행 직전에 코드를 컴파일하는 방식

구현별 차이

  • CPython: 가장 일반적. C로 구현, GIL 존재.
  • PyPy: JIT 포함 → CPython보다 빠를 때 많음.
  • Jython: JVM 위에서 실행(파이썬 코드를 JVM 바이트 코드로).
  • IronPython: .NET CLR 위에서 실행.

요약

  • Java는 “JVM 위에서”, Python은 보통 “CPython(인터프리터 프로그램) 안의 VM에서” 돌아간다.
  • Jython/IronPython 처럼 예외적으로 JVM/CLR 위에서 도는 파이썬도 있음
    • CLR(Common Language Runtime) : .NET Framework의 핵심 실행 엔진
      • "C#, VB.NET 같은 .NET 언어로 작성한 프로그램을 실제로 실행시키는 가상 머신" 역할
      • CLR의 주요 역할
        1. 코드 실행
            • C# 같은 .NET 언어는 먼저 IL(Intermediate Language, 중간 언어) 로 컴파일됨
            • CLR이 IL 코드를 JIT(Just-In-Time) 컴파일러를 통해 기계어로 변환하고 실행
        1. 메모리 관리
            • 자동으로 메모리 할당·해제
            • Garbage Collection(GC) 기능으로 더 이상 쓰지 않는 객체 메모리 반환
        1. 예외 처리
            • try-catch-finally 같은 예외 처리 로직을 통합적으로 관리
        1. 보안
            • 코드 액세스 보안(Code Access Security)
            • 타입 안전성(Type Safety) 검사
        1. 멀티 언어 지원
            • C#, VB.NET, F# 등 다양한 언어를 동일한 런타임 환경에서 실행 가능
 
Share article

parangdajavous