Object Computing公司(OCI)正式发布了 Microaut 2.0,一个基于全栈JVM的框架,用于创建基于微服务、云原生和无服务器的应用程序,这些应用程序可以用Java、Groovy或Kotlin等语言开发。
新版本极大地提升了开发人员体验,提供了 Microaut Launch(一个全新的、更快的Micronaut CLI)和一个新的Maven插件,并升级到了Gradle版本。它现在支持Java 14、用Groovy 3编写的应用程序和反应式框架,包括RxJava 3和Reactor。通过添加对Azure Function和谷歌Cloud Function的支持,扩展了无服务器功能。它还提供了对HTTP/2和Servlet的支持,并改进了安全设计。最后,新版本通过与 GraalVM的深入集成提升了性能,优化了内存消耗,并将启动时间平均减少了20%。
Jeff Scott Brown(Microaut基金会的联合创始人和主任、Object Computing公司的Grails和Microaut实践主管)表示:
Microaut 2.0是Microaut框架的另一个重大飞跃。我们通过引入运行时选项(包括Servlet支持和更好的GraalVM原生镜像支持)扩展了Microaut的领地。我们在无服务器上的持续投资是由用户需求驱动的,这是Microaut的另一个与众不同的地方。
Microaut 2.0 包含一个全新的启动服务 Micronaut Launch,可用于搭建基于 Microaut 的应用程序脚手架。Microaut Launch 是基于浏览器和 REST API 的工具,可用于快速搭建和生成基于 Micronaut 的应用程序。它还为生成的应用程序提供预览。传统的 Micronaut CLI 经历了一次彻底的重新设计,重点获得使用 GraalVM 原生镜像的性能和效率。Microaut Launch 是对 Microaut CLI 的包装,确保了互操作性。
对 Maven 的支持已经升级,与已有的 Gradle 特性集不相上下。新版本提供了一个新的 Maven 插件 (mn:run),可通过 Maven 运行具有自动重新编译和重新启动功能的 Micronaut 应用程序。除此之外,Maven 项目还继承了一个新的父 POM,对依赖项管理进行了更清晰的配置。
Gradle 版本已经升级到了 6.5,为 Microaut 2.0 项目带来了增量编译支持。这基本上意味着,Microaut 不必在每次构建时都运行完整的注解处理程序。
新版本添加了对 Google Cloud Function 和 Azure Function 的支持,同时改进了针对 AWS Lambda 的特性集。Microaut 提供了两种方法来帮助构建无服务器应用程序。第一种方法是先定义传统的 Micronaut 应用程序,并为其添加相应的无服务器 Function 特性 (例如,Cloud Function、Azure Function 或 AWS Lambda)。根据所选择的无服务器平台,Micronaut 将提供必要的管道基础设施,以便将 Function 请求路由到应用程序。
第二种方法定义了“无服务器 Function”应用类型,然后由开发人员直接编写特定于所选无服务器 Function 特性的底层 Function 代码 (例如,订阅 Pub-Sub 消息的后台 Google Cloud Function)。
下面是使用 Micronaut 为 Google Cloud Function 无服务器平台编写一个底层无服务器 Function 的示例。
public class Function extends GoogleFunctionInitializer
implements BackgroundFunction<PubSubMessage> {
@Inject LoggingService loggingService;
@Override
public void accept(PubSubMessage message, Context context) {
loggingService.logMessage(message);
}
}
class PubSubMessage {
String data;
Map<String, String> attributes;
String messageId;
String publishTime;
}
新版本的其他特性还包括利用无服务器平台提供的 SDK 在本地测试 Function 的能力(Microaut 将这些 SDK 作为依赖项包括在内)以及对 AWS SDK 2 的 GraalVM 原生镜像支持。
除了 Netty 之外,Micronaut 2.0 还增加了对嵌入式 Servlet 运行时 (Jetty/Tomcat/Undertow) 的支持。开发人员可以在他们的 Micronuat 应用程序中使用传统的基于 Servlet 的特性,开发基于 Servlet 的 Micronaut 应用程序的体验与使用 Netty 运行可自动重编译的测试代码是一样的。这些体验还包括为基于 Servlet 的大型 jar 包创建基于 GraalVM 的原生镜像。
下面是使用 CLI 创建并运行基于 Servlet 的 Micronaut 应用程序的示例。这里使用了 jetty-server 特性。
mn> create-app demo-servlet --features jetty-server
$ cd demo-servlet
$ ./gradlew run
org.eclipse.jetty.server.Server - Started @1219ms
io.micronaut.runtime.Micronaut - Startup completed in 615ms. Server Running: http://localhost:8080/
Microaut 2.0 增加了对 HTTP/2 的支持,只需要对应用程序的 application.yml 文件稍作修改就可以启用这个特性。这种支持目前仅对基于 Netty 的 HTTP 服务器和客户端有效。
服务器端的配置如下所示。
micronaut:
ssl:
build-self-signed: true
application:
name: http2Demo
server:
http-version: http_2_0
对 GraalVM 原生镜像的支持已经脱离了实验状态,并获得了扩展支持,进一步巩固了对 GraalVM 的承诺,包括静态资源、JDBC 驱动程序、Hibernate、Flyway、AWS SDK 2 等方面内容的自动配置。
原文链接 :
Micronaut 2.0 Enhances Tooling, Improves Support for Serverless and GraalVM
领取专属 10元无门槛券
私享最新 技术干货