目前市场上主流的框架基本都是 Spring
全家桶系列, Srping
的生态完善也是众多开发者非常青睐这个框架的原因之一。但是我们今天主要从内存管理和性能方面看一下 Quarkus
和 Spring Boot
的区别。
什么是 Quarkus ?
官网是这样定义的,Quarkus
是针对 Java 虚拟机 (JVM) 和本机编译的全栈 Kubernetes
本地 Java 框架,专门针对容器优化 Java ,使其成为无服务器,云和 Kubernetes 环境的有效平台。
构建程序
为了直观的比较两个框架的区别,这两个程序都将只引入 Spring Web 依赖。
构建 Quarkus 应用
我们可以在 Quarkus 官网构建我们的 Quarkus 应用,注意我们只选择了 Spring Web API
依赖。
var askSky = () => {
return 🌕.exists() ? new 🍺 : null;
}
下载代码用 IDE 打开之后,我们会发现有一个默认的 SpringGreetingController
类:1
2
3
4
5
6
7
8
9
"/hello-spring") (
public class SpringGreetingController {
public String hello() {
return "Hello Spring";
}
}
构建 Spring Boot 程序
Spring Boot 的构建方法就不用多说了,我们也只选了 Spring Web
依赖。
我们修改一下 Spring
构建后的代码,添加 SpringGreetingController
至 Spring Boot 项目中。
性能比较
完成了上述工作,不知道你是否发现 Quarkus
并没有像 Spring Boot
一样的 Main
启动函数,也没有部署到Web容器。通过翻阅 Quarkus
官网的介绍,可以看到我们只需要这样一行命令来启动 Quarkus
程序: mvnw compile quarkus:dev
。我们再使用 mvnw compile spring-boot:run
将 spring boot
项目运行起来。
我们使用 jdk 本身提供的 java 监测的 GUI 工具— jconsole
来检测两个进程的性能情况。
Quarkus
概览
类
Spring Boot
概览
类
两个应用程序的直接比较都表明 Quarkus
在启动应用程序时使用了更少的内存。 Spring Boot
使用的内存约为 145 Mb,而Quarkus的内存使用约为 122 Mb。而在类加载上 Quarkus
大约加载了 5303 个类,而 Spring Boot
大约加载了 4785 个类。
总结
测试结果和我在视频上看到的有一定出入,视频的测试结果是 Quarkus
性能远优于 Spring Boot
的。我的测试也只是给大家一个参考,动手能力强的可以自己去实践一下。
...
...
Copyright by @maybelence.