Jetpack Compose for Desktop に Swing レイヤーと Apple Silicon サポートを追加

JetBrains は、オープンソースのクロスプラットフォーム UI 開発フレームワークである Jetpack Compose for Desktop の新バージョンをリリースしました。

何らかの開発作業を行っている場合は、JetBrains について聞いたことがあるでしょう。 彼らは、IntelliJ (Android Studio のベース)、CLion、PhpStorm などを含む巨大な IDE スイートの背後にある会社です。 作ったのも彼らです コトリン、非常に人気のあるクロスプラットフォーム プログラミング言語。

そして JetBrains は再びそれに戻ってきました。 1 年ちょっと前、Google は Jetpack Compose と呼ばれる Android 用の新しいレイアウト エンジンを導入しました。 終わってしまった それ以来、かなりの大きな変更が加えられました、しかし、それはAndroidの古典的なXMLレイアウトに代わる有能な(まだ多少不安定ではあるものの)変わりました。

Jetpack Compose は JetBrains とどのような関係がありますか? そうですね、まず、Kotlin で書かれています。 しかしまた、JetBrains は Compose をデスクトップ領域に移植することに黙って取り組んできました。 これは初期の開発者プレビューとして公開されており、現在 JetBrains はその存在を正式に発表する準備ができています。

Jetpack Compose とは何ですか?

冒頭でも少しお話しましたが、もう少し説明する必要があると思います。 以前に Android で開発したことがあれば、おそらくレイアウトの仕組みには慣れているでしょう。 まず、XML ファイルでレイアウトを設計し、次に Java または Kotlin からそのレイアウトを操作します。 機能的ではありますが、少し時代遅れで、言語間でレイアウトを分割すると管理が難しくなる場合があります。

これに代わるものとして、Google は Jetpack Compose の開発を開始しました。 Compose は、Kotlin 上に構築された Android 用のレイアウト エンジンです。 すべてのレイアウトとロジック コードが 1 か所にまとめられているため、対話性が大幅に向上します。 また、XML レイアウトの命令型スタイルではなく、宣言型でもあります。

命令型レイアウト エンジンから宣言型レイアウト エンジンへの移行には慣れるまでに時間がかかるかもしれませんが、Compose はまだ初期段階にあるとはいえ、XML よりも確実に改善されています。

デスクトップ用 Jetpack Compose

つまり、Compose は、ネイティブ Android アプリの優れたレイアウト代替手段となります。 ただし、(通常は)クロスプラットフォームではありません。 そこで JetBrains の出番です。 同社は、Windows、Linux、macOS (Intel と ARM の両方) をサポートする Jetpack Compose をデスクトップ領域に移植しました。

Electron、JavaFX、UWP など、デスクトップ用のレイアウト エンジンは他にもありますが、現時点では少々混乱しています。 一部はクロスプラットフォームではないため、特定の 1 つのオペレーティング システムでのみ動作します。 技術的にはクロスプラットフォームですが、配布するには多大な労力を必要とするものもあります。 それでも、JavaFX など、他のものは作業が面倒です。

一方、Jetpack Compose for Desktop は比較的使いやすく、ディスプレイのスケーリングをサポートし、スタイルが組み込まれており、(ほぼ) 完全にクロスプラットフォームです。 1 つのオペレーティング システムからすべてのディストリビューションをコンパイルすることはまだできませんが、コード自体は完全に移植可能です。 Android と同様に、パッケージ化されたアプリは Java に基づいていますが、ユーザーがそれを使用するために JDK をインストールする必要はありません。

相互互換性

Compose for Desktop はまだ新しいため、いくつかの機能が欠けています。 開発者がこれらの制限を回避できるように、Compose for Desktop は、最も一般的な 2 つの Java レイアウト エンジン、JavaFX および Swing と相互運用可能です。 これらのエンジンのいずれか (または両方) でデスクトップ アプリを開発している場合は、現在のコードベースを維持したまま Compose への移行を開始できます。

アンドロイド + デスクトップ

Compose Android アプリをデスクトップに移動したい場合はどうすればよいでしょうか? まあ、それも(ある意味)できます。 アプリの UI 要素は、Android とデスクトップ間で簡単に共有できます。 すべてを共有することはできませんが、開発が容易になることは確かです。

Appleシリコンのサポート

これについては上でも触れましたが、もう一度触れておきます。 の 新しい Apple Silicon Mac これは非常に素晴らしいものですが、プロセッサは ARM CPU アーキテクチャに基づいているため、現在、多くの macOS アプリが Rosetta 2 x86 トランスレータを通じて実行されています。 Apple はその変換でかなり良い仕事をしましたが、ネイティブ ARM プログラムは依然としてより適切に実行されます。

Jetpack Compose for Desktop は Apple Silicon をネイティブにサポートしています。 つまり、翻訳によるパフォーマンスの低下や、Apple がサポートを終了した場合の将来のサポートについて心配する必要がなくなります。

機能性

つまり、JetBrains がデスクトップ用の新しいレイアウト エンジンを作成したのは良いことですが、それが現在あるものよりも優れていると誰が言えるでしょうか?

自分。

これを書いている時点で利用可能な最新のビルド (0.2.0-build132) を使用して、SystemUI Tuner 用の単純な権限付与アプリを作成しました。 私は Compose や宣言型デザインにあまり慣れていないので、XML レイアウト アプリよりも少し難しかったですが、なんとかできました。 JavaFX よりもはるかに使いやすいです。

テーマのサポート (つまり、ダーク モード) はまだ少し曖昧ですが、インタラクティブなレイアウトを構築するのは非常に簡単で、ウィンドウのサイズを変更するときにいくつかのちらつきを除けば、すべてが正常に機能します。

アプリをチェックアウトしたい場合は、ソース コードを次の場所から入手できます。 GitHub. IntelliJ または Android Studio を使用してインポートするだけで、実行できるようになります。


個人的には、Jetpack Compose for Desktop に非常に興奮しています。 以前はその存在すら知りませんでしたが、すでに私がデスクトップ レイアウト エンジンとして選んでいます。 詳細については、 Jetpack Compose for Desktop Web サイト または GitHub 上で.

あなたはそれについてどう思いますか? チェックしてみて、他の利用可能なフレームワークの代わりに使用する価値はありますか? お知らせ下さい!

注目の画像クレジット: GitHub 上の JetBrains