kotlin 出来也有些年头了,对于服务端的java程序员来讲,好多人对此并不感冒;这么多年出来的新语言多了,都说要怎么怎么样,到头来还是java稳。笔者也曾经持有这种看法,而且刚刚听说kotlin的时候,我正痴迷于学golang;所以接入kotlin的时间比一般人晚了许多。
但最近狠下心花了些时间学了一下kotlin,并强迫自己所有需要写java代码的地方都采用kotlin来做,越来越发现不想转回去写java了,这种感觉很像最开始从eclipse转到idea的时候,刚开始有点抗拒,各种快捷键也不熟悉,后来发现真的爽,而且回不去了。
经过一段时间的了解,我觉得kotlin有 3个方面的优点吸引了我:
- 与java项目无缝切换,可以混着写混着玩,不用一刀切的换成新语言,可以先尝一口试一试;这一点让我愿意迈出尝试的第一步。
- kotlin相对于java写法上可以理解为各种语法糖,而且这糖太甜了,谁用谁知道;这一点让我用了就停不下来。
- kotlin支持协程,用java做过异步编程的同学都知道异步编程很
烧脑
, 协程可以让开发者以同步的方式写异步代码,虽然相比于golang的协程还没那么方便,但是在jvm生态里,真的是可以解决很大的问题了;这一点让我看到kotlin的未来。
所以如果看了上面的文字,你也愿意试一下,欢迎跟随这一系列文章来进行学习。
环境搭建
maven
添加依赖
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
添加plugin
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>${kotlin.version}</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<jvmTarget>1.8</jvmTarget>
</configuration>
</plugin>
建议单独把kotlin源码设置一份源码路径
gradle
基于gradle创建kotlin的项目就相当简单了, 本系列课程源码也将基于gradle方式进行配置
HelloWorld
创建文件HelloWorld.kt, 内容如下:
fun main() {
println("Hello World")
}
与java代码交互
假设有一java类
public class Student {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
kotlin代码可直接与java代码进行交互
fun main() {
//kotlin 声明变量时可以直接使用var或val, var表示变量,val表示不可变量
//创建对象不需要new关键字
//每一行都不需要分号
var s = Student()
//可以直接通过 .属性 来取值或赋值
s.name = "zhangsan"
s.age = 12
println(s)
}
总结
本文主要讲解如何搭建kotlin的开发环境,并以两个简单的例子做结尾,代码很简单详细你一定能看懂。源码路径
系列文章快速导航:
java程序员的kotlin课(一):环境搭建
java程序员的kotlin课(N):coroutines基础
java程序员的kotlin课(N+1):coroutines 取消和超时
java程序员的kotlin课(N+2):suspending函数执行编排