2
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?

はじめに

VScodeでQuarkusを使った開発をするための環境構築の方法を以下に整理します。

Quarkusとは

Quarkusは、Javaで動作する軽量で高速なフレームワークで、特にクラウドネイティブアプリケーションとKubernetes環境向けに最適化されており、マイクロサービスアーキテクチャのアプリケーションの開発に適しています。

主な特徴は以下の通りです。

  • Kubernetesネイティブ
    QuarkusはKubernetes上でのデプロイを前提に設計されており、Kubernetesとの統合が容易です。これにより、コンテナ化されたアプリケーションの開発とデプロイがシンプルになります
  • 高速な起動時間
    Quarkusは非常に短い起動時間を誇り、これはサーバーレスやマイクロサービスアーキテクチャで重要な要素です。これにより、スケーラビリティとリソース効率が向上します
  • 低いメモリ消費
    従来のJavaフレームワークに比べてメモリ消費が少なく、クラウド環境でのコストを削減できます
  • 広範な拡張機能のサポート
    Quarkusは、Hibernate ORM、RESTEasy、Apache Kafka、Vert.xなど、多くのライブラリとフレームワークをサポートしています

VSCode拡張機能のインストール

VSCodeをインストールし、以下の拡張機能をインストールします。

Quarkus
image.png
Java
image.png

環境構築

「Get Started with Java Development」の画面から好きなJDKをインストール
image.png
※ここではJDK21を選択しました。

ひたすらNextを押下してInstall
image.png

コマンドプロンプトを起動してインストール確認
image.png

システム環境変数JAVA_HOME設定
image.png

Quarkusプロジェクトを作成

Ctrl+Shift+P:コマンドパレット→quarkusからプロジェクト作成

サンプルコード

GreetingResource.java
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をローカルにインストールしなくてもプロジェクトがビルドできる便利なもの。

image.png

サンプルコードの実行結果(ローカル)
image.png

レスポンスをJSON形式にする

上記サイトの通り「quarkus-resteasy-jsonb」extensionをプロジェクトにインストール。インストールするときにclassicと書いてあったがそのままインストールした。

Message.java
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;
    }
}
HelloResource.java
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形式で返すことを示している。

参考

2
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
2
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?