jjugccc2017spring m6 javafx
TRANSCRIPT
JJUG CCC 2017 Spring #ccc_m6高橋 徹 @boochnich
・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)
・ガジェット風なプログラムとは
・JavaFXで作る
・プログラムの配布と実行
デスクトップの片隅で動く、ちょっとしたGUIプログラム
・ウィンドウ枠非表示・背景非表示・タッチパネル対応・前回状態の保存・省CPU/省メモリ
・Stage:トップレベルウィンドウ - ウィンドウ枠
・Scene:ウィンドウ内のコンテンツをまとめたもの - 背景塗りつぶし
・シーングラフ:画面を構成する要素のツリー
・Javaソースコード (must)
・FXML: シーングラフの定義 (option)
・CSS : 見栄えの定義 (option) - 外部CSSファイル - Javaソースコード/FXMLに記述
・Oracle Java SE 8 Development Kit(JDK)
・好みのIDE(例:NetBeans)
・Scene Builder : 画面作成
・Scenic View : 画面デバッグ
ウィンドウ枠がないと困ったことに・・・(1)ウィンドウを移動できない(2)ウィンドウの大きさを変えられない(3)終了させられない
⇒ マウスドラッグで移動⇒ Ctrlキー + ホイールで大きさを変更⇒ ポップアップメニューで終了
(1) ウィンドウを移動する ⇒ マウスドラッグ
(2) ウィンドウの大きさを変える ⇒ Ctrl+マウスホイール
(3) ウィンドウを閉じる ⇒ コンテキストメニュー
(1) ウィンドウを移動する スクロール(ドラッグ、スワイプ、スライド) ⇒ 対処不要 (2) ウィンドウの大きさを変える ズーム(ピンチ、ストレッチ) ⇒ 要対処 (3) ウィンドウを閉じる(コンテキストメニュー) ⾧いタッチ(タッチ&ホールド、ロングプレス) ⇒ 対処不要
・プログラム終了時、表示位置/大きさを保存・次回起動時、前回保存した状態に復元
⇒ Preferences APIを使う(Java SE標準)
(1) プログラム終了時、状態保存
(2) 前回保存した状態に復元
・JVM 64bit上でJavaFX Helloプログラムは… - メモリ:500MB (※32GBメモリ搭載PCで実行時) - スレッド:40 - GCでCPU酷使 パラレルコレクタは搭載CPUの総スレッド数を使用 - JITコンパイルスレッド
・省リソース(メモリ・CPU)の方針 - JVMオプションでガシガシ調整 - 32bit版JVMを使う
JVMオプションでガシガシ調整・メモリサイズの調整
-Xms (初期ヒープサイズ) -Xmx (最大ヒープサイズ) -Xss (スタックサイズ) -XX:InitialCodeCacheSize (初期コードキャッシュサイズ) -XX:ReservedCodeCacheSize (最大コードキャッシュサイズ)・GCの指定 -XX:+UseSerialGC (シリアル型GCを使用)・JITコンパイル -XX:TieredStopAtLevel (階層コンパイルの遷移上限) -XX:CICompilerCount (JITコンパイルスレッド数) -XX:CompileThreshold 他 (JITコンパイル実施閾値)
・ネイティブインストーラー - JREとアプリを一緒に配布 - OS固有のインストーラー形式 Windows: exe、 msi Linux: deb、rpm Mac OS X: dmg、 pkg、 app store
⇒ 32bit JVMと一緒に配布し実行が可能
JAR + シェルスクリプト/バッチファイルを一つのファイルに結合
・作成と実行例(Windows/バッチファイ...
tiny.src.bat - 起動コマンドを記述したバッチファイルtiny.jar - 実行可能JARファイル
C:\work> copy /b tiny.src.bat+tiny.jar tiny.bat
C:\work> tiny
(1) 起動コマンドを記述したバッチファイル
(2) バッチファイルとJARファイルの結合
(1) アナログ時計
(2) カレンダー
(3) 3D地球表示
(4) 画像ビューア
・サンプルコード(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
・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
・ Java SE 8u60から本格対応(JavaFX) - Java SE 9からSwingも対応
・ 様々なDPIのディスプレイに対応・ JVMオプションでHiDPI対応有無指定可
-Dprism.allowhidpi=<true|false>
デフォルト:true