前言:北京時(shí)間的17日23點(diǎn),谷歌一年一度的I/O開(kāi)發(fā)者大會(huì)召開(kāi).就在這第一天,谷歌安卓團(tuán)隊(duì)大會(huì)上宣布Kotlin成為Android的主力開(kāi)發(fā)語(yǔ)言,其實(shí)在之前這個(gè)語(yǔ)言就已經(jīng)支持了安卓平臺(tái)開(kāi)發(fā),但是直到今天谷歌開(kāi)發(fā)者大會(huì)上才宣布對(duì)該語(yǔ)言的全面支持和維護(hù),至此之后代碼將更加簡(jiǎn)潔.
最近項(xiàng)目上線(xiàn),CTO說(shuō)閑暇之余學(xué)習(xí)下安卓,無(wú)奈重新啃java的語(yǔ)法,這是多么痛的領(lǐng)悟,可是一覺(jué)醒來(lái),萬(wàn)物復(fù)蘇.
作為熱衷Swift的iOS開(kāi)發(fā)者,看到Kotlin語(yǔ)法是多么的熟悉.23333.
一、Kotlin的遷移.
1、安裝一個(gè)Kotlin的插件.
Ps:使用Android Studio開(kāi)發(fā)安卓.聽(tīng)說(shuō)Android Studio 3.0 預(yù)覽版已支持 Kotlin了,就可以跳過(guò)這一步了.
-
Android Studio->Preferences->Plugins - 選擇
Browse Repositories
選擇Browse Repositories - 搜索
Kotlin
搜索Kotlin - 根據(jù)提示重啟Android Studio即可.
2、java文件遷移Kotlin
Kotlin插件提供了遷移入口, jetbrains真是良心賣(mài)家啊.
- 打開(kāi)你的Activity,
- 選擇
code->Convert Java File to Kotlin File
Ps:和Swift遷移感覺(jué)一樣,

原本java文件的MainActivity:
package com.example.rambolu.testkotlin;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
遷移后kt文件的MainActivity:
Ps:遷移后發(fā)現(xiàn)眼前的畫(huà)面似曾相識(shí)...
package com.barryzhang.kotlinhello
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
對(duì)比swift文件的ViewController:
Ps:真的和Kotlin是孿生姐妹...
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
- 感覺(jué)當(dāng)你寫(xiě)慣了swift后,在書(shū)寫(xiě)方式上稍微熟悉下可以無(wú)縫切入Kotlin.至于android的類(lèi)庫(kù)還需要再進(jìn)一步的學(xué)習(xí).
- 同時(shí)Kotlin和java也可以進(jìn)行混編(有點(diǎn)類(lèi)似OC和Swift混編),Kotlin可以調(diào)用java的類(lèi)庫(kù),同時(shí)java也可以調(diào)用Kotlin.
3、配置Kotlin.
-
當(dāng)你轉(zhuǎn)移后,再次打開(kāi)Activity,IDE會(huì)提醒你
Kotlin not configured.此時(shí)需要點(diǎn)擊右面的configure.
Configure -
點(diǎn)擊后會(huì)提醒項(xiàng)目配置Kotlin,是選擇選擇默認(rèn)狀態(tài)(All modules containing Kotlin files: app),以及Kotlin的版本就即可.
Kotlin version
Ps: 配置完,其實(shí)是在你項(xiàng)目中的build.gradle中添加了Kotlin版本和路徑(不是app->build.gradle)

以及你的
app->build.gradle中添加了Kotlin的依賴(lài)

- 配置完,提示需要同步才能正常工作,此時(shí)需要點(diǎn)擊同步.

- 好了,現(xiàn)在可以運(yùn)行了.
二、Kotlin與Swift對(duì)比學(xué)習(xí).
作為官方主推,勢(shì)必要成為開(kāi)發(fā)的趨勢(shì),筆者認(rèn)為早上車(chē),早體驗(yàn)代碼的簡(jiǎn)潔,同時(shí)也提高了開(kāi)發(fā)效率,對(duì)于Swift可以更進(jìn)一步研究FP和POP,而不是還在因?yàn)橐粋€(gè)property里面的修飾符思考半天.
相比Kotlin,目前版本1.1,有如兩年前的Swift,對(duì)于比Swift開(kāi)源還早的語(yǔ)言,看來(lái)沒(méi)有大財(cái)主也是無(wú)濟(jì)于事啊,之前谷歌與甲骨文的官司,感覺(jué)谷歌也是沒(méi)有辦法,也想加緊更換開(kāi)發(fā)Android的語(yǔ)言,這才導(dǎo)致谷歌宣布Swift的孿生姐妹Kotlin成為主力語(yǔ)言.
對(duì)比學(xué)習(xí)主要也是更直觀的對(duì)比2種語(yǔ)言的書(shū)寫(xiě)方式,以及書(shū)寫(xiě)規(guī)范,方便掌握,也加深對(duì)語(yǔ)言的認(rèn)識(shí).
Kotlin的官方文檔:
http://kotlinlang.org/docs/reference/basic-syntax.html
民間翻譯中文版:
https://huanglizhuo.gitbooks.io/kotlin-in-chinese/Basics/Basic-Types.html
Swift的官方文檔:
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309
以及Kotlin和Swift對(duì)比文檔
http://nilhcem.com/swift-is-like-kotlin/
以下簡(jiǎn)單舉例語(yǔ)法的相似之處,具體開(kāi)發(fā)中涉及到的類(lèi)庫(kù)還要看各家介紹.
- 常量和變量
Swift
let :常量 ,var :變量
var a : Int = 0
a = 1
let b = 2
Kotlin 也支持類(lèi)型推導(dǎo)
val :常量 ,var :變量
var a : Int = 1
a = 2
val b = 1
- 打印Holle world
Swift
print("Hello, world!")
Kotlin
print("Hello, world!") println("Hello, world!") // 和Swift 1.0中使用到的類(lèi)似
- 打印嵌套字符串
區(qū)別在于一個(gè)是,一個(gè)是$,以及大小括號(hào)
Swift
let name = "rambolu"
let age = 25
print("我的名字: \(name), 我的年齡 : \(age) ")
Kotlin
val name = "rambolu"
val age = 25
println("我的名字: ${name}, 我的年齡 ${age} ")
- 數(shù)組 for in循環(huán)
Swift
let arr = ["a", "b", "c", "d"]
for i in 0..<arr.count {
print(" \(i) + \(arr[i])")
}
Kotlin
val arr = arrayOf("a", "b", "c", "d")
val count = arr.count()
for (i in 0..count - 1) {
println("${i} + ${arr[i]}")
}
- 持續(xù)補(bǔ)充
三、后記
- Kotlin的成長(zhǎng)似乎也伴隨著Swift成長(zhǎng),從蘋(píng)果把Swift的開(kāi)源,以及成為主力開(kāi)發(fā)語(yǔ)言至今,蘋(píng)果一直在激進(jìn)般的前行,現(xiàn)在谷歌也把Kotlin成為Android的主力開(kāi)發(fā)語(yǔ)言,瞬間感覺(jué)以后的開(kāi)發(fā)都在降低了開(kāi)發(fā)者的學(xué)習(xí)成本,代碼都更加的簡(jiǎn)潔,方便其他開(kāi)發(fā)者更快捷的開(kāi)發(fā)app應(yīng)用.
- Kotlin團(tuán)隊(duì)也宣稱(chēng) Kotlin 將在 Android Studio 3.0中直接提供,這也意味著開(kāi)發(fā)Android不再需要安裝任何插件和擔(dān)心兼容性的問(wèn)題了.



