JVMベースのフルスタックフレームワークであるMicronautで遊びたかったのでインストールから実行までの流れを簡単にまとめました。
環境
- macOS Catalina 10.15
環境構築
sdkmanのインストール
sdkmanはパッケージマネージャー
sdkman経由でjdkとか他ツールを入れればバージョン管理が簡単になる
ちなみに筆者はこういうツールが大の苦手
自分でコツコツと入れたい派(そんな派閥はない?
下記コマンドを実行
$ curl -s https://get.sdkman.io | bash
All done!
Please open a new terminal, or run the following in the existing one:
source "/Users/tshk_dev/.sdkman/bin/sdkman-init.sh"
Then issue the following command:
sdk help
Enjoy!!!
で、次に下記のコマンドを打って、バージョンが出ればSDKMANインストール完了
$ source "$HOME/.sdkman/bin/sdkman-init.sh"
$ sdk version
SDKMAN 5.7.3+337
Javaインストール(既にインストール済の人は不要)
どのJavaがインストールできるか確認する
$sdk list java
================================================================================
Available Java Versions
================================================================================
Vendor | Use | Version | Dist | Status | Identifier
--------------------------------------------------------------------------------
AdoptOpenJDK | | 13.0.0.j9 | adpt | | 13.0.0.j9-adpt
| | 13.0.0.hs | adpt | | 13.0.0.hs-adpt
| | 12.0.2.j9 | adpt | | 12.0.2.j9-adpt
| | 12.0.2.hs | adpt | | 12.0.2.hs-adpt
| | 11.0.4.j9 | adpt | | 11.0.4.j9-adpt
| | 11.0.4.hs | adpt | | 11.0.4.hs-adpt
| | 8.0.222.j9 | adpt | | 8.0.222.j9-adpt
| | 8.0.222.hs | adpt | | 8.0.222.hs-adpt
Amazon | | 11.0.5 | amzn | | 11.0.5-amzn
| | 8.0.232 | amzn | | 8.0.232-amzn
| | 8.0.202 | amzn | | 8.0.202-amzn
Azul Zulu | | 13.0.1 | zulu | | 13.0.1-zulu
| | 12.0.2 | zulu | | 12.0.2-zulu
| | 11.0.5 | zulu | | 11.0.5-zulu
| | 10.0.2 | zulu | | 10.0.2-zulu
| | 9.0.7 | zulu | | 9.0.7-zulu
| | 8.0.232 | zulu | | 8.0.232-zulu
| | 8.0.202 | zulu | | 8.0.202-zulu
| | 7.0.181 | zulu | | 7.0.181-zulu
Azul ZuluFX | | 11.0.2 | zulufx | | 11.0.2-zulufx
| | 8.0.202 | zulufx | | 8.0.202-zulufx
BellSoft | | 13.0.0 | librca | | 13.0.0-librca
| | 12.0.2 | librca | | 12.0.2-librca
| | 11.0.4 | librca | | 11.0.4-librca
| | 8.0.222 | librca | | 8.0.222-librca
GraalVM | | 19.2.1 | grl | | 19.2.1-grl
| | 19.1.1 | grl | | 19.1.1-grl
| | 19.0.2 | grl | | 19.0.2-grl
| | 1.0.0 | grl | | 1.0.0-rc-16-grl
Java.net | | 14.ea.18 | open | | 14.ea.18-open
| | 13.0.1 | open | | 13.0.1-open
| | 12.0.2 | open | | 12.0.2-open
| | 11.0.2 | open | | 11.0.2-open
| | 10.0.2 | open | | 10.0.2-open
| | 9.0.4 | open | | 9.0.4-open
SAP | | 12.0.2 | sapmchn | | 12.0.2-sapmchn
| | 11.0.4 | sapmchn | | 11.0.4-sapmchn
================================================================================
Use the Identifier for installation:
$ sdk install java 11.0.3.hs-adpt
================================================================================
AdoptOpenJDK 11.0.4.hs
君に決めた!(特に理由はない)
さっそく下記コマンドをポチ
$ sdk install java 11.0.4.hs-adpt
Installing: java 11.0.4.hs-adpt
Done installing!
Setting java 11.0.4.hs-adpt as default.
インストールが完了して、下記コマンドで確認
$ java --version
openjdk 11.0.4 2019-07-16
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.4+11, mixed mode)
Micronautインストール
本命のMicrinautのインストール
下記コマンドをポチ
$ sdk install micronaut
Installing: micronaut 1.2.5
Done installing!
Setting micronaut 1.2.5 as default.
Micornautのコマンドでバージョン確認
$ mn --version
Resolving dependencies..
| Micronaut Version: 1.2.5
| JVM Version: 11.0.4
環境構築は以上
アプリケーション
動作確認のための簡単なアプリを作成
プロジェクト作成
サンプルプロジェクトはMicornautコマンドで作れる
※プロジェクトフォルダを作成したいディレクトリに移動してからポチってね
$ mn create-app sample-app
このままでも実行できるけど、公式サイトに沿ってブラウザで「Hello World」が表示されるまでやってみる
コントローラ作成
下記のJavaクラスを用意する
src/main/java/sample/app/HelloController.java
package sample.app;
import io.micronaut.http.MediaType;
import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.http.annotation.Produces;
@Controller("/hello")
public class HelloController {
@Get("/")
@Produces(MediaType.TEXT_PLAIN)
public String index() {
return "Hello World";
}
}
ビルド
$ ./gradlew build
実行
$ ./gradlew run
> Task :run
15:29:48.877 [main] INFO io.micronaut.runtime.Micronaut - Startup completed in 632ms. Server Running: http://localhost:8080
ブラウザから
http://localhost:8080/hello
にアクセス
これで完了
テスト (ついで)
テストクラス作成
src/test/java/sample/app/HelloControllerTest.java
package sample.app;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import io.micronaut.http.HttpRequest;
import io.micronaut.http.client.RxHttpClient;
import io.micronaut.http.client.annotation.Client;
import io.micronaut.test.annotation.MicronautTest;
import org.junit.jupiter.api.Test;
import javax.inject.Inject;
@MicronautTest
public class HelloControllerTest {
@Inject
@Client("/")
RxHttpClient client;
@Test
public void testHello() {
HttpRequest<String> request = HttpRequest.GET("/hello");
String body = client.toBlocking().retrieve(request);
assertNotNull(body);
assertEquals("Hello World", body);
}
}
テスト実行
$ ./gradlew test
テスト結果
テストレポートが生成されているのでブラウザで確認
build/reports/tests/test/index.html
最後
後半は説明書くこともないくらいだったので手抜きですが参考までに
(ほぼ公式サイトに沿ってますが)