NetBeans JavaFXアプリケーションのビルド時間を短縮する(Ant)¶
NetBeansの新規プロジェクトで、JavaFXアプリケーションを選択して生成すると、ビルド時にデフォルトでは生成したJARファイルに電子署名を行うため、NetBeans上から開発しているアプリケーションを実行するときに時間がかかります。開発中は頻繁にソースコードの修正と実行を繰り返すので、数秒といえども余分にかかるのは苦痛です。
はじめに¶
この記事の確認環境は次のとおりです。
項目 | 環境 |
---|---|
OS | 日本語版Windows 7 64bit |
Java | Java SE 8 RC1 (b128) |
NetBeans | NetBeans 8.0 Beta Java SE版 |
デフォルトのJavaFXアプリケーションビルド¶
NetBeansで、プロジェクトの種類をJavaFXのどれかに指定した場合(新規プロジェクトで次のいずれかを選択した場合)のビルド処理を見てみます。
まずは、[ファイル]メニューから[新規プロジェクト]を選択し、「新規プロジェクト」ダイアログを表示し、カテゴリ欄で[JavaFX]を選択した状態の画面を次に示します。
このプロジェクト欄に表示されるいずれかを選択してプロジェクトを作成します。プロジェクト生成時にデフォルトで生成されるプロジェクト設定とソースファイルでプロジェクトを実行したときのビルド過程は次のようになります。
ant -f C:\\Users\\torutk\\Documents\\netbeans\\JavaFXApplication6 jfxsa-run init: deps-jar: Created dir: C:\Users\torutk\Documents\netbeans\JavaFXApplication6\build Updating property file: C:\Users\torutk\Documents\netbeans\JavaFXApplication6\build\built-jar.properties Created dir: C:\Users\torutk\Documents\netbeans\JavaFXApplication6\build\classes Created dir: C:\Users\torutk\Documents\netbeans\JavaFXApplication6\build\empty Created dir: C:\Users\torutk\Documents\netbeans\JavaFXApplication6\build\generated-sources\ap-source-output Compiling 2 source files to C:\Users\torutk\Documents\netbeans\JavaFXApplication6\build\classes Copying 1 file to C:\Users\torutk\Documents\netbeans\JavaFXApplication6\build\classes compile: Created dir: C:\Users\torutk\Documents\netbeans\JavaFXApplication6\dist Detected JavaFX Ant API version 1.3 Going to create default keystore in C:\Users\torutk\Documents\JavaFXApplication6\build\nb-jfx.jks Generating Key for nb-jfx Launching <fx:jar> task from C:\java\jdk1.8.0\lib\ant-javafx.jar Warning: From JDK7u25 the Codebase manifest attribute should be used to restrict JAR repurposing. Please set manifest.custom.codebase property to override the current default non-secure value '*'. Signing JAR: C:\Users\torutk\Documents\netbeans\JavaFXApplication6\dist\JavaFXApplication6.jar to C:\Users\torutk\Documents\netbeans\JavaFXApplication6\dist\JavaFXApplication6.jar as nb-jfx jarは署名されました。 警告: 署名者の証明書は6か月以内に期限切れになります。 -tsaまたは-tsacertが指定されていないため、このjarにはタイムスタンプが付加されていません。タイムスタンプがないと、署名者証明書の有効期限(2014-05-12)後または将来の失効日後に、ユーザーはこのjarを検証できない可能性があります。 キーストアのパスワードを入力してください: nb-jfxの鍵パスワードを入力してください: Launching <fx:deploy> task from C:\java\jdk1.8.0\lib\ant-javafx.jar jfx-deployment-script: jfx-deployment: jar: Copying 12 files to C:\Users\torutk\Documents\netbeans\JavaFXApplication6\dist\run1441587342 jfx-project-run: Executing C:\Users\torutk\Documents\netbeans\JavaFXApplication6\dist\run1441587342\JavaFXApplication6.jar using platform C:\java\jdk1.8.0/bin/java
Antのターゲットと処理内容¶
- init
- ビルド時のログに特記なし
- deps-jar
- buildディレクトリを作成し、そこにbuild-jar.propertiesファイルを生成
- compile
- buildディレクトリの下に、classes、generated-sourcesディレクトリを作成
- javacコンパイル
- FXMLファイルのコピー
- jfx-deployment-script
- 電子署名用の鍵ストアを生成
- signjarタスクでJARファイルに電子署名
- jfx-deployment
- ビルド時のログに特記なし
- jar
- ビルド時のログに特記なし
- jfx-project-run
Antの処理時間¶
Antをコマンドラインで実行すると最後にTotal timeが表示されますが、体感時間より短いので、以下は目視計測した秒数を記載しました。
ターゲット | 処理時間 |
---|---|
compile | 3秒 |
jfx-deployment-script | 4秒 |
jfx-project-run | 2秒 |
おおよそですが、電子署名に実行にかかる時間の半分近く要しています。
電子署名をスキップしてJavaFXアプリケーションのビルド・実行時間を短縮¶
そこで、次の設定で電子署名の処理を無効にします。
NetBeans上で[実行]すると、半分ほどの時間でアプリケーションが立ち上がるようになりました。