jjugccc2017spring m6 javafx

22
JJUG CCC 2017 Spring #ccc_m6 高橋 @boochnich

Upload: torutk

Post on 24-Jan-2018

417 views

Category:

Engineering


1 download

TRANSCRIPT

Page 1: Jjugccc2017spring m6 javafx

JJUG CCC 2017 Spring #ccc_m6高橋 徹 @boochnich

Page 2: Jjugccc2017spring m6 javafx

・1996年よりJavaに触れる・Java GUIは、AWT、Swing、JavaFX 他は、X Window System/Motif、GTK+、Qt、Visual C++/MFC等

・コミュニティ活動 - Java読書会BOF(代表) http://www.javareading.com/bof/

・ホームページ・ブログ等 http://www.02.246.ne.jp/~torutk/ (ホームページ) http://d.hatena.ne.jp/torutk/ (ブログ) http://www.torutk.com (Redmine)

Page 3: Jjugccc2017spring m6 javafx

・ガジェット風なプログラムとは

・JavaFXで作る

・プログラムの配布と実行

Page 4: Jjugccc2017spring m6 javafx

デスクトップの片隅で動く、ちょっとしたGUIプログラム

・ウィンドウ枠非表示・背景非表示・タッチパネル対応・前回状態の保存・省CPU/省メモリ

Page 5: Jjugccc2017spring m6 javafx

・Stage:トップレベルウィンドウ  - ウィンドウ枠

・Scene:ウィンドウ内のコンテンツをまとめたもの  - 背景塗りつぶし

・シーングラフ:画面を構成する要素のツリー

Page 6: Jjugccc2017spring m6 javafx

・Javaソースコード   (must)

・FXML: シーングラフの定義 (option)

・CSS : 見栄えの定義    (option)  - 外部CSSファイル  - Javaソースコード/FXMLに記述

Page 7: Jjugccc2017spring m6 javafx

・Oracle Java SE 8 Development Kit(JDK)

・好みのIDE(例:NetBeans)

・Scene Builder  : 画面作成

・Scenic View   : 画面デバッグ

Page 8: Jjugccc2017spring m6 javafx
Page 9: Jjugccc2017spring m6 javafx

ウィンドウ枠がないと困ったことに・・・(1)ウィンドウを移動できない(2)ウィンドウの大きさを変えられない(3)終了させられない

⇒ マウスドラッグで移動⇒ Ctrlキー + ホイールで大きさを変更⇒ ポップアップメニューで終了

Page 10: Jjugccc2017spring m6 javafx

(1) ウィンドウを移動する   ⇒ マウスドラッグ

(2) ウィンドウの大きさを変える   ⇒ Ctrl+マウスホイール

(3) ウィンドウを閉じる   ⇒ コンテキストメニュー

Page 11: Jjugccc2017spring m6 javafx

(1) ウィンドウを移動する   スクロール(ドラッグ、スワイプ、スライド)   ⇒ 対処不要 (2) ウィンドウの大きさを変える   ズーム(ピンチ、ストレッチ)   ⇒ 要対処 (3) ウィンドウを閉じる(コンテキストメニュー)   ⾧いタッチ(タッチ&ホールド、ロングプレス)   ⇒ 対処不要

Page 12: Jjugccc2017spring m6 javafx

・プログラム終了時、表示位置/大きさを保存・次回起動時、前回保存した状態に復元

⇒ Preferences APIを使う(Java SE標準)

Page 13: Jjugccc2017spring m6 javafx

(1) プログラム終了時、状態保存

(2) 前回保存した状態に復元

Page 14: Jjugccc2017spring m6 javafx

・JVM 64bit上でJavaFX Helloプログラムは… - メモリ:500MB (※32GBメモリ搭載PCで実行時) - スレッド:40 - GCでCPU酷使  パラレルコレクタは搭載CPUの総スレッド数を使用 - JITコンパイルスレッド

・省リソース(メモリ・CPU)の方針 - JVMオプションでガシガシ調整 - 32bit版JVMを使う

Page 15: Jjugccc2017spring m6 javafx

JVMオプションでガシガシ調整・メモリサイズの調整

 -Xms (初期ヒープサイズ) -Xmx (最大ヒープサイズ) -Xss (スタックサイズ) -XX:InitialCodeCacheSize (初期コードキャッシュサイズ) -XX:ReservedCodeCacheSize (最大コードキャッシュサイズ)・GCの指定  -XX:+UseSerialGC (シリアル型GCを使用)・JITコンパイル -XX:TieredStopAtLevel (階層コンパイルの遷移上限) -XX:CICompilerCount  (JITコンパイルスレッド数) -XX:CompileThreshold 他 (JITコンパイル実施閾値)

Page 16: Jjugccc2017spring m6 javafx

・ネイティブインストーラー - JREとアプリを一緒に配布 - OS固有のインストーラー形式  Windows: exe、 msi  Linux: deb、rpm  Mac OS X: dmg、 pkg、 app store

⇒ 32bit JVMと一緒に配布し実行が可能

Page 17: Jjugccc2017spring m6 javafx

JAR + シェルスクリプト/バッチファイルを一つのファイルに結合

・作成と実行例(Windows/バッチファイ...

tiny.src.bat - 起動コマンドを記述したバッチファイルtiny.jar - 実行可能JARファイル

C:\work> copy /b tiny.src.bat+tiny.jar tiny.bat

C:\work> tiny

Page 18: Jjugccc2017spring m6 javafx

(1) 起動コマンドを記述したバッチファイル

(2) バッチファイルとJARファイルの結合

Page 19: Jjugccc2017spring m6 javafx

(1) アナログ時計

(2) カレンダー

(3) 3D地球表示

(4) 画像ビューア

Page 20: Jjugccc2017spring m6 javafx

・サンプルコード(TinyGadget、画像ビューア)https://github.com/torutk/jjugccc2017spring-javafx・本発表の準備ページ

https://goo.gl/CNdVjL・アナログ時計

https://github.com/torutk/analogclock・カレンダー

https://github.com/torutk/calendar・スライドビューア

https://github.com/torutk/javaslideviewer・JJUG CCC 2016 Spring (ネイティブインストーラ)https://goo.gl/uY0Rzc・JJUG CCC 2015 Spring (アナログ時計)https://goo.gl/hWQa3M

Page 21: Jjugccc2017spring m6 javafx

・Scene Builderダウンロードhttp://gluonhq.com/products/scene-builder/・Scenic Viewhttp://fxexperience.com/scenic-view/・Java SE 8 クライアントテクノロジ ドキュメントhttp://docs.oracle.com/javase/jp/8/javase-clienttechnologies.htm

・日本JavaFXユーザーグループhttps://groups.google.com/forum/#!forum/javafx-ja

Page 22: Jjugccc2017spring m6 javafx

・ Java SE 8u60から本格対応(JavaFX)   - Java SE 9からSwingも対応

・ 様々なDPIのディスプレイに対応・ JVMオプションでHiDPI対応有無指定可

  -Dprism.allowhidpi=<true|false>

    デフォルト:true