inblog logo
|
parangdajavous
    Python

    [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: OS → JVM(HotSpot) → .class 바이트 코드(JIT 가능) Python: OS → CPython(인터프리터 + 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

    RSS·Powered by Inblog