본문 바로가기

CS23

컴파일러 vs 인터프리터 컴파일러(compiler) 번역 프로그램 (소스코트, 원시코드 -> 바이트코드 , 목적코드로 변환) High_Level 언어에서 Low_Level(ex: 어셈블리어) 언어로 번역(고급언어 -> 저급언어) 플랫폼(하드웨어[OS, cpu])에 종속적 정적 프로그램 : 변수 타입 변경 X 실행 단계 전 컴파일 과정에서 오류 파악이 가능하다. 컴파일러(compile)는 특정 프로그래밍 언어로 쓰여있는 문서를 다른 프로그래밍 언어로 옮기는 언어 번역 프로그램. 원시 코드에서 목적 코드로 옮기는 과정을 컴파일이라고 한다. 예를 들어 C로 작성한 소스코드가 있다고 하면 컴파일러는 이를 어셈블리 언어와 같은 다른 언어로 번역해준다. 이때, C로 작성한 소스코드는 고급 프로그래밍 언어라고 하며, 어셈블리 언어는 저급 프.. 2023. 2. 11.
3. JVM 기초 (용어 정리) 프로그래밍 언어(Programing language) : 사람이 작성하는 문자로 이루어진 읽기 좋은 코드.... C, C++, Java, Python, Swift, Go... 컴파일(Compile) : 프로그래밍 언어를 기계어 혹은 기계어와 유사한 Low Level까지 해석해주는 과정이다. 컴파일러(Compiler) : 프로그래밍 언어를 기계어로 빠르게 컴파일 할 수 있도록 미리 번역해둔 프로그램이다. 목적 파일(Object code) : 한국에서는 '목적 코드' 보다는 '목적 파일'로 불린다. 컴파일러나 어셈블러에 의해 생성된 파일이다. 이는 기계어까지 Low Level로 해석되거나, 기계어 수준의 Binary code 또는 RTL(Register-transfer level)과 같은 수준으로 해석된 코.. 2023. 2. 11.
2. JVM 기초 (구성) 1. Class Loader(클래스 로더) JVM내로 클래스파일(.class)를 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈이다. Runtime 시점에 클래스를 로딩하게 해 주며 클래스의 인스턴스를 생성하면 클래스 로더를 통해 메모리에 로드하게 된다. 2. Execution Engine(실행 엔진) 로드된 클래스의 바이트코드를 실행하는 런타임 모듈이 바로 실행 엔진이다. 클래스 로더를 통해 JVM내의 Runtime Data Areas에 배치된 바이트코드는 실행 엔진에 의해 실행되며, 실행 엔진은 자바 바이트 코드를 명령어 단위로 읽어서 실행한다. 여기서 Interpreter(인터프리터) 방식과 JIT compiler 방식을 사용하게 된다. 3. Interpreter(인터프리터) 인터프리터는 프로.. 2023. 2. 11.
1. JVM 기초(JRE, JDK, SDK) JVM(Java Virtural Machine) JVM은 자바 가상 머신의 약자를 따서 줄여 부르는 용어 운영체제(OS)와 Java 애플리케이션 사이의 중개자 역할. 바이트 코드를 기계어로 번역 OS에 종속받지 않고 CPU가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터 JVM은 자바 바이트코드를 실행할 수 있는 환경을 제공해주어, 운영체제에(OS) 상관없이 어디에서든 바이트 코드가 해당 운영체제에서 독립적으로 JAVA 애플리케이션을 실행할 수 있게 해준다. 왜 이런 과정이 필요한가? Java 소스코드, 즉 원시코드(*.java)는 CPU가 인식을 하지 못하기 때문에 기계어로 컴파일을 해주어야한다. cpu 제조사 마다 명령어 셋이 다를 수 있기 때문에 'A컴퓨터(인텔)' 에서 잘 작동되던 Java파.. 2023. 2. 10.