프로세싱에서 실행되는 일련의 과정
프로세싱에서 실행되는 일련의 과정
프로세싱(Processing)에서 '실행 버튼'을 누르면 프로그램이 실행되기까지 여러 단계의 과정이 발생합니다. 프로세싱은 자바(Java) 기반의 언어이므로, 내부적으로는 프로세싱 코드를 자바 코드로 변환한 후 실행하는 과정이 진행됩니다. 아래는 프로세싱 코드가 실행될 때 일어나는 일련의 과정입니다.
1. 프로세싱 스케치 작성
우리가 프로세싱에서 작성하는 코드는 실제로는 자바 언어를 기반으로 하는 일종의 상위 언어입니다. 프로세싱은 사용자가 보다 쉽게 그래픽 작업을 할 수 있도록 setup()
, draw()
, size()
같은 자체 함수들을 제공하지만, 기본적으로 자바 언어로 번역되어 실행됩니다.
- 사용자는 프로세싱의 자체 문법으로 코드를 작성합니다.
- 예를 들어,
ellipse(50, 50, 80, 80);
같은 명령을 작성합니다.
2. 프로세싱 코드의 자바 코드 변환
실행 버튼(재생 버튼)을 누르면 프로세싱은 사용자가 작성한 스케치(프로세싱 코드)를 자바 언어로 자동 변환합니다. 이 과정에서 프로세싱의 특별한 함수들이 자바 코드로 매핑됩니다.
- 예를 들어, 프로세싱의
ellipse(x, y, w, h)
함수는 내부적으로 자바의 그래픽스 관련 함수로 변환됩니다.
예시 변환 과정:
void draw() {
ellipse(50, 50, 80, 80);
}
위 코드는 자바의 PApplet
클래스를 기반으로 변환됩니다.
자바로 변환된 코드:
public void draw() {
this.ellipse(50, 50, 80, 80);
}
이처럼 프로세싱의 스케치는 내부적으로 자바의 PApplet
클래스의 하위 클래스로 변환되며, 이 클래스가 프로세싱의 렌더링 및 입력 처리를 담당합니다.
3. 자바 바이트코드로 컴파일
변환된 자바 코드는 자바 컴파일러(Javac)에 의해 바이트코드로 컴파일됩니다. 바이트코드는 자바 가상 머신(JVM)이 실행할 수 있는 중간 코드입니다.
- 프로세싱 코드가 자바 코드로 변환되면, 자바 컴파일러(Javac)가 해당 코드를 컴파일하여
.class
파일을 생성합니다. - 이
.class
파일은 자바 바이트코드로서, 자바 가상 머신(JVM)에서 실행 가능한 형태입니다.
이 과정은 자바의 일반적인 컴파일 과정과 동일합니다. 자바 컴파일러는 소스 코드를 읽고, 이를 바이트 코드로 변환하여 JVM에서 실행 가능한 상태로 만듭니다.
4. 자바 가상 머신(JVM)에서 실행
컴파일된 바이트코드는 자바 가상 머신(JVM)에서 실행됩니다. JVM은 운영 체제에 관계없이 바이트코드를 실행할 수 있는 환경을 제공합니다. 이 단계에서 프로그램이 실행되고, 사용자가 작성한 프로세싱 스케치의 그래픽 출력이나 상호작용 기능이 작동하게 됩니다.
- 자바 바이트코드는 JVM 위에서 실행됩니다.
- JVM은 프로세싱 스케치가 정의한 그래픽 창을 열고,
setup()
과draw()
함수가 실행되며, 마우스나 키보드 입력 같은 상호작용도 처리됩니다.
5. PApplet 클래스의 실행 및 그래픽 창 생성
프로세싱 스케치가 자바 코드로 변환되면, 내부적으로는 PApplet
이라는 자바 클래스가 생성됩니다. 이 클래스는 프로세싱에서 기본적으로 제공하는 클래스이며, 그래픽 창을 열고, 그 창에서의 모든 그래픽 처리, 이벤트 처리 등을 담당합니다.
- 프로세싱의 모든 스케치는
PApplet
을 상속받아 실행됩니다. PApplet
은 창을 생성하고, 마우스 입력, 키보드 입력, 프레임 루프 등을 처리하는 주요 역할을 합니다.
6. 그림을 그리기 위한 프레임 루프 시작
프로세싱은 자바의 이벤트 드리븐(Event-Driven) 모델을 사용하여 프레임 단위로 화면을 갱신합니다. draw()
함수는 기본적으로 매 프레임마다 실행되며, 화면에 그래픽을 계속해서 그려 나갑니다. 이는 초당 60 프레임(기본값)을 목표로 반복적으로 실행됩니다.
setup()
함수가 한 번 실행된 후,draw()
함수가 초당 60번 반복해서 호출됩니다. 이 루프는 기본적인 애니메이션을 구현하는 데 사용됩니다.- 각 프레임마다 그래픽을 새로 그리거나, 입력 이벤트를 처리하게 됩니다.
7. 마우스 및 키보드 입력 처리
프로세싱은 마우스와 키보드 입력을 실시간으로 처리하는 기능도 제공합니다. mousePressed()
, keyPressed()
와 같은 함수는 프로세싱이 제공하는 인터페이스를 통해 자바 이벤트 시스템으로 연결됩니다. 이들 입력 이벤트는 자바의 표준 이벤트 모델에 의해 처리됩니다.
- 예를 들어, 마우스 클릭이 발생하면 프로세싱의
mousePressed()
함수가 자바의MouseListener
인터페이스를 통해 호출됩니다.
8. 프로그램 종료
프로세싱에서 실행 중인 스케치는 창을 닫거나, exit()
함수를 호출하여 종료할 수 있습니다. 프로그램이 종료되면 JVM에서 실행 중이던 스케치의 모든 리소스가 해제되고 프로그램이 종료됩니다.
요약
프로세싱에서 프로그램이 실행될 때의 일련의 과정은 다음과 같습니다:
- 사용자 코드 작성: 사용자가 프로세싱 문법으로 코드를 작성합니다.
- 코드 변환: 프로세싱 엔진이 코드를 자바로 변환합니다.
- 컴파일: 변환된 자바 코드는 자바 컴파일러(Javac)에 의해 바이트 코드로 컴파일됩니다.
- JVM에서 실행: 컴파일된 바이트 코드는 자바 가상 머신(JVM)에서 실행됩니다.
- PApplet 실행: 변환된 자바 코드가
PApplet
클래스를 상속받아 실행되며, 그래픽 창을 열고 이벤트를 처리합니다. - 프레임 루프:
draw()
함수가 초당 60번 반복되며, 화면을 업데이트하고 사용자 입력을 처리합니다. - 프로그램 종료: 창을 닫거나
exit()
명령으로 프로그램을 종료합니다.
이 과정을 통해 프로세싱 코드는 쉽게 작성할 수 있지만, 내부적으로는 자바 기반의 복잡한 과정을 거쳐 실행됩니다.