gradle、groovy、kotlin的简单介绍

Gradle的简单介绍

Gradle的发展历史可以追溯到其前身工具的出现,这些工具为Gradle的诞生奠定了基础。

在2000年,Ant成为了最早出现的构建工具之一。它基于编程的思想设计,并且在短时间内成为了最流行的Java项目构建工具。然而,Ant的配置文件使用XML,这导致了分级的架构,并不完全适合用编程的思想去使用。此外,当管理小项目时,Ant的配置文件可能显得过于庞大和臃肿

到了2004年,Maven发布了。Maven的初衷是解决程序员在使用Ant时遇到的一些问题。它引入了一些新的概念和特性,例如依赖管理项目生命周期。这些改进使得Maven在发布后迅速获得了广泛的关注和应用。

随后,在2012年,Gradle作为新一代的构建工具出现。Gradle是基于Apache AntApache Maven的概念设计的,但它引入了一些创新性的特性。例如,Gradle使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,这使得配置更为简洁和直观。后来,Gradle还增加了基于Kotlin语言的kotlin-based DSL,进一步提高了配置的灵活性。

除了配置语言的改进,Gradle还支持多种编程语言,包括JavaGroovyKotlinScalaSwift等,这使得Gradle可以适应更多种类的项目。此外,Gradle还提供了强大的插件系统,允许开发者根据项目的需要定制构建流程

随着Gradle的不断发展,其社区也在逐渐壮大。越来越多的开发者开始使用Gradle,并为其贡献代码和插件。Gradle的创始人兼首席执行官Hans Dockter领导着Gradle的构建系统和项目发展,不断推动Gradle的进步和创新。

在更新Gradle版本方面,开发者可以通过修改项目的build.gradle文件中的依赖项来实现。但需要注意的是,更新版本可能会导致一些依赖库不兼容,因此需要进行相应的调整。同时,建议备份项目文件以防意外情况发生。

gradle创始人 - Hans Dockter - 汉斯·多克特

Hans Dockter是Gradle构建系统的创始人,并担任Gradle Inc.公司的首席执行官。该公司致力于推动软件构建和发布方式的变革。作为项目自动化领域的思想领袖,Hans Dockter成功负责了众多大型企业的构建项目。此外,他还是领域驱动设计(Domain Driven Design)的倡导者,并在这方面进行过教学。Hans Dockter在软件构建和项目管理领域有着深厚的专业知识和丰富的实践经验,为Gradle的发展和应用做出了重要贡献。

gradle的用法

Gradle是一个开源的构建自动化工具,它使用一种基于GroovyKotlin的领域特定语言(DSL)来描述构建逻辑。

Gradle支持多项目构建,每个项目都可以包含多个任务,任务可以是编译代码创建JAR文件生成文档等。

Gradle的主要用法包括以下几个方面:

  1. 初始化项目:创建一个空文件夹作为项目目录,并在该目录下打开终端命令提示符。执行gradle init命令来初始化项目。Gradle会询问你选择项目的类型,例如应用程序项目(application)库项目(library)
  2. 构建脚本语言选择:在Gradle中,你可以选择使用KotlinGroovy作为构建脚本的DSL。这取决于你的个人偏好和项目需求。
  3. 定义项目和任务:在Gradle中,项目(Project)是构建过程的基本单位,每个build.gradle文件代表一个项目。每个项目可以包含多个任务(task),任务代表了构建过程中的一个具体操作。你可以在构建脚本中定义任务,并指定任务的依赖关系和执行顺序
  4. 配置构建过程:通过Gradle的DSL,你可以配置构建过程的各个方面,如编译选项依赖管理插件应用等。你可以在构建脚本中指定项目的依赖项,Gradle会自动下载和管理这些依赖。
  5. 执行构建任务:在命令行中,使用gradle tasks命令可以列出项目中定义的所有可执行任务。然后,你可以使用gradle <task-name>命令来执行特定的任务。Gradle会按照任务的依赖关系和执行顺序来执行这些任务,并生成相应的输出文件。
  6. 清理构建输出:使用gradle clean命令可以清理之前构建生成的输出文件和临时文件,将项目恢复到初始状态。
  7. 运行测试:如果你的项目中包含测试代码,可以使用gradle test命令来执行测试任务。Gradle会自动运行所有定义的测试用例,并生成测试报告。

除了上述基本用法外,Gradle还提供了许多高级功能和插件,用于支持更复杂的构建需求,如多项目构建、持续集成、发布到Maven仓库等。

用kotlin groovy来描述构建逻辑

一个project中有多个task

groovy

Groovy是一种基于Java虚拟机的敏捷开发语言。

它结合了Python、Ruby和Smalltalk的许多强大的特性,能与Java代码很好地结合,也能用于扩展现有代码。

Groovy具有静态类型静态编译功能,适用于Java平台,旨在通过简洁、熟悉且易于学习的语法提高开发人员的工作效率。

它提供了丰富的特性,如支持运算符重载本地语法列表关联数组,以及对正则表达式的本地支持等。

此外,Groovy字典是一种集合类型,用于存储键值对数据,与Java中的HashMap类似,但更加简洁和易用。


Groovy在英语中的含义主要包括“绝妙的”、“一流的”、“极好的”

它也可以用来形容事物具有“槽的、沟的”特征,

或者表示某种事物是“流行的”或处于“最佳状态”

kotlin

kotlin主要指的是一种编程语言,由JetBrains公司设计和开发,最初发布于2011年。

Kotlin的命名来源于俄罗斯圣彼得堡市边的科特林岛,与Java语言有着密切的关系。

Kotlin具有简洁、安全、实用的特性,并且专注于与Java的互操作性。

它可以应用于服务端开发、Android开发等多个领域,并且可以被编译成JavaScript,在浏览器中运行Kotlin代码。


2011年

在2011年,JetBrains正式立项并发布了Kotlin项目,标志着这个编程语言的诞生。

Kotlin的设计初衷是为了更好地解决Java平台上的某些问题,同时提供更为简洁和安全的语法

随着Kotlin的不断发展,它在2012年2月被JetBrains在Apache 2许可证下开源,这使得更多的开发者能够参与到Kotlin的发展中来,并推动了其生态系统的壮大。

2016年

2016年2月,JetBrains发布了Kotlin的第一个稳定版本1.0,并承诺保持向后兼容。

这个版本的发布标志着Kotlin已经从一个初生的项目成长为一个成熟且稳定的编程语言

2017年5月

在2017年,Kotlin的发展迎来了重要的里程碑。

3月,Kotlin 1.1版本发布,正式支持JavaScript,并新增了诸多新功能和特性。

这使得Kotlin的应用范围得到了进一步的扩展,不仅可以在Java虚拟机上运行,还可以用于Web开发。

同年5月,在Google I/O大会上,Google官方确定支持Kotlin语言,这一举动极大地推动了Kotlin在Android开发领域的应用。

随着时间的推移,Kotlin在开发者社区中的影响力逐渐扩大。

2019年

2019年,Kotlin更是成为了Android移动开发的首选语言,这足以证明其在移动开发领域的强大实力。

kotlin代码的执行过程

Kotlin代码的执行过程涉及多个阶段,从源代码的编写到最终程序的运行,包括编译链接解释执行等步骤。

下面是对Kotlin代码执行过程的一个大致介绍:

源代码编写

开发者使用Kotlin语言编写源代码,定义类、函数、变量等。

这些源代码文件通常以.kt为扩展名。

编译

Kotlin源代码需要被编译成可在特定平台上运行的代码。

对于JVM平台,Kotlin编译器将源代码转换成Java字节码(.class文件),这些字节码可以被Java虚拟机(JVM)执行。

对于其他平台,如JavaScript或Native(例如用于Android的Kotlin/Native),Kotlin编译器会生成相应平台的代码

编译过程包括词法分析语法分析语义分析中间代码生成和优化等步骤。

编译器会检查源代码中的语法错误、类型错误等,并生成优化的中间代码最终的目标代码

链接(对于某些目标平台)

在某些情况下,编译后的代码可能还需要与其他库或模块进行链接。

链接是将多个编译后的代码单元(如对象文件或库文件)组合一个可执行文件或库的过程。

对于Kotlin/Native或某些其他平台,这一步可能是必需的。

运行

最终生成的可执行文件或库文件可以在目标平台上运行。

对于JVM平台,Java虚拟机负责加载和执行字节码。

Kotlin标准库其他依赖库在运行时被加载到JVM中,以提供必要的功能和API。

对于Kotlin/Native生成的本机代码,它可以直接在目标操作系统上执行,无需JVM。

而对于Kotlin/JS生成的JavaScript代码,它可以在Web浏览器或其他JavaScript运行时环境中执行。

解释执行(对于某些情况)

虽然Kotlin通常被编译成静态类型的字节码或本机代码,但在某些情况下,Kotlin代码也可以被解释执行。

例如,Kotlin有一个交互式解释器(REPL),允许开发者即时编写和执行Kotlin代码片段。

此外,在某些开发环境或工具中,Kotlin代码可能以解释模式运行,以便提供更快的反馈和调试体验

kotlin的数据类型

Kotlin中的数据类型丰富多样,主要包括基本数据类型复杂数据类型

以下是一些关于Kotlin中基本数据类型的介绍:

  1. 数字类型

Kotlin提供了多种数字类型,包括ByteShortIntLongFloatDouble

这些类型都是值类型,可以进行算术运算、逻辑运算、比较运算等操作。

其中,Byte、Short、Int和Long表示整数类型,而Float和Double则表示浮点类型。

根据IEEE 754标准,Float是单精度浮点数,而Double是双精度浮点数。

2、字符类型:Kotlin中的字符类型是Char,用于表示一个Unicode字符。

字符变量通常使用单引号来定义,例如:var ch: Char = ‘a’。

3、 布尔类型:Kotlin中的布尔类型是Boolean,只有两个值:truefalse

在声明变量时,需要指定变量的数据类型。例如:

fun main() {
    val d: Int // 声明变量及数据类型,不赋值
    d = 3 // 赋值
    val e: String = "hello" // 声明变量及数据类型并赋值
    println(d) // 输出: 3
    println(e) // 输出: hello
}

此外,Kotlin还具有一些特殊的特性。

例如,如果没有显式指定数据类型,Kotlin会自动判断为最小的数据类型

在二进制表示法中,无法精确地表示大多数十进制小数,因此需要注意浮点数的精度问题。

同时,Kotlin中的所有事物都是对象,这意味着即使是数字、字符和布尔值等基本数据类型,也具有对象的行为和属性。

除了基本数据类型外,Kotlin还提供了复杂数据类型,如类、接口、数组等,用于构建更复杂的程序结构。

kotlin和java数据类型的对比

Kotlin和Java在数据类型方面存在许多相似之处,但也存在一些细微的差异。

1、基本数据类型

  1. 整数类型
  • Kotlin: Byte(8位)、Short(16位)、Int(32位)、Long(64位)。

  • Java: byte(8位)、short(16位)、int(32位)、long(64位)。

两者的整数类型在位数和表示范围上都是一致的。

  1. 浮点类型
  • Kotlin: Float(32位)、Double(64位)。

  • Java: float(32位)、double(64位)。

浮点类型在Kotlin和Java中也是相同的,都遵循IEEE 754标准。

  1. 字符类型
  • Kotlin: Char(16位),用于表示Unicode字符。

  • Java: char(16位),也用于表示Unicode字符。

两者在字符类型上也是一致的。

  1. 布尔类型
  • Kotlin: Boolean,只有两个值:true和false。

  • Java: boolean,同样只有两个值:true和false。

说白了,kotlin的数据类型设计,这不就是跟java的一样吗?

只是写的时候,用大写

2、特殊数据类型

Kotlin提供了一些Java中没有的特殊数据类型,例如:

  • 区间

Kotlin中的区间(Range)表示一组连续的数值,可以使用…运算符表示。

Java中没有直接对应的区间类型。

3、类型转换

在类型转换方面,Kotlin和Java也存在一些差异。

Kotlin支持自动类型转换(隐式类型转换),即容量小的数据类型可以自动转换为容量大的数据类型。

Java在某些情况下可能不支持这种自动转换

4、数组和字符串

  • 数组:Kotlin和Java都支持数组类型,用于存储一组相同类型的元素。

    • 但在Kotlin中,数组的操作可能更加简洁和直观。
  • 字符串:Kotlin和Java的字符串类型都是String,用于表示一组字符序列。

    • 但Kotlin在字符串处理方面可能提供了一些更简洁或更强大的功能

5、复杂数据类型

1. 集合(Collection)

Java提供了多种集合类,如List、Set、Map等,它们能够动态地增加或删除元素,并提供了丰富的方法来操作集合中的数据。

例如,List是一种有序的集合,允许重复元素,并且可以根据索引访问其中的元素;

Set则是一种不允许重复元素的集合,保证其中的元素是唯一的。

Kotlin同样支持集合类型,并提供了与Java类似的List和Set等接口。

在Kotlin中,List和Set的实现与Java中的类似,用于存储和操作一组对象。

此外,Kotlin的集合类型也支持高阶函数和扩展函数,这使得对集合的操作更加灵活和简洁。

2. 列表(List)

在Java中,List是一个重要的集合类型,常见的实现类有ArrayListLinkedList

这些实现类提供了对列表元素的增删改查等操作。

Kotlin中的List类型与Java中的List类似,也是用于存储有序元素的集合。

Kotlin中的List同样支持对元素的增删改查操作,并且由于Kotlin支持扩展函数,可以为List类型添加更多的自定义操作。

3. 映射(Map)

Java中的Map类型用于存储键值对,其中键是唯一的,每个键都映射到一个值。常见的实现类有HashMapTreeMap

Kotlin也支持Map类型,并提供了与Java类似的接口和功能。

Kotlin的Map同样用于存储键值对,并提供了对键值对的增删改查操作。

4. 其他复杂数据类型

除了上述常见的集合类型外,Kotlin还提供了一些Java中没有的复杂数据类型。

例如,Kotlin支持元组(Tuple),虽然它本身没有内置的元组类型,但可以通过使用类、数据类或数据类的组件来模拟元组的功能

List、Set、Map都TMD是一样的。

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值