JavaFX2.xを使ってみた感想
はじめに
JavaFXを仕事で使おうかと思い、色々と調査したので、メモ代わりに書いておこうと思います。
長所
- AWT/Swingと比べて非常に簡単に作れる。
- FXMLにより、View部分を完全に分離できる。
- 今まで、Viewの組み立てだけでコード量が膨大になっていたので、JavaFXはコードがスッキリする。
- FXMLは記述自体は、別アプリのScene Builderによりドラッグ&ドロップで簡単に記述できるため、ほとんど覚える必要はない。
- ControllerをPOJOで作成できる。
- GUIのレンダリングにOSの機能を利用しているので、アプリケーションとして違和感がない。
- FileChooserやDirectoryChooserがOS標準のが利用できる。
- 今まで、外観や性能を気にするならば、SWTを利用していたが、それが必要なくなった。
- 2014年リリース予定のJava8から標準のGUIフレームワークになる予定。
- Java8に組み込み予定のLambda記法を使うと、GUI記述における特徴的なListenerなどの記法がより簡略化される可能性がある。
- JavaFXのロードマップ「http://www.oracle.com/technetwork/java/javafx/overview/roadmap-1446331.html」
短所
- 出てから2年ちょっとのため、キラーコンテンツとなるフレームワークが少ない。
- 基本的な機能がまだ足りない。例えば、ValidatorやメッセージダイアログやDatePickerなど。
- DatePickerはJavaFX8(JDK8)から標準実装される。
- 一応外部のライブラリとして、http://sourceforge.jp/projects/jfxmessagebox/wiki/FrontPage:jxmessageboxなどがある。
- JavaFXはWebでいうServlet APIのような立ち位置ならば現在の機能でも納得がいくが、是非「Swing Application Framework (JSR-296)」のところまで目指してほしい。
- Oracleのページに有名どころのライブラリが一覧のリンクがまとめられています。
- JavaFX標準のScene Builderにおいて、独自に作成したコンポーネントが使えないので、使う場合はFXMLを手修正が必要。
まとめ
- 非常に魅力的で、AWT/Swingなどは非常にコードがゴチャゴチャしていたが、強制的にModel/View/Controllerを分離されるため、コードの可読性があがりメンテ性が高い。
- パターンを決めれば、初心者でも結構簡単にできる。
- イメージとしては、WebフレームワークのWicketのJavaFX版が出てくるとありがたい。
- 現状、Validatorなど自作することが多い。
- 開発環境が充実しているのがNetBeans。
- DatePickerや印刷機能が出そろうのがJava8からで、サードパーティ製のライブラリもJava8に合わせて作成されているものが多い。
- ちょっとしたツール程度のものであれば、現状のJava7でよいが、本格的なGUIを作成しようとした場合、Java8が出るまで待っていた方がよい。