Java
comfiler
#
Find similar titles
- 최초 작성자
- 최근 업데이트
Structured data
- Category
- Programming
Table of Contents
컴파일(Comfile) #
Java와 같은 고급 언어로 작성된 소스 코드를 컴퓨터가 이해할 수 있는 기계 언어로 변환하는 것을 의미한다. 작성된 소스 코드를 컴파일하는 것은 고급 언어는 사람이 이해할 수 있는 명령어 위주의 직관적인 코딩을 하지만 컴퓨터는 0 또는 1의 이진코드로 프로그램을 해석하고 명령을 실행하기 때문이다. 쉽게 말해 인간의 언어를 컴퓨터 언어로 번역하는 과정이다.
Java Comfiler(javac) #
컴파일이 고급 프로그래밍언어를 컴퓨터가 이해할 수 있는 기계어로 변환한다고 했지만, Java에서는 조금 다르다. C언어의 경우 .c 파일을 .obj 파일(기계어 코드)로 변환하지만, Java에서는 .java 파일로 작성된 코드를 .class 16진수로 된 바이트코드(bytecode) 파일로 변환한다. CPU에서 직접 실행하지 않고 자바가상머신(Java Virtual Machine, JVM)에서 해당 *.class 파일을 로딩하여 실행한다. 필요한 경우에만 바이트코드(bytecode)를 수정하지 않고 로딩하여 실행하기 때문에 메모리도 적게 사용하고 다양한 환경의 하드웨어 및 OS에서 실행할 수 있다.
Java interpreter #
자바가상머신(Java Virtual Machine, JVM)에서 로드된 바이트코드(bytecode)를 Java interpreter를 통해 한 줄씩 기계어로 해당 OS에 맞게 번역하여 CPU에 실행시킨다. Java에서의 Comfile은 앞서 설명한 Comfiler 방식과 interpreter 방식을 모두 사용하는 혼합형 형태의 컴파일을 수행한다.
JIT(Just-in-Time) Comfiler #
interpreter 방식은 전체코드를 번역하는 comfiler 방식에 비해 프로그램 실행 속도가 느린 단점이 있다. 이를 보완하기 위해 JIT(Just-in-Time) Comfiler를 사용한다. 실행될 때 코드를 컴파일하는 방식으로 자주 실행되는 코드는 컴파일 없이 사용하여 interpreter 느린 속도를 보완한다.
참고 출처 #
- velog, 이상민 JVM은 무엇이며, 자바 프로그램은 어떻게 실행되는가❓
- 네이버 블로그, ehcibear314 컴파일러와 인터프리터의 차이