Visual Studio Code用Quarkus Tools - 1.10.0リリース
Quarkus Tools for Visual Studio Code 1.10.0が VS Code Marketplace と Open VSX でリリースされました。すべての変更点のリストについては、 変更履歴を参照してください。
前回のQuarkus Tools for VS Codeのリリースから約8ヶ月が経ちました。8ヶ月!?本当に長い時間ですね。1.10.0では、いくつかの新機能を導入しています。
Quteテンプレートエンジン のサポートが導入されたため、リリースの安定化に多くの時間を費やしました。私たちは、そのために耐障害性のあるパーサーを書き、様々な診断、コードアクション、補完を提供し、JavaソースファイルとQuteテンプレートファイル間の統合が非常にスムーズになるように最善を尽くしました。実際、非常に多くの新機能があるので、Quarkusエクステンション内のQuteサポートについては、別の記事を作成する予定です。しかし、Quarkusのツールにも、基盤となるMicroProfileのツールにも、多くの改良点があります。
Quarkus側の1.10.0に期待出来ることは、以下の通りです。
設定の全貌
これまで、プロパティのプレフィックス(例: %dev.name
)によって設定プロファイルをサポートしていましたが、今回、プロファイルを意識したファイルもサポートするようになりました。MicroProfile 2.0 のリリースでは、この他にも多くの機能をサポートするようになりました。
JREを裏に隠す
TL;DR : Windows、Linux、またはMacOS(x86_64またはARM64アーキテクチャ)では、VS CodeでQuarkusツールを実行するためにJREを提供する必要はありません。
Quarkus Toolsとその依存関係を実行するには、以前はJRE(Java Runtime Environmentバージョン11以降)が必要でした。これは、言語サービスがJavaベースであるためです。しかし、最近のアップデートにより、私たちの基盤となるJavaツールサポートは、独自のJavaランタイムを win32-x64
, linux-x64
, linux-arm64
, darwin-x64
, および darwin-arm64
で提供しています。つまり、このようなシステムを使用している場合、エクステンションがJava 11のいずれかのバージョンを検出できるようにする必要はありません。
すべてのアノテーションのサポート
ちょっと大げさかもしれませんが、この新しいリリースで導入されたもののひとつに、さまざまなアノテーションのための優れた診断をすばやく書くことを容易にする小さなフレームワークがあります。本当に簡単な例として、 @Scheduled
アノテーションの delay
メンバ値の検証をサポートするために必要なコードを紹介します。
<extension point="org.eclipse.lsp4mp.jdt.core.javaASTValidators">
<!-- Java validation for the Quarkus @Scheduled annotation delay member-->
<annotationValidator annotation="io.quarkus.scheduler.Scheduled" source="quarkus">
<attribute name="delay" range="0" /> <!-- x >=0 -->
</annotationValidator>
</extension>
これにより、本当に簡単な検証の多くを処理し、複雑なものを正しくすることに時間を割くことができるようになりました。
私たちの生活が楽になるだけでなく、より多くのコントリビューターにエクステンションを開放することができるのです。
@Bulkhead
, @Timeout
, @Asynchronous
, @Scheduled
のアノテーションの基本的な検証をサポートするようになりました。
@Scheduled
の場合、 @ConfigProperty
の name
メンバと同様に、cron 式をアプリケーションのプロパティ定義にリンクします。このような場合、Java ソースファイルを Quarkus 設定ファイルに簡単に関連付けることができます。
それは、些細なことです
既存の機能については、より既存のユースケースをカバーし、問題点を簡単に指摘し、解決策を提案できるようにしたいと思いました。
たとえば、Quarkusアプリケーションの起動時に、コードレンズURLエンドポイント( microprofile.tools.codeLens.urlCodeLensEnabled
設定により有効)は @ApplicationPath
をサポートし、その値が考慮されるようになりました。
この例では、 @ApplicationPath
は /api
に設定されており、メソッド宣言上のコード(下記)はそれを考慮して URL を生成しています。
また、 @Retry
のようなアノテーションでは、技術的には許されていても、望ましくない使用方法について、時間をかけてユーザーに警告しています。
この例では、メソッドを再試行するまでの遅延時間と、再試行を試みるまでの最大時間が同じです。これは、これらの設定が意図したとおりに使用されていないことを意味します。 jitter
や jitterDelayUnit
のようなメンバ値を使用してさらに複雑にした場合、これらの警告は不適切に設定された値を示す良い指標となります。
@ConfigProperty
アノテーションでは、安全性を高めるために、 defaultValue
のメンバをフィールド宣言に対して検証するようにしました。
defaultValue
を使用せず、アプリケーションのプロパティでプロパティが定義されていない場合、同様に自動生成するコードアクションを用意しています。
コード補完もあります!
結局のところ、誰もが、よくわからない設定を追い求める時間を減らし、ロジックの開発に時間をかけたいと思うものなのです。
Javaソースのメソッドに @CacheResult
アノテーションを使用している場合、設定ファイルからそのメソッドを構成するために利用可能な設定を自動的に提案します。また、変更に対してかなり敏感に反応するので、何か問題が発生したときにいつでも知ることができます。
@ConfigMapping
は、アプリケーションのプロパティを補完するだけでなく、いくつかの基本的な検証もサポートされるようになりました。
VS Code エクステンションをお試しいただき、フィードバックをお待ちしています。 redhat-developer/vscode-quarkus, redhat-developer/vscode-microprofile, redhat-developer/quarkus-ls, eclipse/lsp4mp, redhat-developer/vscode-java そして eclipse/eclipse.jdt.ls の多くの貢献者に感謝します。新たに追加されたQuteの機能についての投稿をお楽しみに。
リンク
-
VS Code Marketplace: https://marketplace.visualstudio.com/items?itemName=redhat.vscode-quarkus
-
Open VSX: https://open-vsx.org/extension/redhat/vscode-quarkus
-
GitHubレポジトリ: https://github.com/redhat-developer/vscode-quarkus
-
GitHubの課題の作成: https://github.com/redhat-developer/vscode-quarkus/issues/new
-
変更履歴: https://github.com/redhat-developer/vscode-quarkus/blob/master/CHANGELOG.md