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

2020 年 8 月 19 日

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


2020 年 8 月 19 日 16:431735

评论

发布
暂无评论
发现更多内容

威联通(NAS)应用篇:搭建个人图床

Young先生

图床 NAS QNAP 威联通 自建

Django单元测试用法及Fixtures用法

Young先生

Python django 单元测试 Fixtures

微服务、中台和 DDD

dongge

服务化问题与方案简述

superman

微服务 微服务架构 服务化改造

SpringCloud服务注册与发现(Eureka)

xcbeyond

Java SpringCloud Eureka 服务注册与发现

职业发展的迷茫与困境:你真的了解晋升机制吗?

伴鱼技术团队

职业规划 技术管理 技术交流 职业成长 技术人生

基于小程序云Serverless开发微信小程序

应用研发平台EMAS

架构师训练营第十周学习总结

Bruce Xiong

架构师第十周

Tulane

憋再PS抠图了,3行代码给你安排的明明白白!

王坤祥

生产力 图像识别

国内外低/零代码的有哪些代表?

代码制造者

编程语言 低代码 零代码 信息化 开发应用

手动实现mini-vue

晓枫

Java vue.js

架构师训练营——第 10 周作业

jiangnanage

Dubbo的服务注册与调用

superman

【FCC前端教程】44关学习CSS与CSS3基础「一」

三钻

CSS css3 程序员成长 前端训练

架构师训练营——第10周学习总结

jiangnanage

VSCode配置同步|VSCode高级玩家宝典之第三篇

三钻

效率工具 程序员人生 vscode 开发工具

Lambda架构已死,去ETL化的IOTA才是未来

易观大数据

微服务架构关键点思考

dony.zhang

架构师课作业 - 第十周

Tulane

下载的附件名总乱码?你该去读一下 RFC 文档了!

Java课代表

Spring Boot

架构训练营第十周作业

张锐

VSCode插件大全|VSCode高级玩家之第二篇

三钻

程序员人生 vscode 编辑器 插件 技巧

【FCC前端教程】28关学会HTML与HTML5基础

三钻

CSS html 前端 前端训练

解读CDN的应用场景与产品价值

巨侠说

CDN

【数据结构与算法】如何高效学习数据结构与算法

三钻

学习 数据结构与算法

浅析Python3列表操作之*和*=

王坤祥

Python Python基础

Python中list操作之append、extend

王坤祥

Python Python基础

致力打造下一代云原生分布式消息系统,StreamNative 完成源码资本数百万美元 Pre-A 轮融资,红杉中国种子基金跟投

Apache Pulsar

kafka Apache Pulsar StreamNative

iOS Abort问题系统性解决方案

应用研发平台EMAS

ios 监控 移动

让我们慢慢地成长

姜海天

个人成长

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