Apache Commons Logging のログ出力を抑制する

Apache Commons Logging Log4j java.util.logging など他のロガー実装に処理を委譲してくれるブリッジ ライブラリです。Apache Commons Logging API を使ってログを出力するようにコードが書かれていれば ログ出力に使う実装を java.util.logging から Log4j に切り替えるといったことが簡単にできます。

マウスホバーでゆっくり色が変わるボタンを作る(JavaFX)

JavaFX では CSS を使って UI の外観や振る舞いを装飾することができます。CSS セレクタに hover 擬似クラスを指定することもできるので マウスカーソルを重ねたときに外観を変えるのも簡単です。

ですが JavaFX CSS3 transition プロパティをサポートしていないため 時間経過で次第にボタンの色を変えていくといったことは CSS だけでは 実現できません。

マウスホバー時にゆっくりと色が変わるボタンを JavaFX で作ってみます。

JavaFXでUIスレッドの処理が完了するまで待機する

JavaFX はスレッドセーフではありません。

これは JavaFX に限ったことではなく 世の中に存在するほぼすべての UI ツールキットはシングルスレッドモデルとして設計されており スレッドセーフではありません。AWT Swing Android .NET Framework WindowsForms WPF Linux を含むクロスプラットフォームの GTK いずれもスレッドセーフではないのです。WPF は独立した描画スレッドを持っていますが 開発者が触れるのは UI スレッドのみであり他のツールキットと同様の UI スレッド制御が必要であることからシングルスレッド UI として分類しました

Eclipseでコード補完が効かなくなるバグ

先日 Java のコードを書いているときに Eclipse のコード アシストが効かなくなる事態が発生しました。

ウェブで検索してみると .settings の中にあるファイルの content_assist_disabled_computers の行をコメントアウトするとか Eclipse ContentAssist 設定で Java Proposals のチェックが外れていないか確認する といった解決策が見つかります。しかし いずれの方法を試しても解決せず。

さらに調べてみたところ Java の複雑な構文を使用しているとコード アシストが効かなくなるバグが Eclipse にあることが分かりました。確認に使用したバージョンは Eclipse 2019-03 です

Java 11で和暦 - 新元号「令和」を表示する

2019 4 16 Oracle から Java SE 8u211 / Java SE 8u212 / Java SE 11.0.3 (LTS) / Java SE 12.0.1 がリリースされました。これらのバージョンから新元号 令和 に対応しているということなので Java での和暦表示を確認してみました。

jlink JRE を作成する場合には ちょっとした工夫が必要になるので そういった注意点についても説明していきます。

JREが単体で配布されなくなった理由

2018 9 Java 11 がリリースされました。Java 10 までは開発用の JDK と実行環境の JRE 2 つのパッケージが提供されていたのですが Java 11 から JDK のみとなり Java 実行環境 JRE は単体配布されなくなりました。

オラクルが配布している Oracle JDK Oracle OpenJDK だけでなく ほかの OpenJDK ビルド Zulu OpenJDK でも JRE は配布されていません。

2019-04-26 訂正
AdoptOpenJDK では JRE も配布していました。

どうして JRE が配布されなくなってしまったのでしょうか?

デスクトップ・ブリッジを使ってJavaアプリをUWPアプリにしよう

Java アプリをデスクトップ ブリッジ UWP アプリとして.appx パッケージにまとめると Microsoft Store を通して Java アプリを配布できるようになります。

本記事では Desktop App Converter ではなく MakeAppx コマンドを使って Java アプリを UWP アプリ パッケージ化する方法を解説します。

OpenJDKでJavaアプリ配布パッケージを作る

Java 7 以降の Oracle JDK には javapackager という Java アプリケーション配布パッケージを作成するツールが付属していたのですが 残念なことに OpenJDK には javapackager は含まれていません。

今回は javapackager を使わずに OpenJDK Java アプリケーション配布パッケージを作成する方法を紹介します。作成するパッケージには Java アプリの実行に必要な JRE Java Runtime Environment が含まれるようにして 配布パッケージを展開するだけで Java アプリを実行できるようにします。