소스코드 작성
먼저, 사용자는 자바 언어로 프로그램을 작성하며, 이를 소스코드라고 부릅니다. 이 소스코드는 '.java'라는 확장자를 가진 파일에 저장됩니다.
컴파일
작성된 소스코드는 자바 컴파일러(javac)에 의해 바이트코드로 변환됩니다. 이 때, 컴파일러는 소스코드에 문법적인 에러가 없는지 검사하며, 에러가 없다면 '.class' 확장자를 가진 바이트코드 파일을 생성합니다.
로드
바이트코드는 클래스 로더에 의해 JVM(Java Virtual Machine)의 런타임 데이터 영역으로 로드됩니다. 클래스 로더는 파일 시스템에서 이러한 .class 파일들을 찾아서 바이트코드로 된 클래스나 인터페이스의 정의를 JVM에게 제공합니다.
링크
로드된 바이트코드는 링크 과정을 거칩니다. 링크 과정에서는 검증, 준비, (선택적으로) 해결 단계를 거칩니다. 검증 단계에서는 바이트코드가 올바른지 확인하고, 준비 단계에서는 정적 필드를 위한 메모리를 할당하며, 해결 단계에서는 심볼릭 메모리 참조를 메소드와 필드의 직접 참조로 바꾸는 등의 작업을 수행합니다.
초기화
링크 과정이 끝나면 초기화 과정을 거칩니다. 이 과정에서는 정적 변수가 선언된 값 또는 기본값으로 초기화되며, 정적 블록이 실행됩니다.
실행
이제 JVM의 실행 엔진은 바이트코드를 해석하거나 JIT(Just-In-Time) 컴파일러를 사용해 네이티브 코드로 컴파일하여 실행합니다.
이렇게 자바는 한 번의 컴파일 과정을 거친 후, 다양한 플랫폼에서 바이트코드를 해석하여 실행하는 방식을 취하고 있습니다. 이로 인해 자바는 '한 번 작성하면, 어디서든 실행할 수 있다'는 큰 장점을 가지게 되었습니다.
'Java' 카테고리의 다른 글
가비지 컬렉션(Garbage Collection) (0) | 2023.12.07 |
---|---|
인터페이스(Interface, implements) (0) | 2023.11.26 |
상속(extends) (0) | 2023.11.26 |