【Gradle系列】初识Gradle

781 阅读6分钟

为什么要学习Gradle?

gradle是主要用来工程构建,自动化建设用的

有朋友问,已经学会了ant,maven等来构建工程了,为什么我们还要学习gradle?

因为gradle是一款最新的,功能最强大的构建工具

ant,maven能做的事情,gradle一定可以做,但是gradle能做的,其它不一定能做

同时,gradle不仅仅是一个工具那么简单,是用程序替代传统的xml配置,使项目构建更加灵活

举个例子:xml语言写个if-else使非常困难,但是gradle却非常的简单

还有就是,我们的gradle有丰富的第三方插件,可以随心所欲使用

作为一名开发者,可以完善安卓开发工程师/java开发工程师的技术体系,提升自动化构建技术深度,帮助进阶为高级/资深工程师

因为现在安卓工程/java工程都在使用gradle来构建项目

很多人认为,构建不就是构建出一个apk文件,一个jar包这么简单?

gradle技术有那么深奥?

在公司最终负责构建的人,一般都是级别比较高的同学,甚至是一些经理,总监等

因为我们写再多的代码,最终都是为了最后的构建文件

所以这个环节是非常重要的,如果要成为高级/资深工程师,gradle是必须掌握的一项技能

为什么?

因为在现在的一线互联网企业,面试的时候绝大部分会考到自动化构建

如果掌握了如何使用gradle实现自动化构建,那么就比别的竞争者有更大的优势

什么是Groovy语言?

Gradle是使用Groovy语言实现的

Groovy语言就是DSL的一个分支

在了解Groovy前,我们要先搞清楚DSL它自己的一些概念

DSL,领域特定语言

其实我们很早就接触了DSL语言了,只是没有这个概念而已

比如:matlab,这个专门用来做计算的语言,其就是DSL语言的一种

还有uml建模语言,把现实的模型转换为计算机模型,也是DSL模型的一种

还有HTML,这个语言也算DSL语言的一个分支,专门用来做浏览器页面的

所以DSL本质上来讲,并不是一个陌生的概念

这个语言和我们的系统语言,走的是两个极端

系统编程语言宗旨是解决所有的问题,比如:java既希望能做安卓开发,又希望能做服务器开发

而DSL语言产生的初衷是,解决计算机相关某一个特定领域内的问题

系统编程语言是大而全,DSL语言是小而细

所以DSL是和我们的系统开发语言是相铺相成的,相互结合会产生巨大的作用

在掌握某一个开发语言基础下,再去掌握一门DSL语言,那么就是锦上添花的效果

那么,DSL和我们的普通通用编程语言,有哪些区别?

DSL纵向,往深度发展的;

系统编程语言,横向往更广的应用范围去发展;

这个是它们最大的区别

Groovy语言特点

接下来,我们来看下groovy的基本概念

首先,groovy是一种基于jvm的敏捷开发语言

基于jvm说明它和我们的java背后运行的原理,完全是一样的

我们都知道,java想要运行,首先需要将我们的java文件编译为class文件

然后class文件交给我们的jvm去运行

groovy和java语言是一样的,groovy源文件编译为class字节码文件,然后交给我们的jvm运行

当然,这个还不足与体现我们groovy的强大

groovy还能将我们的groovy源文件直接解释执行,像JavaScript一样

接下来看下第二个特点

groovy结合了python,ruby和smalltalk 的许多脚本语言的强大特性

我们都知道,脚本语言写脚本都是非常强大的,所以groovy写脚本也可以6到飞起

既然有了很多强大的脚本语言,为什么还需要groovy?

如果我们作为一门java开发者,然后现在去学习python语言等,相当于从头开始学习新的语言

而我们的groovy可以不这样,因为groovy就是对我们java的一种扩展

其语法和我们的java非常的类似,所以可以学习java的方式学习groovy

所以,在java基础上学习groovy,比学习其它语言要快点

第三,就是我们的groovy可以与java版本完美结合,这一点从都是基于jvm可以看出来

同时,groovy可以使用java所有的库,是不是很酷?

Groovy的特性

支持动态类型

首先它最大的一个特性是语法上支持动态类型,闭包等新一代脚本语言特性

其中groovy的闭包比其它语言的会强大一些

无缝适配

第二,就是可以无缝集成已存在的java类库,可以用java的语法/库等写我们的groovy程序,但是一般我们不会这么做

虽然groovy的语法和java类似,但是还是做了比较多的修改的

支持面向对象和过程

第三,groovy既支持面向对象编程,也支持面向过程编程

面向对象是因为groovy是基于java的一个拓展,java是一个面向对象编程的语言

面向过程是因为groovy结合了python等脚本语言的特性

如果用groovy开发程序,那么就会用到面向对象特性

如果用groovy开发脚本,那么就会用到面向过程特性

优势

首先,groovy是一种更加敏捷的编程语言

因为其在语法上做了非常多的语法堂,许多在java上写的在groovy中可以直接省掉,也就是用更少的代码写出同样的功能

第二个优势是,入门容易,功能强大

入门容易指掌握java下,去学习groovy是非常简单的

第三,既可以作为编程语言,也可以作为脚本语言

结尾

哈哈,该篇就写到这里(一起体系化学习,一起成长)

Tips

更多精彩内容,请关注 ”Android热修技术“ 微信公众号