前言:北京時間的17日23點,谷歌一年一度的I/O開發者大會召開.就在這第一天,谷歌安卓團隊大會上宣布Kotlin成為Android的主力開發語言,其實在之前這個語言就已經支持了安卓平台開發,但是直到今天谷歌開發者大會上才宣布對該語言的全面支持和維護,至此之後代碼將更加簡潔.
最近項目上線,CTO說閑暇之餘學習下安卓,無奈重新啃java的語法,這是多麼痛的領悟,可是一覺醒來,萬物復蘇.
作為熱衷Swift的iOS開發者,看到Kotlin語法是多麼的熟悉.23333.

一、Kotlin的遷移.

1、安裝一個Kotlin的插件.

Ps:使用Android Studio開發安卓.聽說Android Studio 3.0 預覽版已支持 Kotlin了,就可以跳過這一步了.

  • Android Studio -> Preferences -> Plugins
  • 選擇Browse Repositories

    選擇Browse Repositories
  • 搜索Kotlin

    搜索Kotlin
  • 根據提示重啟Android Studio即可.

2、java文件遷移Kotlin

Kotlin插件提供了遷移入口, jetbrains真是良心賣家啊.

  • 打開你的Activity,
  • 選擇 code -> Convert Java File to Kotlin File

Ps:和Swift遷移感覺一樣,


Paste_Image.png

原本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:遷移后發現眼前的畫面似曾相識…

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)
    }
}

對比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.
    }
}
  • 感覺當你寫慣了swift后,在書寫方式上稍微熟悉下可以無縫切入Kotlin.至於android的類庫還需要再進一步的學習.
  • 同時Kotlin和java也可以進行混編(有點類似OC和Swift混編),Kotlin可以調用java的類庫,同時java也可以調用Kotlin.

3、配置Kotlin.

  • 當你轉移后,再次打開Activity,IDE會提醒你Kotlin not configured.此時需要點擊右面的configure.


    Configure
  • 點擊後會提醒項目配置Kotlin,是選擇選擇默認狀態(All modules containing Kotlin files: app),以及Kotlin的版本就即可.


    Kotlin version

    Ps: 配置完,其實是在你項目中的build.gradle中添加了Kotlin版本和路徑(不是app->build.gradle)


版本和路徑

以及你的app->build.gradle中添加了Kotlin的依賴


Kotlin的依賴
  • 配置完,提示需要同步才能正常工作,此時需要點擊同步.

同步
  • 好了,現在可以運行了.

二、Kotlin與Swift對比學習.

  • 作為官方主推,勢必要成為開發的趨勢,筆者認為早上車,早體驗代碼的簡潔,同時也提高了開發效率,對於Swift可以更進一步研究FP和POP,而不是還在因為一個property裏面的修飾符思考半天.

  • 相比Kotlin,目前版本1.1,有如兩年前的Swift,對於比Swift開源還早的語言,看來沒有大財主也是無濟於事啊,之前谷歌與甲骨文的官司,感覺谷歌也是沒有辦法,也想加緊更換開發Android的語言,這才導致谷歌宣布Swift的孿生姐妹Kotlin成為主力語言.

  • 對比學習主要也是更直觀的對比2種語言的書寫方式,以及書寫規範,方便掌握,也加深對語言的認識.

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對比文檔
http://nilhcem.com/swift-is-like-kotlin/
以下簡單舉例語法的相似之處,具體開發中涉及到的類庫還要看各家介紹.

  • 常量和變量
Swift
let :常量  ,var :變量
var a :  Int = 0   
a = 1
let b = 2
Kotlin 也支持類型推導
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中使用到的類似
  • 打印嵌套字符串
    區別在於一個是\,一個是$,以及大小括號
Swift
let name = "rambolu"
let age = 25
print("我的名字: \(name), 我的年齡 : \(age) ")
Kotlin
val name = "rambolu"
val age = 25
println("我的名字: ${name}, 我的年齡 ${age} ")
  • 數組 for in循環
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]}")
}
  • 持續補充

三、後記

  • Kotlin的成長似乎也伴隨着Swift成長,從蘋果把Swift的開源,以及成為主力開發語言至今,蘋果一直在激進般的前行,現在谷歌也把Kotlin成為Android的主力開發語言,瞬間感覺以後的開發都在降低了開發者的學習成本,代碼都更加的簡潔,方便其他開發者更快捷的開發app應用.
  • Kotlin團隊也宣稱 Kotlin 將在 Android Studio 3.0中直接提供,這也意味着開發Android不再需要安裝任何插件和擔心兼容性的問題了.


分享