[GraalVM] Micronaut 2.0について [Serverless]
Introduction
以前、Micronauto 1.xの記事を投稿したのですが、
先日Micronauto 2.0にバージョンアップしました。
くわしくはこのあたりにありますが、
ネイティブイメージのサポート強化やserverlessサポート改善など、けっこう大きい変更が多くはいってます。
What's New
ここに新しい機能が記述してありますが、
気になった機能をいくつか紹介します。
MICRONAUT LAUNCH
MICRONAUT LAUNCHはSpring Initializrみたいに、Applicationタイプや言語を指定してプロジェクトの雛形を生成できるツールです。
↑はブラウザで実行していますが、CLIで実行することもできます。
PERFORMANCE IMPROVEMENTS
起動時間、メモリ消費量、その他のパフォーマンスについての改善。
Micronaut 2.0では、平均起動時間は20%程度改善されているとのこと。
IMPROVED SERVERLESS SUPPORT
1.xからAWS Lambdaについてはサポートしていましたが、
2.0ではそれに加えてGoogle Cloud Function、Azure Functionのサポートも追加。
さらに、AWS SDK 2 のための GraalVMネイティブイメージのサポートも追加されてます。
参考: https://micronaut-projects.github.io/micronaut-aws/2.0.x/guide/index.html#sdkv2
SERVLET SUPPORT
以前はNettyだけでしたが、2.xでは、Jetty/Tomcatなどの組み込みサーバがサポートされました。
GraalVMをサポートしているので、Jetty/Tomcat用のネイティブイメージを生成することもできます。
参考 : https://github.com/micronaut-projects/micronaut-servlet
GRAALVM IMPROVEMENTS
GraalVMのサポートが強化。
静的リソース、JDBCドライバ、Hibernate、Flyway、AWS SDK 2などの
automatic configurationサポートを追加しています。
try Micronaut2
では少しだけMicronaut 2.0をためしてみましょう。
以前やったのと同じように、sdkmanを使ってMicronautをインストールします。
% sdk install micronaut Downloading: micronaut 2.0.1 In progress... Installing: micronaut 2.0.1 Done installing!
mnコマンドを使ってアプリの雛形を作成します。
featuresオプションを使うことで、servletコンテナを指定します。
ここではtomcatで動くように指定しました。
% mn create-app myTomcatApp --features tomcat-server | Application created at /path/your/micronaut/myTomcatApp
作成したmyTomcatAppディレクトリに移動してmnコマンドを実行することで、インタラクティブモードに入ります。
試しに適当なControllerでもつくってみましょう。
% cd myTomcatApp % mn mn> create-controller helloController | Rendered controller to src/main/java/myTomcatApp/HelloControllerController.java | Rendered test to src/test/java/myTomcatApp/HelloControllerControllerTest.java
Controller以外にもtestやservice作成など、いろいろできるので確認してみてください。
gradle runコマンドで実行します。
% ./gradlew run > Task :compileJava > Task :run 8月 30, 2020 5:03:48 午後 org.apache.coyote.AbstractProtocol init 情報: Initializing ProtocolHandler ["http-nio-8080"] 8月 30, 2020 5:03:48 午後 org.apache.catalina.core.StandardService startInternal 情報: Starting service [Tomcat] 8月 30, 2020 5:03:48 午後 org.apache.catalina.core.StandardEngine startInternal 情報: Starting Servlet engine: [Apache Tomcat/9.0.37] 8月 30, 2020 5:03:48 午後 org.apache.coyote.AbstractProtocol start 情報: Starting ProtocolHandler ["http-nio-8080"] 17:03:48.414 [main] INFO io.micronaut.runtime.Micronaut - Startup completed in 2585ms. Server Running: http://localhost:8080 io.micronaut.context.DefaultApplicationContext$RuntimeConfiguredEnvironment@19553973 <=========----> 75% EXECUTING [5m 7s] > :run
コンソールをみると、Tomcatでうごいていることがわかります。
Summary
GraalVMサポート強化、Serverlessサポート強化など、いろいろ使いやすくなってますね。
いろいろおもしろそうな機能もあるので、今後試してみたいと思います。