网站首页 > 技术文章 正文
介绍
在上一篇文章聊聊 Java 本地原生应用开发中,我们聊到在云原生的大潮下,Java 也在向着云原生、本地化变革。在这些变革中,除了 Spring Boot 推出了适配 GraalVM 的 Spring Boot 3 以外,Quarkus 框架也是异军突起,收获了不少粉丝。
而另一个 Micronaut 虽短暂落后,但却有着更猛的发展势头。截至 2024.04.30 ,Micronaut 核心框架已发布到版本 4.4.7,且一直保持着高强度的更新优化。
Micronaut 官网的介绍中,Micronaut 框架是一个现代的、基于 JVM 的、全栈 Java 框架,旨在构建模块化、易于测试的 JVM 应用程序,并支持 Java、Kotlin 和 Groovy 语言。
对这些语言的支持,不仅是由于框架所依赖的 JVM —— GraalVM 能力的支持,也是由于 Micronaut 框架的团队成员的经历才支持这些语言:团队成员曾参与 Grails 框架工作。
而 Grails 框架是一个基于 Groovy 语言的 Web 应用开发框架。具有快速开发、约定优于配置、集成 ORM和支持插件等特点。
Micronaut 框架开发时,团队又从多年来使用 Spring、Spring Boot 和 Grails 框架构建经验,以及从单体应用到微服务应用实践中所吸取的经验中获得了灵感。
这些经验,使得 Micronaut 的框架设计得与 Spring 的使用体验非常接近,但整体又比 Spring 更清爽。这也是我个人非常推崇 Micronaut 框架的原因。
另一方面,没钱的项目是不能长久的。
所以,Micronaut 核心团队通过 Micronaut 基金会的支持继续开发和维护 Micronaut 项目。这就为项目的长期发展奠定了稳定的基础。
特性
Micronaut 框架旨在提供构建 JVM 应用程序所需的所有工具,包括:
- 依赖注入和控制反转 (IoC)
- 面向方面编程 (AOP)
- 合理的默认值和自动配置
使用 Micronaut 框架,我们可以构建消息驱动的应用程序、命令行应用程序、HTTP 服务器等。
而对于微服务,Micronaut 框架还进一步提供支持:
- 分布式配置
- 服务发现
- HTTP 路由
- 客户端侧负载均衡
有了这些支持,使用 Micronaut 框架构建云原生应用将更简洁。
改进
如果介绍中所提到的,Micronaut 框架吸引了 Grails 和 Spring 框架的优点,也同时尽力去避免这些框架的缺点,以做到以下特性:
- 快速启动时间
- 减少内存占用
- 最小化反射的使用
- 最小化代理的使用
- 没有运行时字节码生成
- 易于单元测试
这是都是通过在编译时预先计算框架基础设施来实现的,减少了应用程序运行时所需的逻辑。除去框架本身的设计外,通过 GraalVM 的特性,制作 Native Image 本地应用,能更一步提升应用性能。
经验
在我们的商业化实践中,将 Spring Boot 1.x 或 2.x 的项目变更为 Micronaut 项目,收益是远远高于变更为 Spring Boot 3 项目的。
在变更 Spring Boot 3 的过程中,你需要解决大量 Spring 相关框架的升级问题,仅这些框架适配代码的变更,就会让你焦头烂额。这也导致我们的升级失败,最终转投变更为 Micronaut 框架的基本原因。
变更 Micronaut 框架过程中,大体可以分为几步做:
- o 1 使用 Micronaut 提供的 Spring 兼容插件,继承 Spring 的相关注解,分区域将注解、代码等逐步变更为 Micronaut 框架相关的注解、实现
- o 2 依赖框架的替换,比如:选择继续使用自己熟悉的 MyBatis 或者替换为其他 Micronaut 支持的持久层框架;认证框架替换为 Micronaut 的实现等等
- o 3在 Spring 相关注解、实现替换完成后,移除 Spring 兼容插件
而一个新项目如果选择 Micronaut 框架,可以 90% 的继承团队 Spring Boot 经验,几乎没有学习成本。但却能带来很高的性能提升和资源降低。
后续,将更多的分享 Micronaut 框架相关的开发经验以及云计算相关的经验分享。
猜你喜欢
- 2025-03-10 深度剖析 Spring:程序员不可或缺的开发利器
- 2025-03-10 浅谈业务解耦小工具 - Spring Event
- 2025-03-10 Nice,终于有人把SpringMVC讲明白了,太简单了...
- 2025-03-10 如何理解Spring框架的重要特性:AOP
- 2025-03-10 Java开发中常用的框架有哪些?
- 2025-03-10 二十八、Spring 中的代理模式深度解析
- 2025-03-10 SpringBoot框架
- 2025-03-10 三十一、Spring 中的策略模式深度解析
- 2025-03-10 Spring框架功能分为哪些模块?
- 2025-03-10 Spring框架详解
- 03-10深度剖析 Spring:程序员不可或缺的开发利器
- 03-10浅谈业务解耦小工具 - Spring Event
- 03-10Nice,终于有人把SpringMVC讲明白了,太简单了...
- 03-10如何理解Spring框架的重要特性:AOP
- 03-10Java开发中常用的框架有哪些?
- 03-10二十八、Spring 中的代理模式深度解析
- 03-10SpringBoot框架
- 03-10三十一、Spring 中的策略模式深度解析
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)