kotlin学习day9: 为什么要使用kotlin

原创 2017年10月13日 08:52:39

Kotlin 是一门把 Java 平台作为目标的新的编程语言。它简洁、安全、优雅而且专注于和 Java 代码间的互操作性。它几乎可以用于如今 Java 遍及的所有地方:服务器端开发、 Android 应用开发和更多其他的方面。 Kotlin 能够很好的与现有的 Java 库和框架并存。而且,它运行的性能不亚于 Java 。

Kotlin-静态类型

像 Java 那样, Kotin 是一种静态类型的编程语言。这意味着在编译时就可以确定程序中每一个表达式的类型。编译器可以验证你所访问的对象中的方法和字段。
这(种特性)跟JVM的具有代表性的动态类型编程语言,比如Groovy和JRuby,形成对比。那些语言允许你定义能够存储或返回任何数据类型的变量和函数,并且可以在运行时解析方法和字段引用。这样的代码更简短,在创建数据结构时也更为灵活。但它也有缺点,诸如无法在编译时检测命名拼写错误,并导致运行时错误这样的问题。另一方面,跟Java相比,Kotlin并不需要你在代码中显式的指定每一个变量的类型。在许多场景中,变量类型能够
根据上下文自动推断。这将允许你省略类型声明。

以下是一个最简单的例子:
var x = 1

你声明了一个变量。由于它以一个整数值进行初始化,Kotlin自动推断这个变量的类型为 Int 。编译器根据上下文判断变量类型的能力叫做类型推断。
以下是静态类型的一些好处:

  • 性能 - 由于不需要再运行时判断需要调用哪个方法,方法调用将会变得更快。

  • 可读性 - 编译器校验了程序的准确性,所以在运行时发生崩溃的可能性将会降低。

  • 可维护性 - 由于你能看到代码调用了什么类型的对象,使用不熟悉的代码将会变得更加容易。

  • 工具支持 - 静态类型使得可靠的重构、精确的代码填充和其他的IDE特性变得可能。由于Kotlin对类型推断的支持,大部分跟静态类型有关的冗余信息将会消失,因为你不需要显示指定类型。

Koitlin-函数式和面向对象

函数式编程的概念
  • 函数是一等公民 - 你把函数(行为块)看做是一个值。你可以把它们存储在变量中,把它们作为一个参数进行传递或者从其他函数中返回它们。
  • 不变性 - 你使用的是不可改变的对象。一旦它被创建,它的状态便不可更改。
  • 没有副作用 - 你使用的纯函数对于给定的相同输入将会返回相同的结果。同时,它不会修改其他对象的状态或者和外界进行交互。
函数式编程的好处
  • 简洁-因为把函数当做一个值将会给你带来更强大的抽象能力,这将避免你的代码出现冗余
  • 多线程安全-多线程程序中的一个最大的错误来源是没有正确的
    同步的情况下修改了来自多个线程的同一个数据。如果你使用了不可修改的数据结构和纯函
    数,你可以确保不会出现不安全的修改
  • 容易测试-函数能够被隔
    离测试而无需一堆安装代码来构造函数所依赖的完整环境
Kotlin对函数式编程的支持
  • 函数类型 允许函数接收作为参数的其他函数或者返回其他函数
  • lambda表达式 让你使用最小的模板分发代码块
  • 数据类 为创建不可变值对象提供了精简的语法
  • API 标准库为以函数式风格使用对象和集合提供了丰富的API

Kotlin-免费开源

Kotlin,包括编译器、函数库和所有相关的库都是完全开源和免费的。Kotlin使用Apache 2许可。它在GitHub的开发上是开放的。同时我们欢迎社区贡献。你也有三种可选的开源集成开发环境来开发Kotlin应用:IntelliJ IDEA 社区版、Android Studio和Eclipse都是完全支持的(当然IntelliJ IDEA 旗舰版亦可)。

Kotlin-Java的互操作性

Kotlin类和方法能够像常规的Java类和方法那样被调用。这将给你带来在项目的任何地方混合Java和Kotlin代码的终极灵活性。当你开始在你的Java项目中采用Kotlin时,你可以在你的代码库中的任意单一文件中运行Java-Kotlin转换器,其余的代码将会继续编译和正常工作而无需任何修改。不管你所转换的类是什么角色,这个功能都有效。

Kotlin专注于互操作性的另一个方面是尽最大可能的使用现有的Java库。例如,Kotlin并没有自己的集合库。它依赖于Java标准库的类,通过额外的函数来扩展他们以更加方便的使用,这意味着当你调用Java API时,你不需要通过Kotlin包装或者转换对象。Kotlin提供的所有API都不会出现运行时消耗。

Kotlin工具也为多语言项目提供了全面的支持。它能够编译任意一个混合Java和Kotlin的源文件,不论他们之间是如何的相互依赖。这个IDE特性对其他语言也是有效的。它将允许你做以下事情:

  • 在Java和Kotlin源文件中自由切换 调试混合语言项目并在用不同
  • 语言编写的代码中单步跟踪
  • 使用Kotlin重构和正确的升级你的Java函数,反之亦然

Kotlin-Android中的使用

  1. Kotlin的语言特性,结合支持Android框架的编译器特殊插件,把Android开发变为一个更具生产效率和舒适的体验。诸如为控件添加侦听器或者绑定布局元素到字段的常见开发任务,能够使用更少的代码来实现。有时候根本不需要代码(编译器会为你生成代码)。

  2. 性能方面,使用Kotlin也不会带来任何的坏处。Kotlin编译器产生的代码和常规的Java代码在执行时同样高效。Kotlin占用的运行时资源非常小,因此你不会遇到应用安装包大小会大幅增加的问题。当你使用lambda表达式时,许多的Kotlin标准库函数将会以内联的方式出现。内联lambda表达式确保没有新的对象会被创建,同时,应用不会遭遇额外的垃圾回收暂停问题。

  3. 更好的应用可靠性。如果你有更多Android应用开发
    经验,对于 Unfortunately, Process Has Stopped 对话框,你将不会陌生。当你的应用抛出一个未处理的异常时,通常是 NullPointerException ,这个对话框将会出现。Kotlin的类型系统
    使用它的精确的空值跟踪特性来让空指针异常变得没那么迫切。大部分的代码在Java中会导致 NullPointerException,在Kotlin中会编译失败,这将确保你在应用到达用户手上之前修复错误。同时,因为Kotlin是完全兼容Java6的,它的使用不会引入任何新的兼容性问题。你将会受益于Kotlin所有的既酷又新的特性。你的用户将会依然能够在他们的设备上运行你的应用,即使他们不是在最新版的Android上运行。

Kotlin总结

  • Kotlin是静态类型的,支持类型推断的,在保持代码精简的同时维持准确性和性能。
  • kotlin同时支持面向对象和函数式编程风格,通过把函数放在一等公民的位置实现更高层次的抽象,通过支持不可变值简化了测试和多线程开发。
  • Kotlin在服务器端应用运行良好。它能全面支持现有的Java框架并为公共任务提供了新的工具,例如生成HTML和保持一致性。
  • Kotlin在Android开发方面也是可用的。由于紧凑的运行时,Android API的特殊编译器支持,丰富的函数库为常见的Android开发任务提供了Kotlin友好的函数支持。
  • Kotlin是免费和开源的。它为主流IDE和构建系统提供了全面的支持。
  • Kotlin是优雅的、安全的、精简的以及互操作性强的(语言)。这意味着它专注于使用已经被证明的方案来解决常见任务,阻止一般的错误,例如: NullPointerException ,支持紧凑和易读的代码,松散的Java集成功能。
版权声明:本文为博主原创文章,转载请注明出处!

kotlin学习Day1:JavaActivity和KotlinActivity对比分析

kotlin包的定义 包名应该定义为源文件的最上面,所有其它的内容如函数或者类等都要在包名的下面(和Java一样)使用package关键字:我们新建一个JavaActivity文件和KotlinAc...

如果你现在学Android---学习使用Kotlin进行Android开发

原文地址: http://www.eoeandroid.com/thread-902176-1-1.html?_dsign=650ea146之前写了一篇《如果你现在学Android–写给新手的入门教...

Kotlin学习记录(四)—— 常用集合的使用

集合在程序中的比例的很重的,Kotlin针对集合进行了更加简洁和有效的封装,这边文章就简单的介绍一下list,map,set这三个最常用集合的使用。 首先在Kotlin中,明确区分了集合的只读和可变...

分享下学习Kotlin的历程-环境/简单使用

转载请注明出处:王亟亟的大牛之路从4月开始到现在 一直都在忙React-Native项目的事,途中基本没碰安卓代码,Kotlin这一块之前张涛/医生他们这些先行者开始写文章的时候就已经有所了解,直至”...

使用Kotlin编写6.0权限检查框架学习总结

使用Kotlin编写6.0权限检查框架学习总结很久之前就学习过编译时注解的原理,不过对于java的Element使用不多,这次又重新复习了一遍,顺便学习了一下使用kotlin来编写。 对于运行时注入...

Kotlin基础 9 - 高阶函数

高阶函数的基本概念 1.传入或者返回函数的函数 2.函数引用 ::println 3.带有Receiver的引用 pdfPrinter:println fun main(args: ...

Kotlin入门(9)函数的基本用法

上一篇文章介绍了Kotlin新增的空安全机制,控制语句部分可算是讲完了,接下来将连续描述Kotlin如何定义和调用函数,本篇文章先介绍函数的基本用法。前面几篇文章介绍控制语句之时,在setOnClic...
  • aqi00
  • aqi00
  • 2017年07月28日 09:33
  • 505

kotlin学习书籍(中文)

  • 2017年11月14日 16:57
  • 2.11MB
  • 下载

Kotlin学习Demo

  • 2017年07月28日 12:26
  • 209KB
  • 下载

Kotlin学习之路(一)

1. kotlin的简介 随着Google I/0 2017的结束,Kotlin已经成为热搜。耐不住自己内心的寂寞,于是开始了Kotlin的“入坑之路”。Kotlin 是⼀门针对 JVM、Andr...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:kotlin学习day9: 为什么要使用kotlin
举报原因:
原因补充:

(最多只允许输入30个字)