Android Kotlin 1

一、Kotlin語(yǔ)言簡(jiǎn)介
1、Kotlin是由JetBrains公司開發(fā)與設(shè)計(jì)的,早在2011年,JetBrains就公布了Kotlin的第一個(gè)版本,并在2012年將其開源,但在早期,它并沒(méi)有受到太多的關(guān)注。
2016年,Kotlin發(fā)布了1.0正式版,這代表著Kotlin已經(jīng)足夠成熟和穩(wěn)定了,并且JetBrains也在自家的旗艦IDE開發(fā)工具IntelliJ IDEA中加入了對(duì)Kotlin的支持,自此Android開發(fā)語(yǔ)言終于有了另外一種選擇,Kotlin逐漸受到廣泛的關(guān)注。
2017年Google宣布Kotlin正式成為Android一級(jí)開發(fā)語(yǔ)言,Android Studio也加入了對(duì)Kotlin的支持,Kotlin自此開始大放異彩。
2、看到這里,或許你會(huì)產(chǎn)生一些疑惑:Android操作系統(tǒng)明明是由Google開發(fā)的,為什么JetBrains作為一個(gè)第三方公司,卻能夠自己設(shè)計(jì)出一門編程語(yǔ)言來(lái)開發(fā)Android應(yīng)用程序呢?
想要搞懂這個(gè)問(wèn)題,我們得先來(lái)探究一下Java語(yǔ)言的運(yùn)行機(jī)制。編程語(yǔ)言大致可以分為兩類:編譯型語(yǔ)言和解釋型語(yǔ)言。編譯型語(yǔ)言的特點(diǎn)是編譯器會(huì)將我們編寫的源代碼一次性地編譯成計(jì)算機(jī)可識(shí)別的二進(jìn)制文件,然后計(jì)算機(jī)直接執(zhí)行,像C和C++都屬于編譯型語(yǔ)言。解釋型語(yǔ)言則完全不一樣,它有一個(gè)解釋器,在程序運(yùn)行時(shí),解釋器會(huì)一行行地讀取我們編寫的源代碼,然后實(shí)時(shí)地將這些源代碼解釋成計(jì)算機(jī)可識(shí)別的二進(jìn)制數(shù)據(jù)后再執(zhí)行,因此解釋型語(yǔ)言通常效率會(huì)差一些,像Python和JavaScript都屬于解釋型語(yǔ)言。
3、Java是屬于編譯型語(yǔ)言還是解釋型語(yǔ)言呢?
對(duì)于這個(gè)問(wèn)題,即使是做了很多年Java開發(fā)的人也可能會(huì)答錯(cuò)。有Java編程經(jīng)驗(yàn)的人或許會(huì)說(shuō),Java代碼肯定是要先編譯再運(yùn)行的,初學(xué)Java的時(shí)候都用過(guò)javac這個(gè)編譯命令,因此Java屬于編譯型語(yǔ)言。如果這也是你的答案的話,那么恭喜你,答錯(cuò)了!雖然Java代碼確實(shí)是要先編譯再運(yùn)行的,但是Java代碼編譯之后生成的并不是計(jì)算機(jī)可識(shí)別的二進(jìn)制文件,而是一種特殊的class文件,這種class文件只有Java虛擬機(jī)(Android中叫ART,一種移動(dòng)優(yōu)化版的虛擬機(jī))才能識(shí)別,而這個(gè)Java虛擬機(jī)擔(dān)當(dāng)?shù)钠鋵?shí)就是解釋器的角色,它會(huì)在程序運(yùn)行時(shí)將編譯后的class文件解釋成計(jì)算機(jī)可識(shí)別的二進(jìn)制數(shù)據(jù)后再執(zhí)行,因此,準(zhǔn)確來(lái)講,Java屬于解釋型語(yǔ)言。
了解了Java語(yǔ)言的運(yùn)行機(jī)制之后,其實(shí)Java虛擬機(jī)并不直接和你編寫的Java代碼打交道,而是和編譯之后生成的class文件打交道。那么如果我開發(fā)了一門新的編程語(yǔ)言,然后自己做了個(gè)編譯器,讓它將這門新語(yǔ)言的代碼編譯成同樣規(guī)格的class文件,Java虛擬機(jī)能不能識(shí)別呢?沒(méi)錯(cuò),這其實(shí)就是Kotlin的工作原理了。Java虛擬機(jī)不關(guān)心class文件是從Java編譯來(lái)的,還是從Kotlin編譯來(lái)的,只要是符合規(guī)格的class文件,它都能識(shí)別。也正是這個(gè)原因,JetBrains才能以一個(gè)第三方公司的身份設(shè)計(jì)出一門用來(lái)開發(fā)Android應(yīng)用程序的編程語(yǔ)言。
二、Kotlin優(yōu)點(diǎn)
Kotlin的語(yǔ)法更加簡(jiǎn)潔,對(duì)于同樣的功能,使用Kotlin開發(fā)的代碼量可能會(huì)比使用Java開發(fā)的減少50% 甚至更多。另外,Kotlin的語(yǔ)法更加高級(jí),相比于Java比較老舊的語(yǔ)法,Kotlin增加了很多現(xiàn)代高級(jí)語(yǔ)言的語(yǔ)法特性,使得開發(fā)效率大大提升。還有,Kotlin在語(yǔ)言安全性方面下了很多工夫,幾乎杜絕了空指針這個(gè)全球崩潰率最高的異常,至于是如何做到的,我們?cè)谏院缶蜁?huì)學(xué)到。然而Kotlin在擁有眾多出色的特性之外,還有一個(gè)最為重要的特性,那就是它和Java是100%兼容的。Kotlin可以直接調(diào)用使用Java編寫的代碼,也可以無(wú)縫使用Java第三方的開源庫(kù)。這使得Kotlin在加入了諸多新特性的同時(shí),還繼承了Java的全部財(cái)富。
三、Kotlin的基礎(chǔ)使用
1、Kotlin的運(yùn)行方式
Kotlin運(yùn)行方法大概有以下3種
第一種方法是使用IntelliJ IDEA。這是JetBrains的旗艦IDE開發(fā)工具,對(duì)Kotlin支持得非常好。在IntelliJ IDEA里直接創(chuàng)建一個(gè)Kotlin項(xiàng)目,就可以獨(dú)立運(yùn)行Kotlin代碼了。但是這種方法的缺點(diǎn)是你還要再下載安裝一個(gè)IDE工具,有點(diǎn)麻煩,因此這里我們就不使用這種方法了。
第二種方法是在線運(yùn)行Kotlin代碼。為了方便開發(fā)者快速體驗(yàn)Kotlin編程,JetBrains專門提供了一個(gè)可以在線運(yùn)行Kotlin代碼的網(wǎng)站,地址是:https://play.kotlinlang.org,打開網(wǎng)站之后的頁(yè)面如圖1所示:

1.png

只要點(diǎn)擊一下右上方的“Run”按鈕就可以運(yùn)行這段Kotlin代碼了,非常簡(jiǎn)單。但是在線運(yùn)行Kotlin代碼有一個(gè)很大的缺點(diǎn),就是使用國(guó)內(nèi)的網(wǎng)絡(luò)訪問(wèn)這個(gè)網(wǎng)站特別慢,而且經(jīng)常打不開,而且沒(méi)有語(yǔ)法排查功能和提示功能,不推薦使用。
第三種方法是使用Android Studio。遺憾的是,Android Studio作為一個(gè)專門用于開發(fā)Android應(yīng)用程序的工具,只能創(chuàng)建Android項(xiàng)目,不能創(chuàng)建Kotlin項(xiàng)目。但是沒(méi)有關(guān)系,我們可以隨便打開一個(gè)Android項(xiàng)目,在里面編寫一個(gè)Kotlin的main()函數(shù),就可以獨(dú)立運(yùn)行Kotlin代碼了,如圖2所示:
2.jpg

在MainActivity的同級(jí)包結(jié)構(gòu)下創(chuàng)建一個(gè)LearnKotlin文件。右擊com.example.helloworld包→New→Kotlin File/Class,選擇File,在彈出的對(duì)話框中輸入“Student”,如圖3所示。點(diǎn)擊“OK”即可完成創(chuàng)建。
3.jpg

接下來(lái),我們?cè)谶@個(gè)Student文件中編寫一個(gè)main()函數(shù),并打印一行日志,如圖4所示:
4.png

你會(huì)發(fā)現(xiàn),main()函數(shù)的左邊出現(xiàn)了一個(gè)運(yùn)行標(biāo)志的小箭頭?,F(xiàn)在我們只要點(diǎn)擊一下這個(gè)小箭頭,并且選擇第一個(gè)Run選項(xiàng),就可以運(yùn)行這段Kotlin代碼了。運(yùn)行結(jié)果會(huì)在Android Studio下方的Run標(biāo)簽中顯示,如圖5所示:報(bào)錯(cuò),因?yàn)橐贏S里配置Kotlin相關(guān)的插件才行
5.png

(1)在APP摸塊Build.gradle:添加如下引用
6.png

在android模塊里面引用
7.png

(2)在項(xiàng)目級(jí)模塊Build.gradle:添加如下引用
8.png

添加完上面的配置同步或重啟AS就可以正常使用Kotlin語(yǔ)文編程了。如圖所示:
9.png

最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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