KotlinNote-1.初识Kotlin

1.序言

  1. 2010年,Kotlin想法在JetBrains有了初步构思
  2. 2012年,Kotlin1.0诞生,提交到远程代码库
  3. 2015年1月,Android开发者社区大神Jake Wharton发布了一片使用Kotlin来进行Android开发的总结
  4. 2017年,Google I/O大会上,Kotlin正式成为了官方的ANdroid开发语言
  5. …接下来,Kotlin迅速占据了国内各大技术媒体的头条,被广大开发者运用….

2.Kotlin到底是什么?

Kotlin是一种针对Java平台的新编程语言。Kotlin简洁、安全、务实,并且专注于与Java代码的互操作性。它几乎可以用在现在Java使用的任何地方:服务器开发、Android应用,等等。Kotlin可以很好的和所有现存的Java库和框架一起工作,而且性能水平和Java旗鼓相当。

3.Kotlin的主要特征

3.1 目标平台:服务器开发、Android应用及任何Java运行的地方

3.2 静态类型

Kotlin和Java一样是一种静态类型的编程语言。这意味着所有表达式的类型在编译期就已经确定了,而编译器就能验证对象是否包含了你想访问的方法或者字段。

3.3 函数式和面向对象

3.3.1 函数式编程的核心概念:

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

    3.3.2 函数式编程的好处

  • 简洁 函数式风格的代码比相应的命令式风格的代码更优雅、更简洁,因为把函数当作值可以让你获得更强大的抽象能力,从而避免重复代码
  • 多线程安全 多线程程序中最大的错误来源之一就是,在没有采用适当同步机制的情况下,在不同线程上修改同一份数据。如果你使用的是不可变数据结构和纯函数,就能保证这样不安全的修改根本不会发生
  • 测试更加容易 没有副作用的函数可以独立的惊醒测试,因为不需要写大量的设置代码来构造他们所以来的整个环境。

3.4 免费并开源

4.Kotlin设计哲学

4.1 务实

Kotlin不是一门研究性的语言,Kotlin没有试图提升编程语言设计领域目前的技术水平,也没有尝试探索计算机科学的创新理念。反而,Kotlin尽可能的依赖已经出现在其他编程语言中并被证明是成功的那些特性和解决方案,降低了语言的复杂性,也让它更容易学习。

在这里提一点自己的学习小技巧,可以先通过Java风格代码编写Kotlin代码,熟悉之后逐渐使用Kotlin特有的语法和习惯

4.2 简洁

  • Kotlin中getter、setter方法都是隐式的以及将构造方法的参数赋值给字段的逻辑,在Kotlin中都是隐式的

  • 比如定位集合中的元素,Kotlin中有丰富的标准库,让你用库方法来代替这些冗长重复的代码段

  • Kotlin对lambda的支持,让小代码块可以轻松的传递给库函数

4.3 安全

Kotlin在运行时失败的错误在编译期的检查中就被阻止了。最重要的一点是,Kotlin努力的从你的程序中消除NPE。Kotlin的类型系统跟踪那些可以或不可以为null的值,并禁止那些运行时可能导致NPE的操作。

Kotlin有助于避免的另一种类型一场就是ClassCastException。当你把一个对象转换成一种类型时,而没有事先检查它是否是正确的类型时,就会发生一场。在Java中,开发者常常忽略了这类检查,因为必须反复的在检查和其后的转换中写明类型名称。另一方面,Kotlin中的检查和转换被组合成了一次操作:一旦检查过类型,不需要额外的转换就能直接引用属于这个类型的成员,

4.4 互操作性

小结

  1. Kotlin是静态类型语言并且支持类型推导,允许维护正确性与性能的同时保持源代码的简洁
  2. Kotlin支持面向对象和函数式两种风格,通过头等函数使更高级别的抽象成为可能,通过支持不可变值简化了测试和多线程开发
  3. 在服务器端应用程序中它工作的很好,全面支持所有现存的Java框架,为常见的任务提供了新工具,如生成HTML和持久化
  4. 在Android上也可以工作,这得益于紧凑的运行时、对Android API特殊的编译期支持以及丰富的库,为常见的Android开发任务提供了Kotlin友好的函数
  5. 它是免费和开源的,全面支持主流IDE和构建系统
  6. Kotin是务实、简洁、安全的,与Java互操作,意味着它专注于使用已经证明过的解决方案处理常见任务,防止常见的NPE这样的错误,支持紧凑和易读的代码,以及提供与Java无限制的集成
-------------本文结束感谢您的阅读-------------