SlideShare a Scribd company logo
はじめよう JavaFX 2.x
   2012/07/28 @a_know
1.はじめに(1)
 ・最近、密か?に盛り上がりを見せている「JavaFX」
  → 7月初旬に東京で開催されたJavaFX勉強会では、
    80名キャパの会場が埋まったとか!

 ・今回、自作SwingアプリケーションをJavaFXで
  1から作りなおしたという経験をしたこともあり・・・

 ・「JavaFXとは何か」というところから、
  簡単なJavaFXアプリケーションを作る流れまでを
  簡単にご紹介できたら!
1.はじめに(2)
 ・といっても、「Swing -> JavaFXのリプレース」とか
  といったお話ではないです。。(._.)

 ・当プレゼンテーションには、
  JavaFX技術は使用されておりません(._.)
2.アジェンダ

 ・自己紹介
 ・JavaFXとは?
 ・JavaFX 2.xの特徴、主な機能
 ・JavaFX 2.xアプリケーションを作ってみよう!
 ・まとめ
3.自己紹介

・HN:a-know(えーの)
・昨年末までは製造系企業のSI子会社でSE(5年9ヶ月)
・今年6月までは、Webアプリ構築&
 技術勉強などの武者修行&就職活動
 → 今回のこの発表も、その一環の
   つもりだった!
・7月からはサーバーサイド(GAE/J!)エンジニアとして
 働いています!
・心は常に大都会に(`・ω・´)!
それでは本題。
4.「JavaFX」とは?(1)
『JavaFX(ジャバエフエックス)とはJava仮想マシン上で動作する
リッチインターネットアプリケーションのGUIライブラリである。Java
SE 7 Update 2 以降に標準搭載されている。Swing とは異なり、
FXML と呼ばれる XML と CSS を併用してデザインを記述す
る。』
       (Wikipedia - http://ja.wikipedia.org/wiki/JavaFX)

・AWTやSwingに代わる、新しい(より簡単に、よりリッチに)GUI
開発プラットフォームである、ぐらいの理解です。。
4.「JavaFX」とは?(2)
・バージョン1.x系と2.x系とで大きな違いが。

・JavaFX 1.x系
 → 「JavaFX Script」というスクリプト言語によって
   GUIアプリケーションを構築する仕組み
 → ターゲットとして、携帯電話(JavaFX Mobile)の他、
   テレビ(JavaFX TV)まで!クロスプラットフォーム!
 → 2010年10月のJavaOneにて、JavaFXを
   Javaのライブラリとすることが発表、同時に
   JavaFX 2.0がデスクトップ向けに限定された
 → JavaFX Scriptは、2.0からはサポート外
4.「JavaFX」とは?(3)
・JavaFX Script
 → 「APIを書くための言語」&「UIを記述するための言語」
  → サポートのためのリソース不足に?
 → オープンソースプロジェクト「Project Visaage」で
   開発は継続
4.「JavaFX」とは?(4)
・JavaFX 2.x系
 → 前述の通り、2.xからJavaFXはJavaのAPIに。
 「新しいUIフレームワーク」という位置づけ
 → 開発スピードUP、パフォーマンスUP
 → JavaFXを使える言語も増加(Scala, Groovy, ...)
・もちろん、クロスプラットフォームという考え方は根幹にある
 → 「JavaFX on iOS」も夢じゃない!

・1.xとは全くの別物、と考えたほうがイイ!
 → Google先生に質問するときもご注意を
5.JavaFX 2.xの特徴、主な機能
・SceneGraph
・FXML
・UI Control
・CSS support
・bind
・animation
・Effect
・Swingとの連携
・Web Start
5.JavaFX 2.xの特徴、主な機能
5-1.SceneGraph(1)
・ツリーで表されたUI構造のこと
・部品やグラフィック要素など描画の対象となる
 要素はすべて、「javafx.scene.Node」のサブクラスとして
 実装されている
 → これら要素をツリー構造化して表現
Scene   Group   Circle


                AnchorPane   HBox      Label


                                       TextField




                             Button
5.JavaFX 2.xの特徴、主な機能
5-1.SceneGraph(2)
  Group root = new Group();

  Scene scene = new Scene(root);

  Circle circle = new Circle(200.0, 200.0, 300.0, Color.PINK);
  root.getChildren().add(circle); // root の子要素としてcircleを追加

  BorderPane borderPane = new BorderPane();
  root.getChildren().add(borderPane);

  Button button = new Button("Open");
  borderPane.setCenter(button);

  HBox hbox = new HBox(10);
  borderPane.setTop(hbox);

  Label label = new Label("URL:");
  hbox.getChildren().add(label); // hboxの子要素としてlabelを追加

  TextBox textBox = new TextBox(40);
  hbox.getChildren().add(textBox);
5.JavaFX 2.xの特徴、主な機能
5-2.FXML(1)
・ユーザーインターフェースのマークアップ言語

・クラスを使って・プログラム内でSceneGraphを
 構築しなくても、XMLで記述することができる

・JavaFXアプリケーション実行時にXMLファイルを
 読み込み、レイアウトを形成するイメージ。
 →   FXMLLoader.load(getClass().getResource("layout.fxml"));


・FXMLを編集するためのツールとして、
 「SceneBuilder」というものもあります
5.JavaFX 2.xの特徴、主な機能
5-2.FXML(2)
<AnchorPane id="AnchorPane" prefHeight="400.0" prefWidth="600.0" >
 <children>
  <Circle id="circle1" fill="DODGERBLUE" radius="100.0" stroke="BLACK" />
  <AnchorPane id="Content" prefHeight="400.0" prefWidth="600.0">
   <children>
     <HBox id="hBox1" prefHeight="100.0" prefWidth="200.0">
      <children>
        <Label id="label1" text="Label" />
        <TextField id="textField1" prefWidth="200.0" text="TextField" />
      </children>
     </HBox>
     <Button id="button1" layoutX="100.0" layoutY="100.0" text="Button" />
   </children>
  </AnchorPane>
 </children>
</AnchorPane>
                                                   ※一部記述を省略しています。
5.JavaFX 2.xの特徴、主な機能
5-3.UI Controll
・独自のUI部品群
・代表的な部品の使用例を御覧ください...


・ボタンなどの標準的な部品以外にも、
 チャート(グラフ)などの描画も行える
5.JavaFX 2.xの特徴、主な機能
5-4.CSS Support
・デザイン、スタイルの指定にcssの利用が可能に!
・.cssファイルの利用ももちろん可能です

・デザイナーとプログラマとのワークフローを考慮した
 結果の現れか?

・実際のcss適用例を御覧ください...

・各プロパティ名に「-fx」プリフィクスがつきます
5.JavaFX 2.xの特徴、主な機能
5-5.bind
・変数同士を自動的に同期させるための仕組み

・こんな感じです...
5.JavaFX 2.xの特徴、主な機能
5-6.animation, 5-7.Effect
・作ったアプリケーションの性質上、
 グラフィック関係はあまり触っていなかったりします orz

・こんな感じのことができます...



・ありがとうございます @skrb さん(._.);;
5.JavaFX 2.xの特徴、主な機能
5-8.Swingとの連携

・「連携」?
 → 「Swing UIにJavaFXを埋め込む」?
   「JavaFX UIにSwingを埋め込む」?
  → 「Swing UIにJavaFXを埋め込む」ことのみ可能。
    「Swingにできない部分をFXで補う」考え方!
  → JFXPanelクラスを用いる
    → Swingのコンポーネントであり、かつ
      シーングラフのためのコンテナとなるもの
・SwingとJavaFXではスレッドが異なる
 → お互いがお互いにアクセスし合わないでいいように!
5.JavaFX 2.xの特徴、主な機能
5-9.WebStart
・今までの機能と同列に扱って良いものか微妙ですが。。

・こんな感じでのアプリケーションの起動が
 できるようになります


・アプリケーションに対するウェルカムメッセージ・・・
 使用方法、各種注意事項・・・etc.


・「デスクトップアプリケーションはアイコンをダブルクリックしては
じめるもの」とは違うアプローチができる!
6.JavaFX 2.xアプリケーションを作ってみよう!

・お話ばかりでもアレですので・・・


・ごくごく簡単なJavaFX 2.xアプリケーションを
 ライブコーディングしてみます


・開発環境は「NetBeans IDE 7.1.2」と
 「JavaFX SceneBuilder」を使います
 → 環境整備については以下をご参考下さい。。
                                    http://netbeans.org/kb/docs/java/javafx-setup.html
       http://docs.oracle.com/javafx/scenebuilder/1/installation/jsbpub-installation.htm

・Eclipseでも開発しようと思えばできるみたいです
6.JavaFX 2.xアプリケーションを作ってみよう!
6-1.JavaFX FXMLアプリケーションの構成要素

・アプリケーションクラス
 - アプリケーション全体を管理(?)
 - JavaFXのランタイムにより、以下のように働きかけられる
  1. コンストラクタ呼び出し
  2. init()
  3. start()
  4. ウィンドウが閉じられるか、Platform.exit()まで待つ
  5. stop()
・コントローラクラス
 - SceneGraphを管理(?)
・レイアウトファイル
7.まとめ
・「JavaFXとはなにか」というお話から、バージョンの違いと2.xの特
徴、実際の作り方の流れまでをご紹介しました

・Swingからの卒業を考えておられる方も、JavaGUI開発を
 されたことのない方も、まずはお試しになってみては?
 → 特別なことを意識することは少なく、開発できました


・JavaFXで何か困ったことがあれば、
 @a_know @skrb さんへmention!
 → 色々なノウハウが蓄積されていくのは、まだまだこれから。その
先頭集団の一員として「自ら調査し発信」も大事かな、と!
ご清聴ありがとうございました!

       @a_know (a-know / えーの)

     blog : http://d.hatena.ne.jp/a-know
web page : http://a-know-home.appspot.com/

More Related Content

What's hot (17)

PDF
G * magazine 1
Tsuyoshi Yamamoto
 
PPTX
チュートリアルではじめるVue.js
小川 昌吾
 
PPTX
AngularJS入門
Kenji Shirane
 
PPTX
エンタープライズ分野での実践AngularJS
Ayumi Goto
 
PDF
はじめてのVue.js
kamiyam .
 
PPTX
HeapStats(Java解析ツールバトル)
Yasumasa Suenaga
 
PDF
はじめてのVue.js
Kei Yagi
 
PDF
Angular.jsについてちょっとしゃべる
Masashi Haga
 
PPTX
Mvpvm pattern
Mami Shiino
 
PDF
WordPress widget api
Takami Kazuya
 
PDF
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Yutaro Miyazaki
 
PDF
Form libraries
Atsushi Odagiri
 
PDF
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
 
PDF
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
賢 秋穂
 
PDF
元気玉的 分散テスト 実行システム TestStreamer
Yoshitaka Kawashima
 
PDF
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
 
PDF
テストゼロからイチに進むための戦略と戦術
Y Watanabe
 
G * magazine 1
Tsuyoshi Yamamoto
 
チュートリアルではじめるVue.js
小川 昌吾
 
AngularJS入門
Kenji Shirane
 
エンタープライズ分野での実践AngularJS
Ayumi Goto
 
はじめてのVue.js
kamiyam .
 
HeapStats(Java解析ツールバトル)
Yasumasa Suenaga
 
はじめてのVue.js
Kei Yagi
 
Angular.jsについてちょっとしゃべる
Masashi Haga
 
Mvpvm pattern
Mami Shiino
 
WordPress widget api
Takami Kazuya
 
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Yutaro Miyazaki
 
Form libraries
Atsushi Odagiri
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
 
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
賢 秋穂
 
元気玉的 分散テスト 実行システム TestStreamer
Yoshitaka Kawashima
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
normalian
 
テストゼロからイチに進むための戦略と戦術
Y Watanabe
 

Similar to はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会) (20)

PDF
JavaOne2013報告会 JavaFX Update
Takashi Aoe
 
PDF
はじめよう JavaFX 2.x
a know
 
PDF
JavaFX & GlassFish 勉強会 Project Visage
Yuichi Sakuraba
 
PPTX
実行可能JavaFXアプリケーションJAR(発表直前版)
torutk
 
PDF
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
Yuichi Sakuraba
 
PDF
R5 3 type annotation
EIICHI KIMURA
 
PDF
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
Oonishi Keitarou
 
PPTX
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
 
PDF
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
 
PDF
TruffleSqueakの紹介
Masashi Umezawa
 
PDF
モダンJavaScript環境構築一歩目
大樹 小倉
 
PDF
SDLoader SeasarCon 2009 Whire
Akio Katayama
 
PDF
ATN No.2 Scala事始め
AdvancedTechNight
 
PDF
JSF2.2で簡単webアプリケーション開発
Masuji Katoda
 
PDF
ScalaMatsuri 2016
Yoshitaka Fujii
 
PDF
マークアップ講座 04 jQuery - JavaScript
eiji sekiya
 
PPTX
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
torutk
 
PPTX
Cve 2013-0422
abend_cve_9999_0001
 
PDF
Trait in scala
Yuta Shimakawa
 
PPTX
Java fx勉強会lt 第8回
Taiji Miyabe
 
JavaOne2013報告会 JavaFX Update
Takashi Aoe
 
はじめよう JavaFX 2.x
a know
 
JavaFX & GlassFish 勉強会 Project Visage
Yuichi Sakuraba
 
実行可能JavaFXアプリケーションJAR(発表直前版)
torutk
 
JavaFX & GlassFish 勉強会 Oh! JavaFX 2.0!
Yuichi Sakuraba
 
R5 3 type annotation
EIICHI KIMURA
 
覚醒JavaScript -ES6で作るIsomophicアプリケーション-
Oonishi Keitarou
 
Guide to GraalVM (Oracle Groundbreakers APAC 2019 Tour in Tokyo)
Koichi Sakata
 
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
 
TruffleSqueakの紹介
Masashi Umezawa
 
モダンJavaScript環境構築一歩目
大樹 小倉
 
SDLoader SeasarCon 2009 Whire
Akio Katayama
 
ATN No.2 Scala事始め
AdvancedTechNight
 
JSF2.2で簡単webアプリケーション開発
Masuji Katoda
 
ScalaMatsuri 2016
Yoshitaka Fujii
 
マークアップ講座 04 jQuery - JavaScript
eiji sekiya
 
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
torutk
 
Cve 2013-0422
abend_cve_9999_0001
 
Trait in scala
Yuta Shimakawa
 
Java fx勉強会lt 第8回
Taiji Miyabe
 
Ad

More from a know (9)

PDF
Pixela introduction document - builderscon 2019
a know
 
PDF
"草APIサービス" Pixela を作った話
a know
 
PDF
セールスエンジニアとして今後身につけていきたい技術
a know
 
PDF
私の「キャリアキーノート」
a know
 
PDF
Mackerel の standard プランを個人利用している話
a know
 
PDF
「お手軽な機械学習サービス」で、ルーティンワークに立ち向かおう!
a know
 
PDF
フィードフォースと AWS と私
a know
 
PDF
今日から始める Go言語 と appengine
a know
 
PDF
サンタソン【サンタは俺らに何もくれない!だったら、俺らでアプリを作ろう】
a know
 
Pixela introduction document - builderscon 2019
a know
 
"草APIサービス" Pixela を作った話
a know
 
セールスエンジニアとして今後身につけていきたい技術
a know
 
私の「キャリアキーノート」
a know
 
Mackerel の standard プランを個人利用している話
a know
 
「お手軽な機械学習サービス」で、ルーティンワークに立ち向かおう!
a know
 
フィードフォースと AWS と私
a know
 
今日から始める Go言語 と appengine
a know
 
サンタソン【サンタは俺らに何もくれない!だったら、俺らでアプリを作ろう】
a know
 
Ad

Recently uploaded (8)

PPTX
Devcontainerのススメ(1)-Devcontainerとはどういう技術?-
iPride Co., Ltd.
 
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
論文紹介:OVO-Bench: How Far is Your Video-LLMs from Real-World Online Video​ Unde...
Toru Tamaki
 
PDF
【AI論文解説】 RLHF不要なLLMの強化学習手法: Direct Preference Optimization(+α)
Sony - Neural Network Libraries
 
PDF
20250711JIMUC総会IBM Automation_Platform最新情報_Connpass公開版.pdf
ChikakoInami1
 
PDF
20250711JIMUC総会_先進IT運用管理分科会Connpass公開資料.pdf
ChikakoInami1
 
PDF
Google Driveハブ型Obsidian同期環境:PC編集とモバイル閲覧を安全・効率的に実現するクロスデバイス構築ガイド
honeshabri
 
PDF
20250717_Devin×GitHubCopilotで10人分の仕事は出来るのか?.pdf
Masaki Yamakawa
 
Devcontainerのススメ(1)-Devcontainerとはどういう技術?-
iPride Co., Ltd.
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
論文紹介:OVO-Bench: How Far is Your Video-LLMs from Real-World Online Video​ Unde...
Toru Tamaki
 
【AI論文解説】 RLHF不要なLLMの強化学習手法: Direct Preference Optimization(+α)
Sony - Neural Network Libraries
 
20250711JIMUC総会IBM Automation_Platform最新情報_Connpass公開版.pdf
ChikakoInami1
 
20250711JIMUC総会_先進IT運用管理分科会Connpass公開資料.pdf
ChikakoInami1
 
Google Driveハブ型Obsidian同期環境:PC編集とモバイル閲覧を安全・効率的に実現するクロスデバイス構築ガイド
honeshabri
 
20250717_Devin×GitHubCopilotで10人分の仕事は出来るのか?.pdf
Masaki Yamakawa
 

はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)