1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Project Wakefieldの現状

Last updated at Posted at 2024-10-14

Project Wakefield

Project WakefieldはLinux版OpenJDKのGUI層を従来のX WindowからWaylandへ移行させるプロジェクトです。

Waylandって何

Waylandとは従来Unix系OSのGUI層を担ってきたX Windowを置き換えるべく開発されたものです。Xとの差異については他を参照していただくとして、徐々にXの代替としての地位を築いてきて現在ではほぼすべてのLinuxディストリビューションが指定しなければWaylandで動作するところまで来ています。

JavaのToolkitとX Windowサポート

JavaはJDK1.0の頃はLinuxをサポートしていませんでした。過去に誰かが「JDK1.0のLinux版ってどこにあるの」と尋ねていたことがありましたが、そういうものは存在しなかったのです。今からすると信じられないことですが。

AWT(とその上に構築されているSwing)はjava.awt.Toolkitという仕組みの上にGUIのサポートを構築しています。JDK1.4までのUNIX系OSではMotif Toolkit(MToolkit)というものが動いていました。これはjava.awt.Toolkit#getDefaultTookit()を見ると分かります。

このシステムプロパティがない場合、使用されるデフォルトのツールキットは "sun.awt.motif.MToolkit" という名前のクラスになります。これは Abstract Window Toolkit の motif 実装です。

JDK1.5にてXToolkitが導入されました

Java SE 5.0から、AWTがSolarisおよびLinuxプラットフォーム上に再実装されました。新しいToolkitの実装には、次のような利点があります。

  • MotifおよびXtライブラリへの依存関係をなくします。
  • ほかのGUIツールキットとの相互運用性が向上します。
  • より良いパフォーマンスと品質を提供します。

LinuxとSolarisの両方で、新しいツールキット(XToolkit)がデフォルトになります。

Javaバージョン履歴のページを参照する限りではJDK1.5の最初のリリースは2004年のようですので、そして、MToolkitはほぼ一瞬で消えてしまったので、すでに20年くらいXToolkit以外に選択肢がない状態だったことになります。

Waylandへの対応

WaylandにはXwaylandと呼ばれるX互換レイヤーが用意されており、何もしなくてもXクライアントが(大抵は)問題なく動作するようになっています。現時点ではまだ殆どのJDK/OpenJDKがXToolkitで動作しているので、それらはXwaylandを経由して動作していることになります。

しかしXwayland経由でJavaアプリケーションを動作させる場合一部に非互換部分があります。これはX WindowとWaylandのポリシーなどの違いから出てくる差異であり、Xwaylandのシミュレーションを完璧にすればOKという問題ではない部分があります。特にRobot APIに関する部分で引っかかるようです。

そこでWaylandへのnative対応が求められるようになってきました。このためProject WakefieldではWayland nativeのToolkitであるWLToolkitを開発しています。

ある時期からJetBrainsが自社製IDEのWayland native対応を進める姿勢を示したことでWLToolkitの開発はかなり進歩したようです。

最新のWLToolkit

一番手軽にWLToolkitを体験する方法はSDKMAN!からJetBrains Runtime(jbr)を読み込むことだと思います。JBR21にはすでにWLToolkitが取り込まれています。

sdk install java 21.0.4-jbr

これでSwingのサンプルのTreeIconDemo2を実行した結果がこうなります。

java -Dawt.toolkit.name=WLToolkit components.TreeIconDemo2

Screenshot from 2024-10-15 00-27-08.png

Toolkit指定を外して実行した結果はこうなります。(Xwaylandによる描画結果になります。)

Screenshot from 2024-10-15 00-33-22.png

ウィンドウのタイトルバーの角丸処理が外れているのとフォントのレンダリングに差があり、まだ完成度が低いという感じです。

デスクトップの世界ではまあXwaylandがあればそれなりのクオリティの描画結果が得られるので、ズバリの非互換を踏んでいるケース以外今のところそんなに気にしなくてもいいのですが、問題は組込の世界ですね。

組込の世界ではOSとしてはLinuxをベースにしたものが提供されるケースは多いのですが、X Windowは提供されないというケースが増えてきました。Waylandならあります、という状況ですね。また組込JavaだとまだJDK8以下を使っているケースも多いと思われます。SDKMAN!で提供されるJBRも21にはWLToolkitが含まれていますが、11だとXToolkitしか入っていませんでした。OpenJDKでメインブランチにWLToolkitが取り込まれたとしても入るのは新しいものからになる可能性が高く、JDK8までWLToolkitが降りてくるのはかなり先だと考えるべきでしょう。組込の状況から考えてWayland native対応の重要度が高いのはメジャーバージョンの低いJDKの方だと考えるべきでしょう。逆にそこでの対応が遅れた場合Javaを捨てる製品が増えていくのではという懸念があるのでした。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?