免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
使用Kotlin開發(fā)Android應用(I):簡介

使用Kotlin開發(fā)Android應用(I):簡介

字數(shù)1980 閱讀376 評論3 喜歡2

使用Kotlin開發(fā)Android應用(I):簡介

@author ASCE1885的 Github 簡書 微博 CSDN
原文鏈接

Kotlin是一門基于JVM的編程語言,它正成長為Android開發(fā)中用于替代Java語言的繼承者。Java是世界上使用最多的編程語言之一,當其他編程語言為更加便于開發(fā)者使用而不斷進化時,Java并沒有像預期那樣及時跟進。

Java缺失的很多特性在最新的修訂版中逐漸覆蓋到了,但Android開發(fā)者暫時還沒能夠使用它們。這就使得類似Kotlin這樣的語言有了用武之地了:在舊的開發(fā)環(huán)境中使用現(xiàn)代語言的特性。

Kotlin是什么?

Kotlin是由JetBrains創(chuàng)建的基于JVM的編程語言,IntelliJ正是JetBrains的杰作,而Android Studio是基于IntelliJ修改而來的。Kotlin是一門包含很多函數(shù)式編程思想的面向對象編程語言。

Kotlin生來就是為了彌補Java缺失的現(xiàn)代語言的特性,并極大的簡化了代碼,使得開發(fā)者可以編寫盡量少的樣板代碼。

為什么要使用Kotlin?

首先我必須聲明我使用Kotlin的時間并不長,我?guī)缀跏沁厡W習邊寫這一系列博客的。我沒有嘗試其他替代語言例如Go或者Scala,因此如果你真的想要切換到另一門語言之前,我建議先搜索其他人是如何評價其他語言的。使用Scala開發(fā)Android的一個很棒的例子可以在47deg的Github上面找到。

下面是我為什么選擇Kotlin進行學習的理由:

  • 相對而言更快的學習曲線:例如相比Scala而言,我們將學得更快。Kotlin限制比較多,但如果你之前沒有使用過現(xiàn)代編程語言,那么使用Kotlin入門會更容易。
  • 輕量級:相比其他編程語言,Kotlin函數(shù)庫更小。由于Android存在65K方法數(shù)限制,這使得這一點更為重要。雖然使用proguard或者打包成多個dex能夠解決這個問題,但是所有這些解決方案都會增加復雜性,并增加調試的時間。Kotlin函數(shù)庫方法數(shù)小于7000個,相當于support-v4的大小。
  • 高度可互操作:Kotlin可以和其他Java類庫很好的并且簡單的互操作。Kotlin團隊在開發(fā)這門新語言時正是秉承了這個中心思想。他們希望可以使用Kotlin繼續(xù)開發(fā)現(xiàn)有的使用Java語言編程的工程,而不是重寫所有代碼。因此Kotlin需要能夠極好的和Java互操作。
  • 完美的集成Android Studio以及Gradle:Kotlin有一個專門用于Android Studio的插件,以及另一個專門用于Gradle的插件,因此在Android工程中開始使用Kotlin并不困難(我將在下一篇文章中進行介紹)。

在你作任何決定之前我推薦先閱讀一篇由Jake Wharton寫的有趣的文章:在Android開發(fā)中使用Kotlin

Kotlin有些什么特性呢?

1. 表達式

使用Kotlin可以很容易避免樣板代碼的編寫,因為語言本身已經(jīng)默認覆蓋了大多數(shù)典型的情況。

例如,在Java中如果要創(chuàng)建一個典型的數(shù)據(jù)模型類,我們需要編寫(或者至少生成)如下代碼:

public class Artist {    private long id;    private String name;    private String url;    private String mbid;    public long getId() {        return id;    }    public void setId(long id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getUrl() {        return url;    }    public void setUrl(String url) {        this.url = url;    }    public String getMbid() {        return mbid;    }    public void setMbid(String mbid) {        this.mbid = mbid;    }    @Override public String toString() {        return "Artist{" +                "id=" + id +                ", name='" + name + '\'' +                ", url='" + url + '\'' +                ", mbid='" + mbid + '\'' +                '}';    }}

如果使用Kotlin編寫呢?如下所示:

data class Artist(    var id: Long,    var name: String,    var url: String,    var mbid: String)

2. 空類型安全

當我們使用Java進行開發(fā)時,大部分代碼都是防守型的。我們需要在使用之前不斷的檢測對象是否為空,如果我們不想在代碼運行時得到非預期的NullPointerException。類似其他很多編程語言,Kotlin是空類型安全的,因此我們需要使用安全調用操作符顯式指明對象是否能夠為空。

我們可以類似這樣聲明:

//This won′t compile. Artist can′t be nullvar notNullArtist: Artist = null//Artist can be nullvar artist: Artist? = null// Won′t compile, artist could be null and we need to deal with thatartist.print()// Will print only if artist != nullartist?.print()// Smart cast. We don′t need to use safe call operator if we previously checked nullityif (artist != null) {    artist.print()}// Only use it when we are sure it′s not null. Will throw an exception otherwise.artist!!.print()// Use Elvis operator to give an alternative in case the object is nullval name = artist?.name ?: "empty"

3. 擴展函數(shù)

我們可以為任何類添加新函數(shù)。相比我們工程中普遍存在的傳統(tǒng)的工具類,擴展函數(shù)更具可讀性。例如,我們可以為fragments添加一個新函數(shù),用于顯示一個toast:

fun Fragment.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT) {    Toast.makeText(getActivity(), message, duration).show()}

然后可以這樣調用:

fragment.toast("Hello world!")

4. 函數(shù)式支持(Lambdas)

每次當我們創(chuàng)建一個新的listener時,都需要聲明一個onClick函數(shù)用于處理監(jiān)聽回調,我們可以直接編寫監(jiān)聽回調的代碼而不用聲明onClick函數(shù)嗎?答案是肯定的。這(包括其他很多有趣的功能)得歸功與lambda表達式的運用:

view.setOnClickListener({ toast("Hello world!") })

目前的限制

譯者注:本小節(jié)所列出的限制,在最新版的Kotlin中已經(jīng)都解決了,僅供讀者目睹Kotlin語言的完善和進化過程。

Kotlin目前還處于開發(fā)階段,雖然已經(jīng)很穩(wěn)定而且最終release版本即將發(fā)布(這個夏天),但在Android開發(fā)中存在如下限制:

  • 與自動生成代碼的可互操作性:一些知名的依賴于自動生成代碼的Android函數(shù)庫,例如Dagger或者Butterknife,由于某些不兼容的命名,因此不能正常的使用。Kotlin團隊正在解決這些問題,將來某一天將會解決(KT-6444)。不管怎么說,就像我將在下一篇文章中說明的,語言的可表達性能夠說服我們不再需要這些函數(shù)庫。

更新:在Kotlin M12已經(jīng)帶來了對注解處理的支持。

  • 沒有簡單的方式聲明自定義views:Kotlin類只能聲明一個構造函數(shù),而自定義views一般都有三個重載構造函數(shù)。當我們在代碼中使用這些自定義views時只有一個構造函數(shù)不存在問題,但如果想在xml文件中使用自定義views,只有一個構造函數(shù)是不夠的。最簡單的解決方法是使用Java聲明這些自定義views類,并在Kotlin中引用它們。Kotlin團隊許諾將在M11發(fā)布版中解決這個問題。

更新:Kotlin M11發(fā)布了并包含了輔助構造函數(shù)。

  • Android工程中的jUnit測試:Android Studio 1.1引入的這個新特性Kotlin暫時還不支持。但純粹的Kotlin工程能夠完全支持Instrumentation測試和jUnit測試。

更新:Kotlin M12的gradle plugin現(xiàn)在支持Android Studio中的單元測試了。

總結

Kotlin是開發(fā)Android app中使用的Java語言的一個有趣的替換者。下一篇文章我們將描述使用Kotlin如何新建一個新工程,并講解如何充分利用Kotlin使Android開發(fā)更容易。敬請關注!

文末攝影鑒賞

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Android 開發(fā)者應該知道的 Kotlin
Android新推出的官方語言Kotlin會取代Java?
Bruce Eckel:我最喜歡Python,Kotlin或將取代Java(附演講全文 PPT)
學Java的顫抖吧!Kotlin成為Android官方開發(fā)語言
kotlin books&video
Kotlin 與 Java有什么區(qū)別(最全最新的)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服