Suche senden
Hochladen
JavaOneで聴いてきたディープなJavaFXセッション
•
11 gefällt mir
•
11,262 views
Takashi Aoe
Folgen
2013/12/13 JavaOne勉強会の発表資料です。
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 34
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)
torutk
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
Takashi Aoe
継続的インテグレーションとテストの話
継続的インテグレーションとテストの話
Preferred Networks
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
光晶 上原
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
Hello Java
Hello Java
Chihiro Ito
Empfohlen
実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)
torutk
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々
torutk
JavaOne2013報告会 JavaFX Update
JavaOne2013報告会 JavaFX Update
Takashi Aoe
継続的インテグレーションとテストの話
継続的インテグレーションとテストの話
Preferred Networks
OpenJDK コミュニティに参加してみよう #jjug
OpenJDK コミュニティに参加してみよう #jjug
Yuji Kubota
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
光晶 上原
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
Hello Java
Hello Java
Chihiro Ito
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Yusuke Yamamoto
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
Hiroki Tamiya
Devsumi2008
Devsumi2008
Agata Toshikata
Jenkins user conference 東京
Jenkins user conference 東京
Kohsuke Kawaguchi
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化
Satoshi Akama
はじめての CircleCI
はじめての CircleCI
Yosuke Mizutani
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
Kazuhiro Hara
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなし
Satoshi Kisanuki
XPagesDay 2014【B 1】最新のモバイル ui を瞬時に作成 〜x controlsのご紹介〜
XPagesDay 2014【B 1】最新のモバイル ui を瞬時に作成 〜x controlsのご紹介〜
Mitsuru Katoh
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
Takeshi Yoshida
Web技術勉強会 第30回
Web技術勉強会 第30回
龍一 田中
Java Flight Recorderの紹介 at Java Day Tokyo 2015
Java Flight Recorderの紹介 at Java Day Tokyo 2015
Chihiro Ito
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Takayuki Kondou
Project Jigsaw #kanjava
Project Jigsaw #kanjava
Yuji Kubota
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Java女子部
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
賢 秋穂
Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割
Takashi Honda
Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)
Kohsuke Kawaguchi
Scala+swing
Scala+swing
perneto
JavaFXで開く新世代GUI
JavaFXで開く新世代GUI
Yuichi Sakuraba
Weitere ähnliche Inhalte
Was ist angesagt?
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Yusuke Yamamoto
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
Hiroki Tamiya
Devsumi2008
Devsumi2008
Agata Toshikata
Jenkins user conference 東京
Jenkins user conference 東京
Kohsuke Kawaguchi
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化
Satoshi Akama
はじめての CircleCI
はじめての CircleCI
Yosuke Mizutani
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
Kazuhiro Hara
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなし
Satoshi Kisanuki
XPagesDay 2014【B 1】最新のモバイル ui を瞬時に作成 〜x controlsのご紹介〜
XPagesDay 2014【B 1】最新のモバイル ui を瞬時に作成 〜x controlsのご紹介〜
Mitsuru Katoh
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
Takeshi Yoshida
Web技術勉強会 第30回
Web技術勉強会 第30回
龍一 田中
Java Flight Recorderの紹介 at Java Day Tokyo 2015
Java Flight Recorderの紹介 at Java Day Tokyo 2015
Chihiro Ito
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Takayuki Kondou
Project Jigsaw #kanjava
Project Jigsaw #kanjava
Yuji Kubota
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Java女子部
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
賢 秋穂
Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割
Takashi Honda
Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)
Kohsuke Kawaguchi
Was ist angesagt?
(20)
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
Java デバッガ活用術 ~勘デバッグ・print デバッグから抜けだそう~ #jjug_ccc #ccc_h4
WildFly Swarmではじめる「パーツとしてのJavaEE」
WildFly Swarmではじめる「パーツとしてのJavaEE」
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
Devsumi2008
Devsumi2008
Jenkins user conference 東京
Jenkins user conference 東京
JenkinsとjMeterで負荷テストの自動化
JenkinsとjMeterで負荷テストの自動化
はじめての CircleCI
はじめての CircleCI
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Spring frameworkが大好きなおはなし
Spring frameworkが大好きなおはなし
XPagesDay 2014【B 1】最新のモバイル ui を瞬時に作成 〜x controlsのご紹介〜
XPagesDay 2014【B 1】最新のモバイル ui を瞬時に作成 〜x controlsのご紹介〜
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
Web技術勉強会 第30回
Web技術勉強会 第30回
Java Flight Recorderの紹介 at Java Day Tokyo 2015
Java Flight Recorderの紹介 at Java Day Tokyo 2015
継続的インテグレーション3分クッキング
継続的インテグレーション3分クッキング
Project Jigsaw #kanjava
Project Jigsaw #kanjava
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
Spring Bootでチャットツールを作りながらWebの仕組みを理解しよう!
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
Infrastrucure as a CodeにおけるJenkinsの役割
Infrastrucure as a CodeにおけるJenkinsの役割
Hudson (JJUG CCCにて)
Hudson (JJUG CCCにて)
Andere mochten auch
Scala+swing
Scala+swing
perneto
JavaFXで開く新世代GUI
JavaFXで開く新世代GUI
Yuichi Sakuraba
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
torutk
Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016
Yoshio Terada
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
DOSUG Java FX Script From Takeoff To Cruising Altitude
DOSUG Java FX Script From Takeoff To Cruising Altitude
Matthew McCullough
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
a know
個人開発のススメ
個人開発のススメ
Kenji Mori
Java9 and Project Jigsaw
Java9 and Project Jigsaw
takezoe
Javaのプログラムはどうやって動いているの? GC編
Javaのプログラムはどうやって動いているの? GC編
Yuichi Sakuraba
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
Stephen Chin
JavaFX 2 Using the Spring Framework
JavaFX 2 Using the Spring Framework
Stephen Chin
Javaのプログラムはどうやって動いているの? JVM編
Javaのプログラムはどうやって動いているの? JVM編
Yuichi Sakuraba
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
H2O Space. Co., Ltd.
地域の魅力を伝えるツアーガイドAI
地域の魅力を伝えるツアーガイドAI
JubatusOfficial
Scala
Scala
deathxlent
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
Yuichi Sakuraba
Andere mochten auch
(17)
Scala+swing
Scala+swing
JavaFXで開く新世代GUI
JavaFXで開く新世代GUI
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java Puzzlers JJUG CCC 2016
Java Puzzlers JJUG CCC 2016
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
DOSUG Java FX Script From Takeoff To Cruising Altitude
DOSUG Java FX Script From Takeoff To Cruising Altitude
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
はじめよう JavaFX 2.x(第3回 岡山Javaユーザー会)
個人開発のススメ
個人開発のススメ
Java9 and Project Jigsaw
Java9 and Project Jigsaw
Javaのプログラムはどうやって動いているの? GC編
Javaのプログラムはどうやって動いているの? GC編
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)
JavaFX 2 Using the Spring Framework
JavaFX 2 Using the Spring Framework
Javaのプログラムはどうやって動いているの? JVM編
Javaのプログラムはどうやって動いているの? JVM編
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
地域の魅力を伝えるツアーガイドAI
地域の魅力を伝えるツアーガイドAI
Scala
Scala
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
From Swing to JavaFX - SwingからJavaFXへのマイグレーションガイド
Ähnlich wie JavaOneで聴いてきたディープなJavaFXセッション
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
David Buck
Play jjug2012spring
Play jjug2012spring
Takafumi Ikeda
Pythonでwebdriver
Pythonでwebdriver
株式会社 システムヨシイ
devreljapan2022evaadvoc-final.pdf
devreljapan2022evaadvoc-final.pdf
Shotaro Suzuki
Play ja 3_update
Play ja 3_update
Takafumi Ikeda
[TL09] 突撃! 隣の Visual Studio Team Services / Team Foundation Server ~利用者からのベスト...
[TL09] 突撃! 隣の Visual Studio Team Services / Team Foundation Server ~利用者からのベスト...
de:code 2017
Java in the World of Container by David Buck
Java in the World of Container by David Buck
オラクルエンジニア通信
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
fd0
Java EE 再入門
Java EE 再入門
minazou67
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
Shou Takenaka
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
Insight Technology, Inc.
Dbflute intro
Dbflute intro
晃史 冨永
20131213 OSC enterprise
20131213 OSC enterprise
samemoon
.Netlab202107
.Netlab202107
TomomitsuKusaba
チーム開発をスムーズにするために何ができるか
チーム開発をスムーズにするために何ができるか
Takafumi Ikeda
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ
寛 吉田
ドメイン『駆動』『開発』
ドメイン『駆動』『開発』
Hiroshi Maekawa
45分で作る Java EE 8 システム
45分で作る Java EE 8 システム
Hirofumi Iwasaki
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
SFDG ROOKIES
Scalaでのプログラム開発
Scalaでのプログラム開発
Kota Mizushima
Ähnlich wie JavaOneで聴いてきたディープなJavaFXセッション
(20)
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Lambda: A Peek Under The Hood [Java Day Tokyo 2015 6-3]
Play jjug2012spring
Play jjug2012spring
Pythonでwebdriver
Pythonでwebdriver
devreljapan2022evaadvoc-final.pdf
devreljapan2022evaadvoc-final.pdf
Play ja 3_update
Play ja 3_update
[TL09] 突撃! 隣の Visual Studio Team Services / Team Foundation Server ~利用者からのベスト...
[TL09] 突撃! 隣の Visual Studio Team Services / Team Foundation Server ~利用者からのベスト...
Java in the World of Container by David Buck
Java in the World of Container by David Buck
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
いるけどないからつくってみたよ高速モバイルプッシュ配信くん #cmdevio
Java EE 再入門
Java EE 再入門
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
自社開発プロダクト ALL-IN で行っている単体テストのパフォーマンスチューニングTips
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
[B24] Oracle から SQL Server システム移行の勘所 by Norio Nakamura
Dbflute intro
Dbflute intro
20131213 OSC enterprise
20131213 OSC enterprise
.Netlab202107
.Netlab202107
チーム開発をスムーズにするために何ができるか
チーム開発をスムーズにするために何ができるか
Salesforce Lightning をやってみてあれこれ
Salesforce Lightning をやってみてあれこれ
ドメイン『駆動』『開発』
ドメイン『駆動』『開発』
45分で作る Java EE 8 システム
45分で作る Java EE 8 システム
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
【Devsumi2019】開発者に贈るSalesforceプラットフォーム概論と最新動向
Scalaでのプログラム開発
Scalaでのプログラム開発
Kürzlich hochgeladen
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Kürzlich hochgeladen
(11)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
JavaOneで聴いてきたディープなJavaFXセッション
1.
JavaOneで聴いてきた ディープな JavaFXセッション JavaFX勉強会 2013/12/13 ⻘青江 崇(@aoetk)
2.
⾃自⼰己紹介 • • • • ⻘青江 崇 Twitter ID: aoetk
/ Hatena ID: aoe-tk 潜⽔水艦の名前の会社に所属 RIA開発を⾏行行っていたこともあって JavaFXは個⼈人的な興味で追いかけてます
3.
本⽇日のお話 • JavaOneで聴いたセッションの中で少し ディープな内容のセッションを2つ紹介し ます – Architecting
Enterprise JavaFX8 Applications [CON2229] – Optimizing JavaFX [CON3141] • セッションの内容そのままではなく、⾃自 分なりに解釈して再構成した内容になり ます
4.
Architecting Enterprise JavaFX8 Applications Adam
Bien
5.
セッション概要 • スピーカーはJava EEの世界でも有名な、 Java
ChampionsのAdam Bienさん • エンタープライズクラスの本格的なアプ リケーションをJavaFXで開発する場合の アーキテクチャについて考察するという 内容
6.
はじめに • 本格的なアプリケーションを構築する場 合、アーキテクチャをきちんと考える必 要がある • RIAやiPhoneの登場をきっかけにGUIは リッチ化する流流れへ –
プレゼンテーションロジックが複雑化する⼀一 ⽅方 – プレゼンテーションレイヤでもアーキテク チャパターンの考察が盛んに JavaFXに合ったアーキテクチャは?
7.
MVCパターンについて Send Message Controller View ViewとController はウィジェットご とにペアで存在 ユーザジェスチャ をModelに伝える Model Observe Notify Controller ViewはModelを監視し、 Modelの更更新を反映 (Observerパターン) View Controller Model View
8.
MVCパターンについて(続き) • (ここではSmalltalk由来の原初のMVCを 指しています) – Webの世界で使われるMVC
Model2ではない • 基本的な考え⽅方は「何を⾒見見せる (Model)」と「どう⾒見見せる(View)」 の分離離 • JavaFXの場合、NodeがView、 EventHandlerがController、JavaBeanが Modelとなる
9.
MVCで充分なのか? • GUIのリッチ化に伴い、プレゼンテーショ ンロジック(⾮非ドメインロジック)が複 雑化 – プレゼンテーション層固有のステート管理理が 必要に –
複雑なGUIアプリケーションでは下⼿手すると プレゼンテーション層のコード量量の⽅方が多い
10.
MVCで充分なのか?(続き) • ユーザーの⼊入⼒力力をより抽象化した形で扱 いたい 拡⼤大ボタンクリック スライダードラッグ ピンチアウト どれも「ズーム」と して扱いたい
11.
新しいパターンの考察が盛んに • Martin Fowler⽒氏が
“GUI Architectures”として整理理 – http://martinfowler.com/eaaDev/uiArchs.html – Model-ViewPresenter(MVP)パターンや Presentation Modelパターン 等のMVC変形パターンについて 解説している • アイデアそのものは90年年代から出 ていた
12.
Model-View-Presenter(MVP) パターンとは? • 画⾯面単位のControllerを登場させる (Presenter) • 画⾯面上のウィジェットの集合をViewとして扱う •
ウィジェット上で発⽣生したジェスチャ を”save”や”zoom”といった抽象化したイベン トとして扱う – Commandパターンを使い、Undo/Redo対応できる となお良良し • 複雑なプレゼンテーションロジックが存在する 場合はPresenterがViewを操作する – I/F経由でのアクセスだとなお良良し
13.
Model-View-Presenter(MVP) パターンとは?(図解) 抽象度度の⾼高いイベント を送信する 場合によっては直接 Viewを更更新する Event View Presenter Update ウィジェットの集まり をまとめてViewとして 扱う Notify Observerパターンを ⽤用いてModelを監視す るのは同じ Observe 画⾯面単位のController Send Message Model この形、どこかで⾒見見たことありませんか?
14.
Model-View-Presenter(MVP) パターンとは?(図解) FXML Controller FXML Event View Presenter Update Notify JavaBean (JavaFX形式のプロパティを使⽤用) Observe Send Message Model FXMLを使うとこの形にぴったり合う
15.
Presentation Modelパターン とは? • プレゼンテーション固有のステートを保持する ModelをPresentation
Modelとして⽤用意 – ViewとModelの間に置く – バインディングとバリデーションを受け持つ – GUIプラットフォーム側に強⼒力力なバインディング機構 があれば活きる Modelのプロパティを委譲 Observe View Notify Presentation Model Model プレゼンテーション層固有 のプロパティを公開 JavaFXには強⼒力力なバインディング機構がある
16.
JavaFXに向いたアーキテクチャ @FXMLでPresenterの メソッドと結びつける ViewへのPMのステート 反映はバインドで View (FXML) Event Notify Update Presenter (FXML Controller) Get Data Observe Send Message Presentation Model Return Data Service 外部サービスとのやり取りは 専⽤用のサービスクライアント を⽤用意しPresenterがアクセス External Service
17.
afterburner.fx • http://afterburner.adam-bien.com/ • Adam
Bienさんが開発したJavaFX⽤用MVP フレームワーク • DIの仕組みを提供する – JSR-330の@Injectアノテーションを使⽤用 • FXMLのロード処理理を隠蔽
18.
afterburner.fx(コード例例) public class NoteListView
extends FXMLView { //FXMLとCSSを自動的に読み込む } public class AirpadPresenter implements Initializable { @Inject // 外部サービスにアクセスするコンポーネントのインジェクト NotesStore store; @FXML AnchorPane noteList; @Override public void initialize(URL url, ResourceBundle rb) { //FXMLからのViewの生成 NoteListView noteListView = new NoteListView(); //FXMLによって生成されたViewの取得 Parent view = noteListView.getView(); this.noteList.getChildren().add(view); }
19.
まとめ • このセッションではJavaFXに有効なアー キテクチャとしてMVP +
Presentation Modelパターンが提⽰示された • 基本的なAPIの使い⽅方ではなく、アーキテ クチャパターンへの考察の話が出てくる ようになったことが興味深い – それだけJavaFXが本格的に使われるように なったということ
20.
Optimizing JavaFX Oleg Mazurov
21.
セッション概要 • JavaFXの描画処理理の内部について解説す るセッション – 特に描画処理理の中核をなす”Pulse”と呼ばれ る仕組みについて詳しく解説 •
描画処理理に関するデバッグに便便利利なツー ルを紹介
22.
JavaFXのスレッドについて • JavaFXアプリケーションスレッド(FXス レッド) – イベント処理理 –
後述のPulseを実⾏行行 – Platform.runLater()に渡した処理理を実⾏行行 • レンダースレッド – 描画コマンドの実⾏行行 – シーングラフの変更更を画⾯面に表⽰示する
23.
Pulseとは何か? • シーングラフの状態を調べて、どう描画すべき かを決定し、描画ジョブを作成実⾏行行するひとか たまりの処理理 • 16ミリ秒ごとのタイマーで起動 •
タイマーチェックの際に次の条件を満たしてい れば実⾏行行される – アニメーションが実⾏行行中 – シーン上で変更更が発⽣生している – 明⽰示的にPulseの実⾏行行が要求された – 前のPulseが完了了している
24.
Pulseの中で実⾏行行する処理理 Timer 前回のPulseの終了了を待つ アニメーション 実⾏行行 Nodeの描画情報を同期 CSSの処理理 レンダージョブの追加 FX 描画 表⽰示 Node境界の更更新 Render レイアウトの評価 t
25.
グラフィックスパイプライン (D3D) FX 実装⾮非依存の描画処理理 D3Dに渡して表⽰示処理理 Render t
26.
グラフィックスパイプライン (ソフトウェア) ピクセルをバッファにコピー、FX スレッドに戻してピクセルを更更新 FX Render 実装⾮非依存の描画処理理 t
27.
グラフィックスパイプライン (Mac) FXスレッドでOpenGLのコンテキ ストを使ってテクスチャを描画 FX Render 実装⾮非依存の描画処理理 t
28.
Swing上で描画する場合 FX AWTのComponent#repaint() をコール Render AWTが描画 AWT t
29.
WebViewは? • WebKitに対して代理理のタイマー (WebEngine.PulseTimer)を渡す – JavaScriptによるアニメーションをハンドル –
Webページ上でダーティリージョンが発⽣生す ると、レンダリングキューを作り、レンダー スレッドに渡す
30.
パフォーマンス測定に便便利利な ツール達 • PerformanceTracker – com.sun.javafx.perfパッケージにある –
getSceneTracker()メソッドにSceneインスタンスを 渡してインスタンスを取得 – getInstantFPS() や getAverageFPS() といった性能 測定に必要なメソッドが⽤用意されている • PulseLogger – -Djavafx.pulseLogger=true で有効化 – Pulseの処理理情報、実⾏行行時間、カウンタなどが出⼒力力さ れる
31.
PulseLoggerの出⼒力力例例 PULSE: 18 [48ms:74ms] T10
(3 +0ms): CSS Pass T10 (3 +0ms): Layout Pass T10 (6 +27ms): Waiting for previous rendering T10 (33 +2ms): Copy state to render graph T8 (35 +1ms): Dirty Opts Computed T8 (36 +0ms): Render Roots Discovered T8 : 1 different dirty regions to render T8 (36 +38ms): Painted T8 (74 +0ms): Presentable.present T8 (74 +0ms): Finished Presenting Painter Counters: Nodes rendered: 3087 Nodes visited during render: 3094 PULSE: 19 [48ms:68ms] …
32.
その他の便便利利なツール • Glass Robot –
com.sun.glass.ui.Robot – JavaFX専⽤用のRobotクラス – JemmyFXが使っている • フルスピードモード – -Djavafx.animation.fullspeed=true を設定すると有 効化 – Pulseの待ち時間がなくなる • 60FPS以上を出すことができる
33.
JavaFXアプリケーションのプロ ファイリングについて • CPUプロファイリングは余り効果的では ない – 多くの処理理をGPUに⾏行行わせている –
CPUを使う処理理も⼤大半はJavaランタイムが 使っている →前述のツールを活⽤用して調査する
34.
まとめ • JavaFX8は2つのスレッドを持っている • Pulseという単位で描画処理理を⾏行行っている •
プラットフォームによってグラフィック スパイプラインが異異なる • 仕組み上CPUプロファイリングが効果的 でないので、JavaFXが⽤用意しているツー ルを活⽤用しよう
Jetzt herunterladen