はじめに
VScodeでQuarkusを使った開発をするための環境構築の方法を以下に整理します。
Quarkusとは
Quarkusは、Javaで動作する軽量で高速なフレームワークで、特にクラウドネイティブアプリケーションとKubernetes環境向けに最適化されており、マイクロサービスアーキテクチャのアプリケーションの開発に適しています。
主な特徴は以下の通りです。
- Kubernetesネイティブ
QuarkusはKubernetes上でのデプロイを前提に設計されており、Kubernetesとの統合が容易です。これにより、コンテナ化されたアプリケーションの開発とデプロイがシンプルになります - 高速な起動時間
Quarkusは非常に短い起動時間を誇り、これはサーバーレスやマイクロサービスアーキテクチャで重要な要素です。これにより、スケーラビリティとリソース効率が向上します - 低いメモリ消費
従来のJavaフレームワークに比べてメモリ消費が少なく、クラウド環境でのコストを削減できます - 広範な拡張機能のサポート
Quarkusは、Hibernate ORM、RESTEasy、Apache Kafka、Vert.xなど、多くのライブラリとフレームワークをサポートしています
VSCode拡張機能のインストール
VSCodeをインストールし、以下の拡張機能をインストールします。
環境構築
「Get Started with Java Development」の画面から好きなJDKをインストール
※ここではJDK21を選択しました。
Quarkusプロジェクトを作成
Ctrl+Shift+P:コマンドパレット→quarkusからプロジェクト作成
サンプルコード
package org.acme;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/mylife")
public class GreetingResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "this is mylife.";
}
}
Producesアノテーションはメソッドのレスポンスのメディアタイプを指定している。今回はテキストを返すことを示している。
ローカルでテストする
Quarkusではなんと、アプリケーションのテストのためにDBに接続できなくても自動的にDockerでPostgreSQLを作ってアプリケーションをそれに接続してテストが可能な、Dev Serviceという機能がある。
今回それを利用してローカルでテストしてみる。
「terminal」から「./mvnw quarkus:dev」でアプリケーションを起動可能。
ちなみに「mvnw」とはmaven wrapperのことでmavenをローカルにインストールしなくてもプロジェクトがビルドできる便利なもの。
レスポンスをJSON形式にする
上記サイトの通り「quarkus-resteasy-jsonb
」extensionをプロジェクトにインストール。インストールするときにclassicと書いてあったがそのままインストールした。
package aaa.jsonsample;
public class Message {
private String from;
private String message;
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package aaa.jsonsample;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.MediaType;
@Path("/hello")
public class HelloResource {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String hello() {
return "Hello RESTEasy";
}
@GET
@Path("/message")
@Produces("application/json")
public Message message(){
Message msg = new Message();
msg.setFrom("John");
msg.setMessage("WELL!!");
return msg;
}
}
Producesアノテーションにて"application/json"を指定しているのでレスポンスをJSON形式で返すことを示している。
参考