Java と VS Code

no extension
  1. パソコンに Visual Studio Code を導入する(再チャレンジ)
  2. Go と VS Code
  3. Markdown と VS Code
  4. Java と VS Code ← イマココ
  5. やっと Codespaces が使える

仕事で Spring Boot なコードを書くことになって,今更ながら基本から勉強し直している。 で,どうせなら VS Code で環境を作るのがいいよねってことで,覚え書きとして記しておく。

Extension Pack for Java

$ code --install-extension vscjava.vscode-java-pack

これをインストールすると以下のパッケージも併せてインストールされる。

これだけあれば基本的な道具は一通り揃う。

みんな大好き “Hello, World!”

ここで簡単に動作確認しておこう。 以下の手順でプロジェクトの雛形を作成する。

  1. コマンドパレットから “Java: Create Java Project” を選択する
  2. プロジェクト・タイプの一覧が表示されるので “No build tools” を選択する
  3. 作業ディレクトリを選択する
  4. プロジェクト名を指定する(ここでは hello と入力)

これで

$ tree hello
hello
├── README.md
├── lib
└── src
    └── App.java

2 directories, 2 files

という感じにディレクトリ・ファイルが作成される。 App.java の中身はこんな感じ。

public class App {
    public static void main(String[] args) throws Exception {
        System.out.println("Hello, World!");
    }
}

エディタ上は

という感じに表示されているので main() 関数直上の Run のリンクをクリックすればコンパイル&実行してくれる。 Java Process Console に Hello, World! と表示されれば無問題。

Import 補完

Java の import 宣言ってすぐに汚れるよね。 使わない import とか。 逆に import が足りなくてエラーになったり。

こういうときはコマンドパレットから “Organize Imports” でいい感じに整形してくれる。 保存時に自動で整形するには settings.json

"java.saveActions.organizeImports": true

を追加してやればよい。

Spring Boot Extension Pack

$ code --install-extension Pivotal.vscode-boot-dev-pack

これも以下のパッケージを含んでいるようだ。

雛形プロジェクトを作る

これも動作確認しておこう。

  1. コマンドパレットから “Spring Initializr: Generate a Maven Project” を選択する
  2. Spring Boot のバージョンを選択(2021-08-18 時点の最新は 2.5.3)
  3. 使用言語を選択。もちろん Java で
  4. Group Id を入力。ここはデフォルトの com.example のままにしておく
  5. Artifact Id を入力。ここもデフォルトの demo のままにしておく
  6. パッケージタイプを選択。 JarWar がある。とりあえす Jar にしておこうか
  7. Java のバージョンを選択。無難に LTS 版の 11 を選択しておくか(JDK のインストールは別途行うこと)
  8. 依存パッケージを選択。 Spring Web と Lombok は必須。あとは必要に応じて
    • Spring Web (必須)
    • Lombok (必須)
    • Spring Boot DevTools
    • Thymeleaf

あとは作業ディレクトリを指定すれば完了。 作業ディレクトリ直下に Artifact Id で指定した名前でディレクトリが掘られ,ディレクトリ・ファイルが展開される。

$ tree demo
demo
├── HELP.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               └── DemoApplication.java
    │   └── resources
    │       ├── application.properties
    │       ├── static
    │       └── templates
    └── test
        └── java
            └── com
                └── example
                    └── demo
                        └── DemoApplicationTests.java

DemoApplication.java の中身はこんな感じ。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

このままだと何も表示できないので controller クラスと対応するテンプレートファイルを用意する。

まずは demo/src/main/java/com/example/demo/controller/DemoController.java ファイルを作る。 中身はこんな感じ。

package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class DemoController {

	@GetMapping("/")
	public String demo() {
		return "demo";
	}

}

次に demo/src/main/resources/templates/demo.html ファイルを作る。 中身はこんな感じ。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Demo</title>
</head>
<body>
  <h1>Hello World!</h1>
</body>
</html>

全体の構成はこんな感じ。

$ tree demo
demo
├── HELP.md
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               ├── DemoApplication.java
    │   │               └── controller
    │   │                   └── DemoController.java
    │   └── resources
    │       ├── application.properties
    │       ├── static
    │       └── templates
    │           └── demo.html
    └── test
        └── java
            └── com
                └── example
                    └── demo
                        └── DemoApplicationTests.java

テストとか端折ってるけどご容赦ね。

あとは Spring Boot Dashboard から Start すれば OK。

Web ブラウザから http://localhost:8080/ を叩いて Hello, World! と表示されれば無問題。

Lombok Annotations Support for VS Code

$ code --install-extension GabrielBB.vscode-lombok

@Getter とか @Setter とか @Slf4j とかの Lombok アノテーションを付けると VS Code がコードにエラーマークを付けることがある(ビルドはちゃんと通る)。 かなりウザいのでこの拡張機能を入れてみた。 快適!

Azure App Service

$ code --install-extension ms-azuretools.vscode-azureappservice

VS code 上から Azure Web Apps にお手軽にデプロイ出来ないかなぁ,と思って探したらありました。 やり方は以下のページの後半で紹介している。

めがっさ簡単だった。 GitHub Actions を使う方法とか,何なら Azure Spring Cloud を契約する手もあるのだが,今回はとにかく JAR か WAR を投げれればよかったので。

ブックマーク

参考図書

photo
Spring Boot 2 入門: 基礎から実演まで
原田 けいと (著), 竹田 甘地 (著), Robert Segawa (著)
2020-05-22 (Release 2020-05-22)
Kindle版
B0893LQ5KY (ASIN)
評価     

Spring Boot を勉強することになって急遽買った本。めっさ分かりやすかった。 PDF 版が欲しいくらい(笑) Spring Boot 3.2 対応にアップデートされていた。素敵!

reviewed by Spiegel on 2024-03-20 (powered by PA-APIv5)

photo
Effective Java 第3版
Joshua Bloch (著), 柴田 芳樹 (翻訳)
丸善出版 2018-10-30
単行本(ソフトカバー)
4621303252 (ASIN), 9784621303252 (EAN), 4621303252 (ISBN)
評価     

再勉強中。 Kindle 版のほうがちょっと安いが,勤務先でも使いたかったので紙の本にした。

reviewed by Spiegel on 2021-03-17 (powered by PA-APIv5)