云原生—Gradle和Maven性能对比及技术选型

这篇具有很好参考价值的文章主要介绍了云原生—Gradle和Maven性能对比及技术选型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

云原生—Gradle和Maven性能对比及技术选型 

目录

一、性能对比

1、Java类库

2、小型多项目构建场景

3、中型多项目构建

4、大型多项目构建

5、大型单体应用

6、性能对比总结

7、Gradle为什么这么快

二、技术选型

1、性能方面

2、可扩展性

Kotiln语言有多灵活

Groovy的优越性


Gradle和Maven都可以作为Java应用程序的构建工具。

在日常工作中,我们通常构建本地项目或远程构建小型项目的时候,由于现在机器配置本身比较高,可能感知不到二者明显的性能差异。

但如果是大中型项目,这种构建效率就能更有体会了。一次构建所花费的时间可能会很长。那在这种情况下,尤其在自动化构建流程中,当然希望构建速度越快越好。特别是企业的一些核心业务系统,比较重视上线时效,可以说效率就是金钱。

我们知道,虽然Gradle和Maven都支持并行构建项目和并行依赖解析。但从Gradle官网给出的5种压测场景的数据来看,Gradle的处理性能确实比Maven快。(实际也确实如此)

官方地址:https://gradle.org/gradle-vs-maven-performance/

一、性能对比

1、Java类库

场景:为了衡量对典型库项目的影响,官方将Apache Commons Lang 3项目从 Maven 转换为 Gradle(使用Java库插件)。

云原生—Gradle和Maven性能对比及技术选型

 结论:Gradle在运行测试上快了1.7倍,而在开启cache的时候快了30倍!

2、小型多项目构建场景

场景:以下是 10 个模块的多项目构建的常见任务的结果,类似于微服务的集合。每个子项目有 50 个源文件和 50 个测试源文件。

云原生—Gradle和Maven性能对比及技术选型

 结论:Gradle在纯净构建上快2-3倍,而在增量构建上快了7倍,在Gradle任务输出被缓存的情况下可以提升至14倍。

我们来直观感受下二者的构建速度!

云原生—Gradle和Maven性能对比及技术选型

3、中型多项目构建

场景:以下是在单个存储库中构建 100 个模块的多项目构建的常见任务的结果。每个子项目有 100 个源文件和 100 个测试文件。

云原生—Gradle和Maven性能对比及技术选型

 结论:Gradle 的干净构建速度快 4-5 倍,增量更改速度快 40 倍,缓存 Gradle 任务输出时速度快 13 倍。

4、大型多项目构建

场景:以下是位于单个存储库中的 500 个模块的多项目构建的常见任务的结果。每个子项目有 100 个源文件和 100 个测试文件。

云原生—Gradle和Maven性能对比及技术选型结论:Gradle 的干净构建速度快 3-10 倍,增量更改速度快 85 倍,缓存 Gradle 任务输出时速度快 13 倍。

5、大型单体应用

场景:虽然在一个项目中包含所有代码的情况很少见,但多模块构建的情况很常见,其中大部分代码位于一个或几个比其他模块大得多的模块中。此场景是此类项目的近似值——具有 50000 个源文件和 50000 个测试文件的单个项目。

云原生—Gradle和Maven性能对比及技术选型

 结论:Gradle 的干净构建速度快 2-3 倍,增量更改速度快 7 倍,缓存 Gradle 任务输出时速度快 3 倍。

6、性能对比总结

1)在所有场景下,Gradle至少比Maven快2倍。

2)当增量构建时,Gradle比Maven快7-85倍,子项目越多,Gradle快的越多。

3)当Gradle的构建缓存可以解析任务输出的时候,Gradle比Maven快3-30倍。

7、Gradle为什么这么快

1)Gradle实现了大量策略来保证构建速度更快。

包含:增量构建机制、构建缓存机制、守护进程机制。

2)Gradle守护线程可以保证构建信息足够新。

Gradle会开启一个守护进程来和各个build任务进行交互,优点就是不需要每次构建都初始化需要的组件和服务。同时因为守护进程是一个一直运行的进程,除了可以避免每次JVM启动的开销之外,还可以缓存项目结构,文件,task和其他的信息,从而提升运行速度。

3)针对各种类型任务的增量任务输入和输出确保不需要每次运行清理命令。

4)增量编译可以分析源文件和类文件之间的依赖关系,并只重新编译改变的部分;

5)当二进制接口没有改变的时候,Gradle的智能类路径分析器避免了不必要的编译;

6)利用Java类插件来提供更好的建模,减少了编译时类路径的体积,提高了性能。

7)Gradle为了提升构建速度,引入了增量构建机制。gradle把每一个任务分为三部分:输入、任务本身和输出,便于事变变更内容。另外也支持跨机器共享构建缓存,这对于云原生CI中自动构建过程来说体验是想当好了。

二、技术选型

1、性能方面

从上面性能分析来看,Gradle的性能确实完全超越了Maven,各种平台也早已支持Gradle。可以说,除非是兼容老项目,否则完全可以用Gradle来替代Maven。

2、可扩展性

目前移动端操作系统两大阵营:Android和IOS。那其中Android上层就是基于Java开发的,其中选择了Gradle作为Android的构建工具。而Android系统出自大名鼎鼎的Google之手。

那作为互联网行业的巨头,在技术方面一直处于引流世界潮流的状态。那在这种承载一切应用的操作系统技术选型上一定是慎之又慎。

那为什么最终选择了Gradle作为Android的构建工具呢?

其中,除了上面所提到的性能优越外,还有最重要的一个原因就是Gradle具有非常强的灵活性。究其根因,主要是Gradle基础架构能满足这种灵活性。

我们知道,Gradle是一个基于Ant和Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。

Kotiln语言有多灵活

Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBrains 开发。

Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。除此之外Kotlin还可以编译成二进制代码直接运行在机器上。例如嵌入式设备或 iOS。

Groovy的优越性

而Groovy,也是一种基于JVM的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有代码。由于其运行在 JVM 上的特性,Groovy也可以使用其他非Java语言编写的库。

Gradle目前以面向Java应用为主,当前其支持的语言C++、Groovy、Kotlin、Scala和Swift,计划未来将支持更多的语言。

整体来看,Gradle相比Maven更加灵活。

但Maven的项目相对容易看懂,而且上手会简单一些。虽然,Maven在灵活性和自定义上不是很人性化外,也有它自身的特点,存在即合理。Maven项目相对Gradle而言可读性比较好,另外入门比较容易且支持的插件也比较多。所以,如果项目当中没有自定义需求,则可以选用Maven作为构建工具。

关注下方公众号, 免费领取面试资料!  

Java/JVM/Python/Spring系列/MyBatis/Dubbo/MySQL等技术栈面试题文章来源地址https://www.toymoban.com/news/detail-447073.html

到了这里,关于云原生—Gradle和Maven性能对比及技术选型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL

     导航: 【Java笔记+踩坑汇总】Java基础+进阶+JavaWeb+SSM+SpringBoot+瑞吉外卖+SpringCloud+黑马旅游+谷粒商城+学成在线+MySQL高级篇+设计模式+面试题汇总+源码_vincewm的博客-CSDN博客 目录 一、基本区别 1.1 基本特性 1.2 Oracle和MySQL如何做技术选型? 1.3 RDBMS和ORDBMS的区别 1.4 默认端口号和用

    2024年02月12日
    浏览(44)
  • 【云原生技术】- 安全容器隔离技术:安全隔离、性能隔离、故障隔离

    安全容器的实现旨在确保容器在运行时的安全性和隔离性,同时也考虑到性能和故障恢复的需求。这些策略共同协作,形成了一个全面的、多层次的安全架构,以保护 Kubernetes 集群和其上运行的应用程序。 在容器化和微服务架构中,“安全隔离”、“性能隔离” 和 “故障隔

    2024年02月04日
    浏览(39)
  • CloudNative:云原生(分布式云)的简介(发展&演变/为什么需要/优势&价值/安全/对比传统企业应用)、四大核心技术、CNCF云原生交互景观、云原生技术的使用经验及方法之详细攻略

    CloudNative:云原生(分布式云)的简介(发展演变/为什么需要/优势价值/安全/对比传统企业应用)、四大核心技术、CNCF云原生交互景观、云原生技术的使用经验及方法之详细攻略 导读 :从“ 软件正在吞噬世界 ”到“ 开源正在吞噬软件 ”,到如今“ 云原生吞噬开源 ”,开源项目

    2023年04月16日
    浏览(213)
  • 基于 SmartX 分布式存储的 RDMA 与 TCP/IP 技术与性能对比

    作者:深耕行业的 SmartX 金融团队 上一篇 “ 分布式块存储 ZBS 的自主研发之旅|架构篇 ” 文章中,我们简单介绍了 SmartX 分布式块存储 ZBS 的架构原理。接下来,我们将为读者深入解析 ZBS 存储中最为重要的技术之一“RDMA”。 目前 ZBS 在两个层面会使用到 RDMA 技术,分别是存

    2023年04月08日
    浏览(90)
  • 图数据库选型对比

            属性图数据库,简称图数据库。图数据库完全和知识图谱契合,从底层的存储模型到支持的查询语言,甚至相关的概念都完全匹配。它们就是天造地设的一对,图数据库是知识图谱存储的首选。         常见的图数据库包括:JanusGraph、Neo4j、Dgraph、NebulaGraph、Hu

    2024年02月09日
    浏览(39)
  • Clickhouse & Elasticsearch 选型对比

    Clickhouse是俄罗斯搜索巨头Yandex开发的完全列式存储计算的分析型数据库。ClickHouse在这两年的OLAP领域中一直非常热门,国内互联网大厂都有大规模使用。Elasticsearch是一个近实时的分布式搜索分析引擎,它的底层存储完全构建在Lucene之上。简单来说是通过扩展Lucene的单机搜索能

    2024年04月15日
    浏览(31)
  • 大数据OLAP查询引擎选型对比

            目前大数据比较常用的OLAP查询引擎包括:Presto、Impala、Druid、Kylin、Doris、Clickhouse、GreenPlum等。         不同引擎特点不尽相同,针对不同场景,可能每个引擎的表现也各有优缺点。下面就以上列举的几个查询引擎做简单介绍。         Presto是 Facebook 推出的一个

    2024年02月08日
    浏览(44)
  • ceph、gluster、longhorn选型对比

    Ceph是一个分布式的存储系统,可以在统一的系统中提供唯一的对象、块和文件存储。 名词解释: RADOS: 由自我修复、自我管理、智能存储节点组成的可靠、自主、分布式对象存储 LIBRADOS: 一个允许应用程序直接访问 RADO 的库,支持 C、C++、Java、Python、Ruby 和 PHP RADOSGW: 基于

    2024年02月02日
    浏览(29)
  • 开源数据资产(元数据)管理平台选型对比

    尽管数据行业的新词热度,由大数据平台-数据治理-数据中台-数字化转型(现代数据技术栈)转换,做为这些新词的基础组成部分,数据资产管理平台/元数据管理平台/数据目录管理平台等技术方案,依旧处于Gartner曲线的爬升恢复期,相关平台百花齐放,一统江湖的开源平台

    2024年01月24日
    浏览(45)
  • 游戏开发服务器选型的横向对比

    目录 来源一个某乎的作者,各服务器对比貌似来自台湾 个人锐评论一下,总结服务器入门 最后分享一个Pomelo入门-详细 这个服务器选型也说得不错 评价来源X3 pomelo实战1 pomelo实战案例2 上篇介绍了go版本的游戏服务器,这篇介绍下其它语言版本: Skynet kbengine NoahGameFrame Pomel

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包