무작정 개발.Vlog

[Java] Java는 compile 언어? interpreter 언어?

by 무작정 개발
반응형

이번에는 Java의 동작 과정 및 compile 언어, interpreter  언어에 대해 정리할 것이다.

 

Java를 보다 깊게 이해하기 위해 다시 한번 복습하면서 글을 작성 중입니다.
기초적인 내용은 다루지 않을 예정입니다.

Compile ? Interpreter ?

먼저 컴파일(Compile)언어 , 인터프리터(Interpreter)언어 의 차이점에 대해 먼저 알아보자.

 

컴파일(Compile) 언어

  • 기계가 이해할 수 있는 언어로 변환하는 컴파일 과정을 통해 한꺼번에 번역해서 수행하는 언어를 뜻한다.
  • 대표적인 언어 : C, C++, Java 등이 있다.
  • 특징
    • 컴파일만 해놓으면 기계어 파일이 만들어지는데 실행만 하면 컴퓨터가 기계어 파일을 바로 바로 읽어서 실행 속도가 빠르다.
    • 코드의 크기에 따라 컴파일 시간이 오래 걸릴 수 있다.
    • 각 운영체제마다 컴퓨터가 인식하는 방식이 다르고, 비트(bit) 또한 다르기에 제약이 존재한다.

 

인터프리터(Interpreter) 언어

  • 한 줄씩 컴퓨터에게 번역하며 실행시키는 방식을 가진 언어 (사람이 작성한 코드를 기계가 이해할 수 있도록 문장 단위로 해석해주는데 이러한 역할을 하는 것이 인터프리터(Interpreter) 이다.
  • 대표적인 언어 : JS, Python, PHP 등이 있다.
  • 특징
    • 한 줄씩 번역하며 실행되기 때문에 시간이 오래 걸린다.
    • 오류 상관없이 컴퓨터에게 실행시키는 명령을 하기에 오류가 존재할 수 있다. ( 컴파일 언어는 컴파일 하는 과정에서 오류가 있는 지 확인할 수 있다.)

 

Java 는 어떤 언어인가?

Java 는 Compile 언어라고 하지만 정확히는 Compile & Interpreter 가 혼합된 "Hybrid" 언어이다.

 

Java 컴파일 과정
출처 :https://blog.naver.com/ysh3872/222614838240

[Java 동작 과정]

"Hello.java" 라는 파일을 컴파일(Compile) 시키면 "Hello.class" 파일로 변역된다.

"Hello.class" 파일을 가지고 JVM에서 인터프리터(Interpreter) 방식을 통해 운영체제(OS)에 전달한다.

이렇게 2 가지 방식을 사용해서 Hybrid 언어라고 한다.

 

Java 동작 과정
출처 :https://blog.naver.com/ysh3872/222614838240

[ Interpreter 언어 = 동적 설계, Compile 언어 = 정적 설계 ] 이 2가지가 큰 차이점이다.

위의 그림을 예시로 설명하자면 

Compile 는 정적이라 하였으니 움직이지 않고 메모리 사이즈를 확보해 놓아서 그 사이즈에 맞게만 설정하면 된다.

하지만 Interpreter는 Compile과 다르게 메모리 설정을 해두지 않아서 다양한 크기가 들어올 수 있다.

 

위는 창고를 예시로 설명하기 위해 그려놓았는데 창고 사이즈가 정해지지 않았지만 적당한 크기들의 물건들이 들어오다가 A 라는 엄청 큰 상자가 들어왔다. 이는 컴퓨터 용어로 포인터(Pointer)로 A 상자를 다른 곳 Heap에 옮겨( 다른 저장 창고/동적 할당을 할 곳)에

저장해 놓고 사용할 수 있다.


Reference

이미지 및 글 참고 문헌

반응형

'Language > Java' 카테고리의 다른 글

[Java] Call by Value, Call by Reference  (1) 2022.10.11
[Java] Stack, Heap  (2) 2022.10.11
[Java] JVM와 바이트 코드  (0) 2022.10.04
[Java] JDK, JRE 이란?  (0) 2022.10.03
자바의 정석 | Ch 07 - 객체지향 프로그래밍2-2  (0) 2022.02.06

블로그의 정보

무작정 개발

무작정 개발

활동하기