SlideShare a Scribd company logo
1 of 78
Download to read offline
Javaデスクトッププログラムをふつーの
Windowsプログラムのように配布・実行
する方法とPCの動きが重くならないように
気を付けること
JJUG CCC Spring 2016 I-5
高橋 徹
高橋 徹の自己紹介
– コミュニティ活動
毎月1回読書会開催中
– ブログ等
• ブログ http://d.hatena.ne.jp/torutk/ 他
• Twitter @boochnich
2016-01~今
2015-06~12
アジェンダ
1. Java プログラムを使ってもらう
2. Windows インストーラー
3. メモリと CPU
4. 簡単につくる
5. あれこれ注文をつける
Javaプログラムを使ってもらう
Javaプログラムを使ってもらう
• 簡単な配布、インストール、実行
• CPUやメモリの使用は控え目
カレントディレクトリはjarファイル
を置いたフォルダではなくその上
のフォルダになるようにして下さ
い。32bit版JREの方にしてください。
よくあるJavaプログラム配布シーン
動かすにはJavaを入れてください
。JDKでもJREでも良いっす。
あっ、Javaはバージョン8でお願い
します。
あっ、Javaはバージョン8u40以上
でお願いします。
あっ、環境変数JAVA_HOMEを設
定してください。
バッチファイルのパスをファイル
を、プログラムを置いたフォルダ
に修正して下さい。空白の含ま
れるパスはだめです。
簡単な配布、インストール、実行
Microsoft Windows インストーラー
CPUやメモリの使用は控え目
Process Explorer の System Information画面
多数のJavaプログラム(64bit)を実行すると、
CPU、メモリとも増加量が著しい
Javaプログラムを使ってもらう
• 簡単な配布、インストール、実行
• CPUやメモリの使用は控え目
• Windowsインストーラーを作成
• CPUやメモリの使用を抑制
アジェンダ
1. Java プログラムを使ってもらう
2. Windows インストーラー
3. メモリと CPU
4. 簡単につくる
5. あれこれ注文をつける
自己完結型アプリケーションスタンドアロンアプリケーション
Windowsインストーラー
• javapackager
– 次の機能を持つJDK標準コマンド
• CSSファイルをバイナリ形式に変換
• JARアーカイブファイルを作成
• 再配布用パッケージを作成
• JARファイルを署名
アプリケーション アプリケーション
JRE JRE
OS X
• dmg
• pkg
• mac.appStore
Linux
• rpm
• deb
Windows
• msi
• exe
Windowsインストーラー作成環境
• Java SE Development Kit 8
• WiX Toolset 3.10
http://wixtoolset.org
• NetBeans IDE 8.1
Microsoftのオープンソース第1号(2004年)
Windowsインストーラーの作成
デモ1
アジェンダ
1. Java プログラムを使ってもらう
2. Windows インストーラー
3. メモリと CPU
4. 簡単につくる
5. あれこれ注文をつける
PCのリソース(メモリとCPU)
典型的なノートPCの仕様
CPU Intel 2core/4thread 2GHz
メモリ 8GB
OS Windows 10 64bit
PCのリソース(メモリとCPU)
https://software.intel.com/en-us/articles/heterogeneous-computing-pipelining
典型的なノートPCの仕様
CPU Intel 2core/4thread 2GHz
メモリ 8GB
OS Windows 10 64bit
PCのリソース(メモリとCPU)
演算処理
(同時8命令)
L1キャッシュメモリ
(命令32KB + データ32KB)
L2キャッシュメモリ
(256KB)
Haswellマイクロアーキテクチャ
PCのリソース(メモリとCPU)
演算処理
(同時8命令)
L1キャッシュメモリ
(命令32KB + データ32KB)
L2キャッシュメモリ
(256KB)
thread thread
キャッシュ半減、競合増大
ハイパースレッディングに注意
CPU coreは2つだが、JavaVMから
はCPUが4つと見える。
PCのリソース(メモリとCPU)
Oracle Java RE 8
64bit版
Oracle Java RE
32bit版
JITコンパイルスレッド数(種類) 3(Tiered Compile) 1(Client Compiler)
GCスレッド数(種類) 4(Parallel) 1(Serial)
合計 7 2
JITコンパイル・GCスレッド数のデフォルト (CPU:Intel 2core/4thread)
(「Javaパフォーマンス」より)
64bit JavaVMはCPU数に応じてスレッドを使用
PCのリソース(メモリとCPU)
Oracle Java RE 8
64bit版
Oracle Java RE 8
32bit版
初期ヒープサイズ 128MB 16MB
最大ヒープサイズ 2GB 256MB
メタスペースサイズ 20.75MB 12MB
スタックサイズ(20スレッド分) 20MB 6.25MB
64bit JavaVMはメモリの使用が多い
ヒープ、メタスペース、スタックメモリのデフォルト (メモリ8GB搭載)
(「Javaパフォーマンス」より)
PCのリソース(メモリとCPU)
• Process Explorerツールで使用メモリを測定
– 入手先「Windows Sysinternals」
https://technet.microsoft.com/ja-jp/sysinternals/bb842062.aspx
– procexp.exe
http://ec.nikkeibp.co.jp/item/books/P94640.html
PCのリソース(メモリとCPU)
デモ2
PCのリソース(メモリとCPU)
Process Explorer の System Information画面
多数のJavaプログラムを実行すると、
CPU、メモリとも増加量が著しいJavaプログラムを32bit JavaVM上で実行すると、
特にメモリの増加量を抑制できた
Javaプログラムの配布とPCのリソース
• Windowsインストーラーを作成
• CPUやメモリの使用を抑制
• javapackagerでWindowsインス
トーラー(MSI形式)を作成
• 32bit JavaVMでCPUやメモリの
使用を抑制
アジェンダ
1. Java プログラムを使ってもらう
2. Windows インストーラー
3. メモリと CPU
4. 簡単につくる
5. あれこれ注文をつける
簡単につくる
• NetBeans IDE でWindowsインストーラー作成
インストーラー作成
メニューが用意
簡単につくる
デモ3
アジェンダ
1. Java プログラムを使ってもらう
2. Windows インストーラー
3. メモリと CPU
4. 簡単につくる
5. あれこれ注文をつける
あれこれ注文をつける
• JDK8のjavapackagerではできないこと
– 非ASCII文字での属性値設定
– メジャーアップグレード・インストーラー作成
– インストール先のカスタマイズ
– インストーラーUI
• WiX Toolsetの世界で制御する
あれこれ注文をつける
WiXソース
ファイル
(*.wxs)
candle.exe
light.exe
WiXオブジェクト
ファイル
(*.wxsobj)
WiXでMSI作成
Java実行環境
(JRE)
アーカイブファイル
(*.jar)
設定ファイル等
インストーラー
(*.msi)
あれこれ注文をつける
• javapackagerを-vオプション付きで実行
– javapackagerが%Temp%下に生成するWiXソースファイルのパスが表示
されるので、これを取得していじる
• <JDK>¥lib¥ant-javafx.jarに含まれるtemplate.wxsを取り出していじる
– javapackagerを実行するディレクトリ下に、
package¥windows¥JarManifestViewer.wxs のようにアプリケーション名
で保存すると、javapackagerがテンプレートとして利用する。
あれこれ注文をつける
デモ4
まとめ
– JavaプログラムをWindowsインストーラーで配布
– CPUとメモリを控え目に使うには32bit版Javaで実行
デモ内容
javapackager -deploy -native msi ^
-outdir dist -outfile JarManifestViewer ^
-srcdir dist -srcfiles jarmanifestviewer.jar ^
-appclass com.torutk.jarmanifest.JarManifestViewer ^
-description "View for JAR file manifest" ^
-name JarManifestViewer ^
-vendor Torutk ^
-BappVersion=1.0 ^
-Bwin.menuGroup="Torutk Tools"
デモ1
createmsi.ps1
デモ1
• Javapackagerで作成したMSIのインストール
デモ1
• javapackagerで作成したMSIのインストール
デモ1
• プログラム実行
デモ2
• メモリ
JDK 8u92 64bit版 JDK 8u92 32bit版
64bit JVM 32bit JVM
Private Bytes 318MB 88MB
Working Set - Private 110MB 50MB
Virsutal Size 3717MB 551MB
プロセスの使用メモリを調べるには、
Private Bytesを見るのが有用。
デモ2
• CPU(スレッド)
JDK 8u92 64bit版 JDK 8u92 32bit版
64bit JVM 32bit JVM
Private Bytes 318MB 88MB
Working Set - Private 110MB 50MB
Virsutal Size 3717MB 551MB
デモ3
プロジェクトを右クリックし、
プロパティを開く
デモ3
JavaFX種類のプロジェクト・プロパティでの設定
Windowsインストーラの作成
システム共通(Program Filess)
にインストール
デモ3
Javaアプリケーション種類のプロジェクト・プロパティでの設定
Windowsインストーラの作成
細かな設定が必要な場合は、
プロジェクトをJavaFXアプリケー
ション種類に切り替え
デモ3
・アプリケーション名
・インストーラーファイルの名称部分
・実行ファイル(.exe)名
・ショートカット名
・コントロールパネルの開発元
・スタートメニューのフォルダ名
・インストーラーファイルのバージョ
ン名部分
・コントロールパネルのバージョン
注記)日本語等非ASCII文字を指定するとエラーとなります
デモ3
プロジェクトを右クリックし、
パッケージとして > MSIインストーラ
を実行する
デモ3
ファイルタブを選択
プロジェクト下のdist¥bundles下に
インストーラファイルが生成
デモ3
デモ4
(1)プロジェクト直下にpackage¥windowsフォルダを作成
(2)JDKのlib¥ant-javafx.jar をzip解凍ツールで
開き、
(3)その中からtemplate.wxs を
取り出し、
(4)JarManifestViewer.wxs に変えて保存
デモ4
(1)UUIDを生成
(2)JarManifestViewer.wxsの編集
<MajorUpgrade DowngradeErrorMessage="Already new
[ProductName] installed. Stopping to install." />
(3)javapackager実行
補遺
補遺
ソース
ファイル
(*.java)
コンパイラ
javac
クラス
ファイル
(*.class)
ソース
ファイル
(*.java)
クラス
ファイル
(*.class)
各種
リソース
ファイル
各種
リソース
ファイル
アーカイバ
jar
アーカイブ
ファイル
(*.jar)
外部
ライブラリ
(*.jar)
外部
ライブラリ
(*.jar)
Javaプログラムのコンパイルと実行の流れ(非インストーラー)
補遺
java
Java実行環境
(JRE)
アーカイブ
ファイル
(*.jar)
設定ファイル等
外部
ライブラリ
(*.jar)
外部
ライブラリ
(*.jar)
Javaプログラムのコンパイルと実行の流れ(非インストーラー)
補遺
javapackager
Java実行環境
(JRE)
アーカイブファイル
(*.jar)
設定ファイル等
javapackager でインストーラーファイルを作る
インストーラー
(*.msi)
javapackager は、Java SE 8u20から搭載
(それ以前のjavafxpackagerのリネーム)
外部ライブラリ
(*.jar)
外部ライブラリ
(*.jar)
補遺
インストーラー
(*.msi)
インストール
ショートカット
Java実行環境(JRE)
設定ファイル等
アーカイブファイル
(*.jar)
実行ファイル
(*.exe)
外部ライブラリ(*.jar)
補遺
Windowsのコントロールパネルから
プログラム名、発行元、バージョン等
を参照できる
アンインストールも簡単
コントロールパネルのプログラムと機能でインストール情報の確認
補遺
Windows Management Instrumentation
Windows OSのシステム情報の収集・監視・管理を行う仕組み
• Get-WmiObjectコマンドレット
リモートマシンの情報取得も可(-ComputerNameオプション)
MSI形式のインストーラでインストールしたものに限る
補遺
Windows OS上の主要インストーラー作成ツール
Windowsインストーラー(MSI)
 InstallShield
http://www.networld.co.jp/product/is/
商用製品。
Professional版(ノードロック)46万、
フローティング160万/ユーザー
限定版(LE)の権利がVisual Studio 2012~
(Professional以上)
 Visual Studio Installer
商用製品のVisual Studioの拡張機能(無償)
 WiX toolset
http://wixtoolset.org/
無償
Java SE 8のjavapackagerは、
WiX toolsetまたはInno Setupを使う
Windowsインストーラー形式(MSI)を作成するもの、独自インストーラー形式を作成するものが
ある
独自インストーラー
 Inno Setup
http://www.jrsoftware.org/isinfo.php
無償
 NSIS
http://nsis.sourceforge.net/
無償
補遺
WiX Toolsetのインストール
補遺
WiX Toolsetのインストール
補遺
WiX Toolsetのインストール
補遺
WiX Toolsetのインストール
補遺
WiX Toolsetのインストール
補遺
WiX Toolsetのインストール
補遺
WiX Toolsetのインストール
補遺
• WiX Toolset
– msiファイルからwxsを生成
WiXソース
ファイル
(*.wxs)dark.exe
インストーラー
(*.msi)
補遺
WiX Toolset参考情報
 WiXチュートリアル日本語訳
http://wix-tutorial-ja.github.io/toc.html
 書籍(洋書)「WiX 3.6: A Developer’s Guide to Windows Installer XML」
 Windows Installer/WiX/Installshield メーリングリスト
http://www.freeml.com/msi
補遺
• javapackager
– 次の機能を持つJDK標準コマンド
• CSSファイルをバイナリ形式に変換
• JARアーカイブファイルを作成
• 再配布用パッケージを作成
• JARファイルを署名
– オプション説明
https://docs.oracle.com/javase/jp/8/docs/technotes/tools/windo
ws/javapackager.html
補遺
• javapackager
– 再配布パッケージ(MSI)作成時
• バージョン番号の指定可能形式
<A>.<B>.<C>
A: 0~255
B: 0~255
C: 0~65535
http://msdn.microsoft.com/en-us/library/aa370859%28v=VS.85%29.aspx
※ MSI(WiX Toolset)では実は4つの数値の組み合わせが指定可能で、バージョン番号の比
較(新旧)をチェックするときには最後(4つ目)の数値を無視する
補遺
Intel 64 and IA-32 Architectures Optimization Reference Manual より
同時8命令
(Port 0~7)
但し、Portにより実
行可能な命令が
異なる。
ALU(演算装置)4つ
LD/STA(メモリ読み
書き)4つ
第4世代Coreプロセッサ Haswell マイクロアーキテクチャ
補遺
JavaVM 32bitか64bitか、それが問題だ
32bit版の優位点
 ヒープサイズが小さいとき、メモリ使用
量が少なくメモリ参照が高速
 JITクライアントコンパイラのみを使用可
能
32bit版の欠点
 プロセス合計サイズが2GB以下に制限
 long型、double型で64bitレジスタを利用で
きず低速
書籍「Javaパフォーマンス」より
OSが32bitであれば、Java VMは32bitのみ。OSが64bitのときは、Java VMは32bitも64bit
も選択可能。
補遺
JITコンパイラの使用するスレッド数
書籍「Javaパフォーマンス」4.5.1より
32bit版は、クライアントコンパイラ(C1)とサーバーコンパイラ(C2)の選択が可能
64bit版は、階層コンパイラ(C1+C2)とサーバーコンパイラ(C2)の選択が可能(C1のみの
選択は不可能)
CPU数 C1 C2 C1+C2
1 1 1 2
2 1 1 2
4 1 2 3
8 1 2 3
16 2 6 8
-XX:CICompilerCount=N で合計スレッド数の指定可能
補遺
GCの使用するスレッド数
書籍「Javaパフォーマンス」5.2.4より
32bit版は、デフォルトでシリアルGC
64bit版は、デフォルトで並列(スループット)GC
CPU数 シリアルGC 並列GC 備考
1 1 1 8個までは、CPUごとに1つ
2 1 2
4 1 4
8 1 8
16 1 13 8 +
5(𝑁 −8)
8
-XX:ParallelGCThreads=N で合計スレッド数の指定可能
補遺
初期ヒープサイズ
書籍「Javaパフォーマンス」5.2.3より
32bit版(クライアントVM)は、デフォルトで12MB
32bit版(サーバーVM)は、デフォルトで16MB
64bit版は、デフォルトで20.75MB
-XX:MetaspaceSize=N でメタスペース初期サイズの指定可能
物理メモリが192MB以下のマシン
・デフォルトで物理メモリの1/2
物理メモリが192MBより大きいマシン
・32bit版(サーバーVM)は、デフォルトで16MB
64bit版は、デフォルトで20.75MB
補遺
メタスペースの初期サイズ
書籍「Javaパフォーマンス」5.2.3より
32bit版(クライアントVM)は、デフォルトで12MB
32bit版(サーバーVM)は、デフォルトで16MB
64bit版は、デフォルトで20.75MB
-XX:MetaspaceSize=N でメタスペース初期サイズの指定可能
補遺
スレッドの使用するスタックサイズ
書籍「Javaパフォーマンス」9.4.1より
32bit版は、デフォルトで320KB
64bit版は、デフォルトで1MB
-Xss=N でスレッドあたりのスタックサイズの指定可能
メインスレッドのスタック
サイズは-Xssで指定した
ものとは別
補遺
• JavaVM 64bit上で実行する場合
– 32bit版JavaVMと近い設定をする
-Xms16m
-Xmx256m
-Xss320k
-XX:+UseSerialGC
-XX:CICompilerCount=2
JavaVM 32bit JavaVM 64bit JavaVM 64bit 調整
Private Bytes 66MB 304MB 107MB
Working Set Private 37MB 87MB 61MB
補遺
使用
(一部)
予約 空き使用
Virsutal Size
Private Bytes
Working Set -
Private
†1) 他のプロセスと共有可能なメ
モリはPrivate BytesとWorking Set -
Privateには含まれない
†1
• Windows OS上のプロセスのメモリ管理
†1
仮想アドレス空間
物理メモリ
†2) 物理メモリ上には実際にはリ
ニアに配置されることはない
†2
Private Bytesに着目
補遺
• Windowsのメモリ項目は計測ツールにより呼び方
がゆらぐ
項目 パフォーマンス
カウンタ
Process
Explorer
タスクマネー
ジャ
仮想サイズ Virtual Bytes Virtual Size
コミットサイズ Private Bytes Private Bytes コミットサイズ
ワーキングセット Working Set Working Set ワーキングセッ
ト(メモリ)
プライベートワーキン
グセット
Working Set -
Private
WS Private メモリ

More Related Content

What's hot

シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかAtsushi Nakada
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyakira6592
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザインMasayuki Kobayashi
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていることonozaty
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~モノビット エンジン
 
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月VirtualTech Japan Inc.
 
SharePoint Framework Teams タブ開発基礎講座
SharePoint Framework Teams タブ開発基礎講座SharePoint Framework Teams タブ開発基礎講座
SharePoint Framework Teams タブ開発基礎講座Hiroaki Oikawa
 
Integrating Service Mesh with Kubernetes-based connected vehicle platform
Integrating Service Mesh with Kubernetes-based connected vehicle platformIntegrating Service Mesh with Kubernetes-based connected vehicle platform
Integrating Service Mesh with Kubernetes-based connected vehicle platformJun Kai Yong
 
SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版Hiroaki Oikawa
 
「プロジェクト管理」を超えた Redmine 活用の道のりとこれから
「プロジェクト管理」を超えた Redmine 活用の道のりとこれから「プロジェクト管理」を超えた Redmine 活用の道のりとこれから
「プロジェクト管理」を超えた Redmine 活用の道のりとこれからMinoru Maeda
 
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうGo mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうTakuya Ueda
 
Open stack概要とよくある議論
Open stack概要とよくある議論Open stack概要とよくある議論
Open stack概要とよくある議論shintaro mizuno
 
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」akipii Oga
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素Akira Inoue
 
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたものFlutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたものRecruit Lifestyle Co., Ltd.
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveTokoroten Nakayama
 
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話Takuya Kikuchi
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門Shuji Yamada
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionYoshifumi Kawai
 

What's hot (20)

シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
show コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudyshow コマンド結果をパースする方法あれこれ #npstudy
show コマンド結果をパースする方法あれこれ #npstudy
 
大規模DCのネットワークデザイン
大規模DCのネットワークデザイン大規模DCのネットワークデザイン
大規模DCのネットワークデザイン
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
 
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
NFVアプリケーションをOpenStack上で動かす為に - OpenStack最新情報セミナー 2017年7月
 
SharePoint Framework Teams タブ開発基礎講座
SharePoint Framework Teams タブ開発基礎講座SharePoint Framework Teams タブ開発基礎講座
SharePoint Framework Teams タブ開発基礎講座
 
Integrating Service Mesh with Kubernetes-based connected vehicle platform
Integrating Service Mesh with Kubernetes-based connected vehicle platformIntegrating Service Mesh with Kubernetes-based connected vehicle platform
Integrating Service Mesh with Kubernetes-based connected vehicle platform
 
SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版SharePoint 開発でできること 2019年9月版
SharePoint 開発でできること 2019年9月版
 
「プロジェクト管理」を超えた Redmine 活用の道のりとこれから
「プロジェクト管理」を超えた Redmine 活用の道のりとこれから「プロジェクト管理」を超えた Redmine 活用の道のりとこれから
「プロジェクト管理」を超えた Redmine 活用の道のりとこれから
 
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろうGo mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
 
Open stack概要とよくある議論
Open stack概要とよくある議論Open stack概要とよくある議論
Open stack概要とよくある議論
 
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
「Redmineの運用パターン集~私に聞くな、チケットシステムに聞け」
 
.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素.NET 最新ロードマップと今押さえておきたい技術要素
.NET 最新ロードマップと今押さえておきたい技術要素
 
Flutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたものFlutter移行の苦労と、乗り越えた先に得られたもの
Flutter移行の苦労と、乗り越えた先に得られたもの
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
GoとDDDでモバイルオーダープラットフォームを 型安全に作り直した話
 
20分でわかるgVisor入門
20分でわかるgVisor入門20分でわかるgVisor入門
20分でわかるgVisor入門
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
 

Similar to Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々

もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順Hide Koba
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入Yu Nobuoka
 
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみようXpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみようTakeshi Yoshida
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システムTomohiro Ohtake
 
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようVM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようMasayuki Ozawa
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方光晶 上原
 
Power shellmemo
Power shellmemoPower shellmemo
Power shellmemoytanno
 
Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用Tomokazu Kizawa
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めYou&I
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発Yoshitaka Seo
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Takako Miyagawa
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCITakafumi Ikeda
 
Jenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいますJenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいますMasanori Satoh
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~normalian
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 

Similar to Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々 (20)

Hello Java
Hello JavaHello Java
Hello Java
 
もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順もろもろの AI ツールを Windows のローカル環境にインストールする手順
もろもろの AI ツールを Windows のローカル環境にインストールする手順
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみようXpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
XpagesDay 2014 [A-2] スタンダードクライアントで xpages を使ってみよう
 
Heap statsfx analyzer
Heap statsfx analyzerHeap statsfx analyzer
Heap statsfx analyzer
 
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
 
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようVM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみよう
 
自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方自宅で出来る!ゲームサーバの作り方
自宅で出来る!ゲームサーバの作り方
 
Power shellmemo
Power shellmemoPower shellmemo
Power shellmemo
 
Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用Windows8活用研究2 2013-01-26-公開用
Windows8活用研究2 2013-01-26-公開用
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
0621 ndk game
0621 ndk game0621 ndk game
0621 ndk game
 
Cell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始めCell/B.E. プログラミング事始め
Cell/B.E. プログラミング事始め
 
はじめての Azure 開発
はじめての Azure 開発はじめての Azure 開発
はじめての Azure 開発
 
Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中Code igniterでテスト駆動開発 資料作成中
Code igniterでテスト駆動開発 資料作成中
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
 
Jenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいますJenkins実践入門目次チラ見せしちゃいます
Jenkins実践入門目次チラ見せしちゃいます
 
Visual studio de debug
Visual studio de debugVisual studio de debug
Visual studio de debug
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 

More from torutk

LL2021 Java update
LL2021 Java updateLL2021 Java update
LL2021 Java updatetorutk
 
Jjugccc2017spring m6 javafx
Jjugccc2017spring m6 javafxJjugccc2017spring m6 javafx
Jjugccc2017spring m6 javafxtorutk
 
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...torutk
 
LLoT2016 Java Update
LLoT2016 Java UpdateLLoT2016 Java Update
LLoT2016 Java Updatetorutk
 
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)torutk
 
Java one 2013 sf 報告会lt
Java one 2013 sf 報告会ltJava one 2013 sf 報告会lt
Java one 2013 sf 報告会lttorutk
 
実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)torutk
 
Jjug night seminar201208_lt_cxxからjvm起動
Jjug night seminar201208_lt_cxxからjvm起動Jjug night seminar201208_lt_cxxからjvm起動
Jjug night seminar201208_lt_cxxからjvm起動torutk
 
2012年javaメモリリーク
2012年javaメモリリーク2012年javaメモリリーク
2012年javaメモリリークtorutk
 
2011年javaの旅
2011年javaの旅2011年javaの旅
2011年javaの旅torutk
 

More from torutk (10)

LL2021 Java update
LL2021 Java updateLL2021 Java update
LL2021 Java update
 
Jjugccc2017spring m6 javafx
Jjugccc2017spring m6 javafxJjugccc2017spring m6 javafx
Jjugccc2017spring m6 javafx
 
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
JJUG CCC 2016 Fall: World is not a square, rendering world coastline map with...
 
LLoT2016 Java Update
LLoT2016 Java UpdateLLoT2016 Java Update
LLoT2016 Java Update
 
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
Java FXグラフィックスとアニメーション入門(JJUG CCC 2015 Spring G-7)
 
Java one 2013 sf 報告会lt
Java one 2013 sf 報告会ltJava one 2013 sf 報告会lt
Java one 2013 sf 報告会lt
 
実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)実行可能JavaFXアプリケーションJAR(発表直前版)
実行可能JavaFXアプリケーションJAR(発表直前版)
 
Jjug night seminar201208_lt_cxxからjvm起動
Jjug night seminar201208_lt_cxxからjvm起動Jjug night seminar201208_lt_cxxからjvm起動
Jjug night seminar201208_lt_cxxからjvm起動
 
2012年javaメモリリーク
2012年javaメモリリーク2012年javaメモリリーク
2012年javaメモリリーク
 
2011年javaの旅
2011年javaの旅2011年javaの旅
2011年javaの旅
 

Jjug ccc 2016 spring i 5 javaデスクトッププログラムを云々