Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

JavaFX 애플리케이션 수명 주기 완벽 가이드: init(), start(), stop()부터 종료 방법까지

JavaFX의 Application 클래스는 애플리케이션의 전체 생명 주기를 관리하는 세 가지 핵심 수명 주기 메서드를 제공합니다. 이 메서드들을 이해하면 애플리케이션의 초기화, 실행, 종료 시점에 필요한 로직을 정확한 위치에 배치할 수 있습니다.

JavaFX의 세 가지 수명 주기 메서드

1. start()

start() 메서드는 JavaFX 그래픽 코드를 작성하는 진입점(entry point)입니다. UI 구성, Scene 설정, Stage 표시 등 화면과 관련된 모든 작업이 이 메서드 안에서 이루어집니다.

2. stop()

stop() 메서드는 오버라이드할 수 있는 빈(empty) 메서드입니다. 이곳에는 리소스 해제, 파일 저장, 연결 종료 등 애플리케이션을 안전하게 중지하기 위한 로직을 작성합니다.

3. init()

init() 메서드 역시 오버라이드가 가능한 빈 메서드입니다. 다만 주의할 점은, 이 메서드 내부에서는 Stage나 Scene을 생성할 수 없다는 것입니다. 따라서 초기 데이터 로딩이나 설정 작업 등 UI와 무관한 준비 작업에 활용하는 것이 좋습니다.

launch() 메서드와 애플리케이션 실행 순서

위의 세 가지 메서드 외에도 Application 클래스는 JavaFX 애플리케이션을 실행하기 위한 정적(static) 메서드인 launch()를 제공합니다.

launch()는 정적 메서드이므로 반드시 정적 컨텍스트(일반적으로 main 메서드)에서 호출해야 합니다. JavaFX 애플리케이션이 실행되면 다음 작업들이 아래와 같은 순서로 수행됩니다.

  1. 애플리케이션 클래스의 인스턴스가 생성됩니다.
  2. init() 메서드가 호출됩니다.
  3. start() 메서드가 호출됩니다.
  4. 런처(launcher)는 애플리케이션이 종료될 때까지 대기한 후, 마지막에 stop() 메서드를 호출합니다.

JavaFX 애플리케이션 종료하기

암시적 종료 (Implicit Exit)

기본적으로 애플리케이션의 마지막 창이 닫히면 JavaFX 애플리케이션은 자동으로(암시적으로) 종료됩니다. 만약 이 동작을 비활성화하고 싶다면, 정적 메서드인 setImplicitExit(false)를 호출하면 됩니다. 이 메서드 역시 정적 컨텍스트에서 호출해야 한다는 점에 유의하세요.

명시적 종료 (Explicit Exit)

코드에서 직접 애플리케이션을 종료하고 싶다면 다음 두 가지 방법을 사용할 수 있습니다.

  • Platform.exit() — JavaFX 애플리케이션만 깔끔하게 종료하며, stop() 메서드가 정상적으로 호출됩니다.
  • System.exit(int) — JVM 자체를 강제로 종료하는 방식으로, 상태 코드를 함께 전달할 수 있습니다.

일반적으로는 stop() 메서드가 호출되도록 보장하는 Platform.exit() 사용이 권장됩니다.