第一章 Kotlin简介

1 Kotlin是什么

Kotlin是JetBrains公司开发的一门用于开发多平台应用程序的静态编程语言。
Kotlin可以编译成Java字节码运行在JVM上,也可以编译成Javascript运行在浏览器或其他JS运行环境中,甚至可以直接编译成二进制码直接运行在机器上。
Kotlin的设计目标是:

  • 创建一种兼容Java的语言
  • 比Java更安全,能够静态检测常见的陷阱
  • 比Java更简洁
  • 比scala更简单

2 Kotlin的主要特征

2.1 多平台

1 Kotlin的首要目标是提供一种更简洁、更高效、更安全的替代Java的语言,并且适用于Java的所有环境;
2 Kotlin可以编译成Javascript,使之运行在浏览器等JS环境中;
3 Kotlin Native致力于将Kotlin直接编译为二进制码,可以直接运行在机器上。

2.2 静态类型

Kotlin和Java一样,是一种静态类型的编程语言,这意味着所有表达式的类型在编译期都已经确定了。另外,与Java不同的是,Kotlin不需要你在源代码中显式地声明每个变量的类型,在大多数情况下,变量类型可以根据上下文来自动判断,编译器这种能力被称为类型推导
下面罗列了一些静态类型带来的好处:

  • 性能——方法调用速度更快,因为不需要在运行时才来判断调用的是哪个方法
  • 可靠性——编译器验证了程序的正确性,因而运行时程序崩溃的概率更低
  • 可维护性——陌生代码更容易维护,因为你可以看到代码中用到的对象类型
  • 工具支持——静态类型使IDE能提供可靠的重构、精确的代码补全以及其他特性

2.3 函数式和面向对象

函数式编程核心概念:

  • 头等函数——把函数当作值使用,可以用变量保存它,把它当作函数参数传递,或者当作其他函数的返回值
  • 不可变性——使用不可变对象,保证了它们的状态在其创建之后不能再被修改
  • 无副作用——使用纯函数。此类函数在输入相同时会产生同样的结果,并且不会修改其他对象的状态,也不会和外面的世界交互

函数式编程的优点:

  • 简洁——函数式风格的代码比命令式风格的代码更优雅,更简洁,因为把函数当作头等公民可以让你获取更强大的抽象能力,从而避免重复代码
  • 多线程安全——多线程程序中最大的错误来源之一就是在没有采用适当同步机制的情况下,在不同的线程上修改同一份数据。如果你使用的是不可变数据结构和纯函数,就能保证这样不安全的修改根本不会发生,也就不需要考虑为其设计复杂的同步方案
  • 更容易测试——没有副作用的函数可以独立地进行测试,因为不需要编写大量的设置代码来构造它们所依赖的环境

Kotlin拥有丰富的特性集从一开始就支持函数式编程风格,包括:

  • 函数类型,允许函数接受其他函数作为参数,或者返回其它函数
  • lambda表达式,让你用最少的样板代码方便地传递代码块
  • 数据类,提供了创建不可变值对象的简明语法
  • 标准库中提供了丰富的API集合,让你用函数式风格操作对象和集合

Kotlin允许你使用函数式编程风格,但并没有强制你使用它。Kotlin也提供了跟Java一样的面向对象编程的支持。因此,当编写Kotlin代码时,你可以结合使用面向对象编程和函数式编程风格。

2.4 免费并开源

Kotlin语言(包括编译器、库和相关工具)是完全开源的,并且可以自由使用。它采用Apache 2 许可证,其开发过程完全公开在Github上,并且欢迎来自社区的贡献。
Kotlin开发有三种IDE供你选择:IntelliJ IDEA Community版、Android Studio以及Eclipse,他们都是免费的,并完全支持Kotlin。

3 Kotlin的设计哲学

3.1 务实

Kotlin就是一门设计出来解决现实世界问题的实用语言。它的设计基于多年创建大型系统的工业经验,它的特性也是为了解决许多软件开发者遇到的场景而选择的。

3.2 简洁

Kotlin努力地保证你写的代码都具有实际的意义,而不是仅仅为了满足代码结构的需要。许多标准的Java样板代码,比如getter、setter以及将构造方法的参数赋值给字段的逻辑,在Kotlin中都是隐式的,并不会使你的源代码变得混乱。Kotlin标准库提供了很多API来代替你之前在Java中写的许多冗长的代码段。Kotlin对lambda的支持可以让你把公告代码全部封装到库中,而在用户代码中仅仅保留着特定的针对任务的那部分。
越简洁的代码写起来花的时间越短,读起来耗费的时间也更短,这会提高你的生产力并让你更快地达成目标。

3.3 安全

Kotlin试图实现比Java更高的安全级别,同时保持更低的总体成本。在JVM上运行已经提供了许多安全保证,比如内存安全,防止了缓冲区溢出以及其他错误的动态内存分配造成的问题。
作为面向JVM的静态类型语言,Kotlin不但保证了应用程序的类型安全,并且做到了比使用Java的成本更低:不需要指定所有的类型声明。
Kotlin设计了一套机制,努力地从你的程序中消除NullPointerException。
Kotlin将检查对象类型和类型转换组合成了一次操作,一旦检查过类型,不需要额外的转换就能直接引用属于这个类型的成员,有助于避免ClassCastException。

3.4 互操作性

Kotlin可以与Java实现无缝的互操作。
Kotlin可以调用Java的方法,继承Java的类和实现Java的接口,在Kotlin类上应用Java的注解等。Java也可以毫不费力地调用Kotlin的代码。在项目的任何地方都可以混合使用Java和Kotlin。
另一个Kotlin专注于互操作性的领域就是在最大程度上使用现有的Java库。例如,Kotlin没有自己的集合库,它完全依赖Java标准库中的类,使用额外的函数来扩展它们,让它们在Kotlin中使用起来更方便。

4 Kotlin的应用场景

4.1 服务器端

Kotlin可以和Java进行无缝互操作,无论是要编写一个全新的组件还是移植一个现有服务的代码,Kotlin都毫无压力。
Spring Framework 5.0 已经完全支持使用Kotlin构建服务器端应用程序了!
Spring boot 2.0 完全支持使用Kotlin构建应用后端RestAPI!

4.2 Android

在Google I/O 2017中,Google宣布在Android上为Kotlin提供一等支持。

5 第一个Kotlin程序

5.1 Hello,Kotlin

// Hello.kt,Kotlin源代码都以.kt结尾
/*
 * 1)fun:函数声明关键字
 * 2)main:函数标识,main函数是程序的入口函数
 * 3)args: Array<String>:args是命令行参数,为字符串数组类型
 * 4)println("Hello, Kotlin!"):打印字符串"Hello, Kotlin!"并换行
*/
fun main(args: Array<String>){
	println("Hello, Kotlin!")
}

5.2 Kotlin程序执行流程

编译
kotlinc
执行
java
Kotlin
运行时
应用
Kotlin源文件
Hello.kt
JVM字节码
HelloKt.class

1)Kotlin源文件以.kt结尾,首先通过kotlinc编译器编译成*Kt.class字节码文件
2)编译后的字节码通过java命令在JVM中运行
3)Kotlin程序运行时依赖Kotlin运行时库

6 Kotlin工具

6.1 Kotlin编译器

kotlin编译器可以在github上下载最新稳定版,项目地址:
https://github.com/JetBrains/kotlin

6.2 IntelliJ IDEA

IntelliJ IDEA是Kotlin可用的功能最全的开发环境,下载地址:
https://www.jetbrains.com/idea/download

6.3 REPL

如果你想快速尝试小段Kotlin代码,可以使用交互式Shell(REPL)。可以使用不带任何参数的kotlinc命令来启动REPL,也可以在IDEA的Kotlin菜单中打开REPL。

6.4 在线playground

https://play.kotlinlang.org/提供了Kotlin的在线playground,在上面可以编写、编译并允许Kotlin小程序,而不需要安装任何软件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值