JavaFX | JavaFX 응용 프로그램 기본 코드 | JavaFX란 무엇인가?


오랫동안 기다려야 Java8이 등장하고 잠시 경과되었지만, 이 새 버전에 익숙해져 있는가? Java8에서는 다양한 새로운 기능이 추가되어 있지만, 그 중에서도 Java에 큰 개혁이라고 하면 “Swing에서 JavaFX로 전환"것이다.

지금까지 Java에서 데스크톱 응용 프로그램을 개발할 때 GUI 라이브러리로 사용되어 온 것은 “AWT"와과 “Swing"이었다. 그렇다고 해도, AWT는 GUI를 기본으로 준비되어 있을뿐, 실제로 활용되고 있던 것은 그것을 기반으로 구축된 Swing이었다고 해도 과언이 아니다. Swing는 오랫동안 일반 Java GUI로 널리 사용되고 왔다.

하지만 Java8이 되고, 새로운 ‘JavaFX’가 기본으로 장착되어 Swing에서 JavaFX로 전환이 확정되었다. 물론 당장은 Swing도 공존하기 때문에 빨리 없어지는 것은 아니지만, 어느 Swing가 중지된 JavaFX로 일원화하는 것은 거의 결정된거 같다. (이것은 현재 Java 개발을 다루는 오라클의 Web 사이트에 명시되어 있다. http://www.oracle.com/technetwork/java/javafx/overview/faq-1446554.html#6” Is JavaFX replacing Swing as the new client UI library for Java SE?”)

그럼, 이 JavaFX이라고 하는 것은 어떤 것인가?

오랫동안 Swing을 이용하여 온 많은 사람들은 “어차피 AWT와 Swing을 기반으로 개량한 것일까? 조금 살펴보면 바로 사용할 수있게 되겠지"라고 생각하는 사람도 많을지도 모른다. Swing가 등장했을 때, 내용 적으로는 아주 새로워 졌어도, 이벤트 시스템과 그래픽 렌더링 시스템 등 기본적인 구조는 AWT를 그대로 계승되었기 때문에, 그만큼 혼란은 일어나지 않았다 . 물론, 새로운 GUI가 많이 추가되었다기 때문에 AWT와는 전혀 달랐지만, 그래도 근본 개념부터 다시 이해해야 할 필요는 없었다. Swing는 ‘개혁’이나 ‘혁명’는 없었던 거다.

하지만 JavaFX는 다르다. 이것은 ‘혁명’이다. 기존의 AWT/Swing의 개념은 마치 통용되지 않는다. Button이나 TextField 등 예전 클래스 이름은 그대로 계승되고 있지만, 그것을 통합하는 Stage 같은 건 본 적도 없는 클래스이기도 하다 (실은 Button와 TextField도 실제로 XML 코드로 작성하기도 한다). 우선 Frame 클래스를 상속(?)하지 않는다 (그런 클래스가 없다). 이벤트 리스너를 통한 이벤트 처리(?) 같은 것도 사용하지 않다 (있지만). paint 메소드와 Graphcs 그래픽 그리는(?) 메소드도 클래스도 없다.

JavaFX는 AWT/Swing의 기본적인 GUI 시스템과는 전혀 다른, 완전히 다른 체계이다. 그 점을 확실히 기억하도록 하자.