Spring Boot で Hello, world! するのを Java と Kotlin と Groovy で比較してみたのでメモっとく。
なお本稿は macOS 環境を前提にしている。
Spring Boot CLI をインストールする
Homebrew で Spring Boot CLI をインストールする。
$ brew tap pivotal/tap
$ brew install springboot
ターミナルで下記のコマンドを実行してみるとバージョンが表示される。なお、Rails 環境がローカルにあると Rails が使用している spring が実行されてしまう可能性があるので PATH 環境変数を調整しよう。
$ spring --version
Spring CLI v1.5.4.RELEASE
Hello プロジェクトを作成する
下記のコマンドで Hello プロジェクトを作成する。ビルドツールとして Gradle を使用し、依存に Web を追加し、言語として Java を使用し、Hello という名前のプロジェクトとして hello ディレクトリに展開する。
$ spring init --build=gradle -d=web -l=java -n=hello hello
-l=java
を -l=kotlin
や -l=groovy
にすることで Kotlin や Groovy でコードが生成される。
プロジェクトのコードは適当なテキストエディターで編集して構わないが、IntelliJ IDEA Ultimate や IntelliJ IDEA Community で編集したい人は下記のコマンドでプロジェクトディレクトリを開くといい。
$ idea hello
Hello, world! を実装する
Java と Kotlin と Groovy で Hello, world! を実装してみる。
package com.example.hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class HelloApplication {
public static void main(String[] args) {
SpringApplication.run(HelloApplication.class, args);
}
@RequestMapping("/")
String hello() {
return "Hello, world!";
}
}
package com.example.hello
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@SpringBootApplication
@RestController
class HelloApplication {
@RequestMapping("/")
fun hello() = "Hello, world!"
}
fun main(args: Array<String>) {
SpringApplication.run(HelloApplication::class.java, *args)
}
package com.example.hello
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@SpringBootApplication
@RestController
class HelloApplication {
static main(args) {
SpringApplication.run HelloApplication, args
}
@RequestMapping("/")
def hello() {
"Hello, world!"
}
}
このくらいのコードだとあまり差がないなぁ。
Hello プロジェクトを実行する
Hello プロジェクトのディレクトリに移動して Gradle で bootRun タスクを実行すると Web サーバーが起動する。
$ ./gradlew bootRun
GET リクエストを送信する
起動した Hello プロジェクトに GET リクエストを送信すると Hello, world! が返ってくる。
$ curl localhost:8080
Hello, world!
今回は Spring Boot と Java/Kotlin/Groovy で Hello, world! してみた。発端はマイクロフレームワークとして Spring Boot いいんじゃないかと思って試してみたんだけど、import 文があるからかマイクロって感じに欠ける結果に……。Spring Boot はマイクロなところから始めてフルスタックに進化していけるいい環境だと思うんで、色々知らなくても Spring で遊べるような情報が増えるといいなぁ。
参考文献