Kotlin学习1.1: Kotlin简介

1.1.1 Kotlin的前景

Kotlin 是一个用于现代多平台应用的静态编程语言,由 JetBrains 开发。
Kotlin可以编译成Java字节码,也可以编译成JavaScript,方便在没有JVM的设备上运行。
Kotlin已正式成为Android官方支持开发语言。
目前主要应用于以下几个领域。

服务器端开发

Kotlin 语言非常适合开发服务端应用程序并且与Java技术保持良好的兼容性。之前用Java语言做的服务端程序都可以用Kotlin 语言来代替。
Kotlin 作为一种革新式语言,其功能有助于我们构建强大而简易使用的程序
而且Kotlin 语言与所有基于Java语言的框架完全兼容,可以让我们原Java程序员能保持熟悉的技术栈的同时。同时获得更现代化的语言优势。

Android 开发

Kotlin语言也适合开发Android Q程序。
在兼容性方面,Kotlin语言与JDK6完全兼容,保证了Kotlin应用程序可以在比较旧的Android 设备上运行。
在性能方面,由于Kotlin支持内联函数。使用Lambda表达式的代码通常比使用Java的代码运行速度快。因此Kotlin应用程序运行速度比Java快。
在互操作性方面。Kotlin可以进行与Java进行100%的互操作,所以在应用程序中,可以使用所有现有的Android Q库。
在编译时长方面,Kotlin支持高效的增量编译。所以对于清理构建会有额外的开销。增量构建通常与Java一样快。或者更快。

JavaScript开发

Kotlin提供了JavaScript作为目标平台的能力。这种能力通过将Kotlin转换为JavaScript来实现。
当选择JavaScript为目标时,作为项目部分的Kotlin代码,以及Kotlin附带的标准库都会转换为JavaScript,但不包括JDK、任何JVM、Java框架或库,所有非Kotlin文件在编译期间会被忽略掉。
编译器遵循以下目标:提供最佳大小的输出;提供可读的JavaScript输出;提供与现有模块系统的互操作性;在标准库中提供相同的功能。

小总结

1、从开发人员的角度来看,Kotlin语法糖确实让代码更加简洁,减轻了开发人员的代码量,而且现在很多语言比如Python、GO等也都体现着简洁性这个特点,说到底语言就是一种辅助实现的工具。所以从开发效率或者个人学习的角度,可以多了解下。
2、至于以后能不能替代Java,这个要看支持的框架模块等、以及推广的效果。我是持乐观态度,只是时间问题。
3、各种语言的争论其实都很多,也会在具体的使用场景中体现出不同的优势,除了代码本身的特性和功能外,还要看在其发展过程中,能不能被普遍接受和使用。

1.1.2 Kotlin 的特性

简洁

尽管我之前一直用的是Java,当写到Kotlin,还真是觉得如沐春风。
除了不用写分号以及天然支持Lambda表达式之外,它的语法本身就比Java简洁许多。

举几个小例子,比如,类型推导:

val a : Int = 1 // 正常的声明、赋值
val b = 2 // 类型推导,可以省略Int声明

/* 定义函数:自动推导函数的返回值类型 */
fun sum(a: Int, b: Int) = a + b

字符串模板:

val name = "Barry"
val age = 15
print("My name is ${name}, I am ${age} ")  // 会打印出: My name is Barry, I am 15

再举一个比较简单的小例子——遍历一个列表,打印其中的奇数。
如果用Java写的话:

List list = Arrays.asList("H",1,3,10,5,9,20,199);
for(Object number : list){
    if(!(number instanceof  Integer)) {
        continue;
    }
    if((Integer)number % 2 == 0){
        System.out.println((Integer)number);
    }
}

如果用Kotlin写的话,显然会更清晰与简洁,在这里用到了Lambda表达式。

val list = Arrays.asList("H", 1, 3, 10, 5, 9, 20, 199)
list.filter { it is Int }
        .filter { it as Int % 2 != 0 }
        .forEach { println(it) }

安全

在Java里,我们常常要进行许多非空判断:

public void fun1 (String str){
   if(str != null) {
       System.out.println("Length = " + str.length());
   }
}

而在Kotlin中,即使不进行这些额外的判断,代码也是健壮的:

// 如果str=null,会打印:Length = null
fun fun1 (str: String?) {
    println("Length = " + str?.length) 
}

还有,Java中经常出现的ClassCastException,在Kotlin中,也可以通过安全的类型转换进行避免:

val l2 = listOf("A",1,3,6,8,'c')
l2.forEach { println(it as? Int) }

函数、属性扩展

Kotlin提供了一种方法,可以在既不需要继承父类,也不需要使用类似装饰器设计模式的情况下,对类进行扩展。
比如,给String类添加一个扩展方法,用以返回它的第一个字符。只需要这样:

// 函数扩展
fun String.firstChar() : String? {
    return if(this.length > 0) this.substring(0,1) else "NULL"
}

这个扩展函数可以在任何地方声明,然后其他任何地方String对象就都可以使用这个方法了:

val s = "Hello".firstChar())  // s的值为"H"
println("你好".firstChar())   // 打印: 你
println("".firstChar())   // 打印: NULL

兼容Java

一个语言能否被广泛使用,除了它本身要好用之外,还要有一个良好的生态。 尤其在是如今,各种应用层的开发实际上很依赖于各种开源库、第三方组件等,如果一个应用层的语言没有这些支持的话,是很难被广泛使用的。 而对于Kotlin来说,这个问题是不存在的,因为它跟Java是无缝连接的,可以相互操作。
这意味着:
Kotlin可以使用所有用Java写的组件:(RxJava、Retrofit、EventBus、Fresco……)
在现有的用Java写的项目中可以局部使用Kotlin,混合开发
Java->Kotlin,可以逐步迁移而不是非黑即白
使用Kotlin开发时,万一遇到问题,可以瞬间切换回Java~

博客为个人收集学习,供大家交流学习。
参考书籍:《Kotlin从基础到实践》
参考链接: 从Java到Kotlin:为什么要使用Kotlin进行Android开发?.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值