プロジェクト

全般

プロフィール

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]を選択した状態の画面を次に示します。

新規プロジェクト作成で、カテゴリ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のJavaFXアプリケーションでビルド時の電子署名を無効にする方法

NetBeans上で[実行]すると、半分ほどの時間でアプリケーションが立ち上がるようになりました。

projectproperty-deployment.png 表示 - NetBeansのJavaFXアプリケーションでビルド時の電子署名を無効にする方法 (85.5 KB) 高橋 徹, 2014/02/11 01:57

NewProject-JavaFX.png 表示 - 新規プロジェクト作成で、カテゴリJavaFXを選択したときの画面 (56.3 KB) 高橋 徹, 2014/02/11 11:14

クリップボードから画像を追加 (サイズの上限: 1 GB)