OpenJ9 で NetBeans 起動を高速化

前回 NetBeans IDE 8.2 に OpenJ9 を利用してみましたが、更に OpenJ9 固有の -Xshareclasses オプションを使うことで起動の高速化を試みました。

Windows で OpenJ9 を試してみようか

方法は NetBeans IDE のショートカットをコピーして、実行コマンド (netbeans64.exe) に -J-Xshareclasses:name=netbeans_8_2 -J-Xscmx64m を追加するだけです。

これで二回目以降の起動は目に見えて速くなりましたね。IDE の再起動も気軽にできるようになりました。

外部スクリプトがロード完了したら何か実行する

次のようなコードを書いてみたが穴はないだろうか。

((scriptId, init) => {
    if ("commonmark" in window) {
        init();
    }
    else {
        let script = document.getElementById(scriptId);
        script.addEventListener("load", function () {
            init();
        });
    }
})("commonmark-script", () => {
    window.console.log("init!");
});

更新: 初出時コード中の改行が反映されていなかったので訂正しました。

Windows で OpenJ9 を試してみようか

Windows x64 バージョンの OpenJ9 を組み込んだ OpenJDK 8 がリリースされていたので、インストールしてみました。

インストールは zip ファイルをダウンロードしてばらすだけなのですが、古い OpenJDK の常で cacerts が空っぽなので、 OpenJDK 10 からコピーしておきました。

試しに NetBeans IDE 8.2 に使ってみると、気持ち起動が速いかなと感じましたね。しばらくこれで使ってみましょうか。サポートも 2022 年 9 月まで続けるようですし。

それでは。

NetBeans 9.0 を試してみました

Oracleから譲渡されて約2年、Apache財団が「NetBeans 9.0」を正式リリース – 窓の杜

とのことで、取り急ぎ試してみました。

まだ実行形式インストーラーが用意されていないので、インストールは zip ファイルをばらすだけでショートカットも何もありません。

現時点で対応しているのは Java SE プロジェクトのみなので、普段 Java EE を使っている当方では本格的な移行はまだ先になりそうです。プラグインが揃った頃にまたチャレンジしましょう。

docker-compose.yml のバージョンは 2.1 でよかった話

当方では Docker コンテナーを作成するのに Docker Compose をよく利用しています。これまでバージョン 3 としてきたのですが、 swarm モードを使わないのであれば 2.1 でよいことに今更ながら気付かされました。むしろバージョン 3 だと使えない機能があるので、 swarm の機能が不要ならバージョン 2 系列がベストですね。

問題: Microsoft Flow で二つの日時間の日数を求めよ (解答あり)

Microsoft Flow で使っているワークフロー定義言語には、日時を増減する関数はあるものの二つの日時からその間の時間を求める関数がありません。

Azure Logic Apps のワークフロー定義言語スキーマ

そこで知恵を絞って「作成」(Compose) アクションに次のように入力して解決しました。

"@div(sub(ticks(date-1), ticks(date-2), 86400e7)"

ticks 関数が 100 ns 単位のティック数を返すことに気付かなければ大変な手間になるところでした。

これを応用して 1900-01-01 からの日数を計算すると、 Excel 日時も算出できます。むしろこちらが目的だったのですがね。

Apache Maven で javadoc 出力を HTML5 にする ちょっとした設定

$HOME/.m2/settings.xml に次のプロファイルを追加:

<profile>
    <activation>
        <jdk>[9,)</jdk>
    </activation>
    <properties>
        <additionalJOption>-html5</additionalJOption>
    </properties>
    <id>java9</id>
</profile>

本来 additionalJOption-J… 形式のオプションを指定するものですが、それ以外も使えるということでこれを流用します。