Swift開(kāi)發(fā)者的福音-開(kāi)發(fā)Android,java遷移Kotlin以及Kotlin與Swift對(duì)比學(xué)習(xí).

前言:北京時(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é)一樣,


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:遷移后發(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)

Kotlin的依賴(lài)
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)題了.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容