kotlin 学习笔记 01
kotlin 学习笔记 01
简述
kotlin 由于 jetbrain 设计的开源语言,可编译为 JVM 字节码或 javascript。
在设计上,kotlin 吸收现代语言的优点,语法简约,号称与 java 100% 兼容(大部分的 java 代码可直接通过工具转换为 kotlin ),支持函数式编程,并提供很多语法糖。由于与 java 保持兼容,kotlin 可直接采用 java 的生态环境,而不需要像 go 等语言需要重新建立生态环境,因此 spring / hibernate 等 java 中常用的基础库可直接在 kotlin 中使用。目前,google 已在 android 上全面支持 kotlin ,spring 在 5 中会加强对 kotlin 的支持,在2017年7月TIOBE编程语言排行榜上 kotlin 进入前 50,由此可见 kotlin 的发展前景还是相对不错的。
与java 相比,相对 java 冗长的语法,kotlin 类似于 swift 和 python ,非常简洁。以包定义为例,java 的包需要与路径保持一致,而在 kotlin 中可放在任何的位置(更类似于 c# 的 namespace),代码组织上更加灵活。 习惯了 python 之后,觉得 kotlin 的代码要比 java 的表达能力强。而与 python 这类动态类型语言相比,kotlin 的静态类型在工程上会优势,在系统重构、代码自动提示时更加方便。如果要学习下一门的语言,不妨考虑 kotlin 。
当然,kotlin 并不完美,设计者不可能考虑到所有人的使用习惯,但就目前的规范来说,至少是足够好的,能解决目前 java 的很多问题。 我不太喜欢 kotlin 的异常处理,它在异常处理中去掉了受检异常,我觉得不是太好,但本身 checked exception 这个东西就有争议,而 java 标准库的异常设计本身也还带有些问题(见讨论),就更不能苛求这一特性。
开始
环境准备
要运行 kotlin 还需要准备 kotlin 的运行时,命令行编译工具见http://kotlinlang.org/docs/tutorials/command-line.html
。
使用 Intellij IDEA 或 elipse ,可用 gradle 的方式:
settings.gradle
rootProject.name = 'kotlin-learn'
build.gradle
buildscript {
ext.kotlin_version = '1.+'
repositories {
mavenLocal()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'idea'
apply plugin: 'eclipse'
apply plugin: 'kotlin'
repositories {
mavenLocal()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
}
compileKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
compileTestKotlin {
kotlinOptions {
jvmTarget = "1.8"
}
}
注意 kotlin 的运行时需要 jvm 1.7 以上。
以 gradle idea
或 gradle eclipse
生成 ide 的项目文件,就能在 idea 和 eclipse 中导入,在 ide 中还需要设置项目的 jdk 等参数。
helloworld
以一个 helloworld 开始 kotlin 的学习过程。kotlin 也是以 main 函数为入口,而 kotlin 支持直接使用函数,不需要使用类包装,helloworld.kt 代码如下:
fun main(args: Array<String>) {
println("Hello, world!");
}
编译运行输出
Hello, world!
这个例子可看到,函数以 fun
开头,参数以参数名加参数类型。这个 main 函数没有返回值,没有指定返回类型。
作为一个最简单的示例,已经可见到 kotlin 要比 java 的更加简洁、表达力强。