Micronaut 2.0发布,增强了工具、改进了对无服务器和GraalVM的支持

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

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/pTfZ9r2u8mv9Z008ZHQK
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券