一珠增、Kotlin語(yǔ)言簡(jiǎn)介
1、Kotlin是由JetBrains公司開(kāi)發(fā)與設(shè)計(jì)的砍艾,早在2011年蒂教,JetBrains就公布了Kotlin的第一個(gè)版本,并在2012年將其開(kāi)源脆荷,但在早期凝垛,它并沒(méi)有受到太多的關(guān)注懊悯。
2016年,Kotlin發(fā)布了1.0正式版梦皮,這代表著Kotlin已經(jīng)足夠成熟和穩(wěn)定了炭分,并且JetBrains也在自家的旗艦IDE開(kāi)發(fā)工具IntelliJ IDEA中加入了對(duì)Kotlin的支持,自此Android開(kāi)發(fā)語(yǔ)言終于有了另外一種選擇剑肯,Kotlin逐漸受到廣泛的關(guān)注捧毛。
2017年Google宣布Kotlin正式成為Android一級(jí)開(kāi)發(fā)語(yǔ)言,Android Studio也加入了對(duì)Kotlin的支持让网,Kotlin自此開(kāi)始大放異彩呀忧。
2、看到這里寂祥,或許你會(huì)產(chǎn)生一些疑惑:Android操作系統(tǒng)明明是由Google開(kāi)發(fā)的,為什么JetBrains作為一個(gè)第三方公司丸凭,卻能夠自己設(shè)計(jì)出一門編程語(yǔ)言來(lái)開(kā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開(kāi)發(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文件打交道顷级。那么如果我開(kāi)發(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)開(kāi)發(fā)Android應(yīng)用程序的編程語(yǔ)言控硼。
二、Kotlin優(yōu)點(diǎn)
Kotlin的語(yǔ)法更加簡(jiǎn)潔艾少,對(duì)于同樣的功能象颖,使用Kotlin開(kāi)發(fā)的代碼量可能會(huì)比使用Java開(kāi)發(fā)的減少50% 甚至更多。另外姆钉,Kotlin的語(yǔ)法更加高級(jí),相比于Java比較老舊的語(yǔ)法抄瓦,Kotlin增加了很多現(xiàn)代高級(jí)語(yǔ)言的語(yǔ)法特性潮瓶,使得開(kāi)發(fā)效率大大提升。還有钙姊,Kotlin在語(yǔ)言安全性方面下了很多工夫毯辅,幾乎杜絕了空指針這個(gè)全球崩潰率最高的異常,至于是如何做到的煞额,我們?cè)谏院缶蜁?huì)學(xué)到思恐。然而Kotlin在擁有眾多出色的特性之外沾谜,還有一個(gè)最為重要的特性,那就是它和Java是100%兼容的胀莹。Kotlin可以直接調(diào)用使用Java編寫的代碼基跑,也可以無(wú)縫使用Java第三方的開(kāi)源庫(kù)。這使得Kotlin在加入了諸多新特性的同時(shí)描焰,還繼承了Java的全部財(cái)富媳否。
三、Kotlin的基礎(chǔ)使用
1荆秦、Kotlin的運(yùn)行方式
Kotlin運(yùn)行方法大概有以下3種
第一種方法是使用IntelliJ IDEA篱竭。這是JetBrains的旗艦IDE開(kāi)發(fā)工具,對(duì)Kotlin支持得非常好步绸。在IntelliJ IDEA里直接創(chuàng)建一個(gè)Kotlin項(xiàng)目掺逼,就可以獨(dú)立運(yùn)行Kotlin代碼了。但是這種方法的缺點(diǎn)是你還要再下載安裝一個(gè)IDE工具瓤介,有點(diǎn)麻煩吕喘,因此這里我們就不使用這種方法了。
第二種方法是在線運(yùn)行Kotlin代碼惑朦。為了方便開(kāi)發(fā)者快速體驗(yàn)Kotlin編程兽泄,JetBrains專門提供了一個(gè)可以在線運(yùn)行Kotlin代碼的網(wǎng)站,地址是:https://play.kotlinlang.org漾月,打開(kāi)網(wǎng)站之后的頁(yè)面如圖1所示:
只要點(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)常打不開(kāi),而且沒(méi)有語(yǔ)法排查功能和提示功能吩蔑,不推薦使用钮热。
第三種方法是使用Android Studio。遺憾的是烛芬,Android Studio作為一個(gè)專門用于開(kāi)發(fā)Android應(yīng)用程序的工具隧期,只能創(chuàng)建Android項(xiàng)目,不能創(chuàng)建Kotlin項(xiàng)目赘娄。但是沒(méi)有關(guān)系仆潮,我們可以隨便打開(kāi)一個(gè)Android項(xiàng)目,在里面編寫一個(gè)Kotlin的main()函數(shù)遣臼,就可以獨(dú)立運(yùn)行Kotlin代碼了性置,如圖2所示:
在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)建。
接下來(lái)隐砸,我們?cè)谶@個(gè)Student文件中編寫一個(gè)main()函數(shù)之碗,并打印一行日志,如圖4所示:
你會(huì)發(fā)現(xiàn)凰萨,main()函數(shù)的左邊出現(xiàn)了一個(gè)運(yùn)行標(biāo)志的小箭頭〖炭兀現(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)的插件才行
(1)在APP摸塊Build.gradle:添加如下引用
在android模塊里面引用
(2)在項(xiàng)目級(jí)模塊Build.gradle:添加如下引用
添加完上面的配置同步或重啟AS就可以正常使用Kotlin語(yǔ)文編程了冶忱。如圖所示: