Blog

[CS]06 Java가 컴파일되는 과정은 어떻게 되는지 설명해주실 수 있을까요?

Author
Summary
컴파일로 시작한 컴파일환경+런타임환경
Category
Study
Tags
CS
Favorite
Memory Date
2023/10/12
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
6 more properties
Java가 컴파일되는 과정은 어떻게 되는지 설명해주실 수 있을까요?
Java가 컴파일 된다는 것은 개발자가 작성한 영문으로된 소스 코드가 바이트 코드까지 변환되는 과정을 말합니다.
우선 개발자는 abc.java라는 소스 파일을 작성하고 그 안에 인간의 언어인 영문으로 프로그램 코드를 작성하게 됩니다.
컴파일을 진행 하면 abc.java라는 파일을 읽어서 자바 컴파일러인 javac라는 변환기가 영문을 바이트 코드로 번역하게 됩니다.
바이트 코드로 번역된 소스는 abc.class란 파일에 저장됩니다. 여기까지가 컴파일 환경까지의 과정입니다.
이후 이 클래스파일들과 그 외 리소스파일들을 묶은 것이 jar라는 확장자의 파일이며 JRE를 통해 실행 할 수 있는 Java 프로그램 패키지가 만들어집니다.
추가적으로 런타임 환경까지의 과정을 이어가보면,
런타임은 간단하게 프로그램이 실행되고 있는 동안의 동작을 가리킨다.해당 프로그램이 필요한 시스템 자원을 사용해서 어떤 처리를 하고 있는 것 또는 상태, 처리가 진행 중인 것을 말합니다.
앞서 컴파일 환경에서 바이트코드로 번역된 abc.class파일은 클래스로더라는 운반자가 클래스파일의 바이트 코드를 JVM의 메모리에 로드시킵니다.(올립니다.)
그 다음 실행엔진(Execution Engine)은 JVM 메모리에 올라온 바이트 코드들을 실행합니다. 이 때 실행 엔진은 인터프리터 또는 짓컴파일러가 동시에 실행 됩니다. 우선 실행 단계에서는 인터프리터를 통해 빠르게 시작하고, 런타임에 JIT 컴파일러가 필요한 부분을 최적화하여 빠른 실행 속도를 유지하는 역할을 하게 됩니다.
실행된 코드의 변수 선언, 객체 생성, 함수 호출 등 활동은 런타임 데이터 에이리어라는 메모리에 쌓이고 소멸하며 호출과 반환, 소멸을 하며 프로그램이 작동하게 됩니다.
여기서 가비지 컬렉터는 말그대로 실행되고 더이상 사용되지 않는 객체를 소멸시키면서 메모리를 관리하게 됩니다.
이렇게 런타임 환경에서 작동되는 과정이 OS를 통해서 하드웨어까지 나타나게 되는 것이 전체적인 Java 프로그램 개발, 컴파일, 실행까지의 간략한 과정입니다.