Kotlin應用開發初體驗

本文 摘自《Kotlin編程權威指南》html

本章,你將學習使用IntelliJ IDEA開發首個Kotlin應用。藉此,你將熟悉開發環境,建立Kotlin新項目,編寫並運行Kotlin代碼,以及查看輸出結果。本章建立的是一個沙盒項目,可供你演練代碼,以學習理解本書中的各類新概念。java

1.1 安裝IntelliJ IDEA

IntelliJ IDEA是一套Kotlin集成開發環境。JetBrains公司建立了Kotlin語言並打造出了這套開發工具。開始學習前,請先訪問JetBrains公司網站www.jetbrains.com/idea/downlo…,下載IntelliJ IDEA社區開發版軟件(見圖1-1)。編程

圖1-1 下載IntelliJ IDEA社區開發版軟件api

下載完畢後,請參考www.jetbrains.com/help/idea/i…網頁,完成對應平臺IntelliJ IDEA開發工具的安裝與配置。oracle

IntelliJ IDEA簡稱IntelliJ,能幫助開發者編寫風格良好的Kotlin代碼。利用其內建工具,運行、調試、檢查以及重構代碼的整個開發過程能無縫銜接,一鼓作氣。有鑑於此,咱們推薦使用IntelliJ作Kotlin開發。若想進一步瞭解使用IntelliJ作Kotlin開發的理由,請閱讀1.4節。jvm

1.2 第一個Kotlin項目

恭喜你,Kotlin語言及強大的開發環境都有了,接下來只剩一件事要作:學會流暢運用Kotlin語言。做爲首個練手任務,咱們來建立一個Kotlin項目。編程語言

啓動IntelliJ。如圖1-2所示,映入眼簾的是IntelliJ IDEA的歡迎界面。編輯器

圖1-2 歡迎界面ide

(若非首次安裝使用,IntelliJ會直接打開上一個項目。要回到歡迎界面,選擇File → Close Project關閉項目便可。)函數

單擊Create New Project選項,會看到如圖1-3所示的建立新項目對話框。

圖1-3 建立新項目對話框

在建立新項目對話框中,選擇左側的Kotlin選項,而後選擇右邊出現的Kotlin/JVM選項,結果如圖1-4所示。

圖1-4 建立一個Kotlin/JVM項目

除了Kotlin,IntelliJ還支持Java、Python、Scala以及Groovy等其餘編程語言。選擇Kotlin/JVM就是告訴IntelliJ你要用Kotlin編程。更確切地講,就是要編寫面向而且在Java虛擬機上運行的Kotlin代碼。順便提一下,Kotlin還有個優點:內置的工具鏈支持編寫能在不一樣操做系統和平臺上運行的Kotlin代碼。

(從如今起,提到Java虛擬機,本書都以Java開發社區經常使用的JVM來替代。1.5節還會介紹更多有關面向JVM的知識。)

單擊Next按鈕繼續。你會看到新項目設置界面,如圖1-5所示。輸入「Sandbox」做爲項目名稱,IntelliJ會自動給出默認項目路徑。若有須要,能夠單擊右側的…按鈕自定義項目路徑。在Project SDK的下拉框中點選Java 1.8,這樣,新項目就關聯上了JDK 8。

圖1-5 給新項目命名

你可能會問,編寫Kotlin程序爲何須要JDK?答案就是,爲了把Kotlin代碼轉譯爲字節碼(稍後詳述),IntelliJ須要JDK提供JVM和Java工具。理論上講,JDK 6及其後的版本都能用,可是經驗代表,至本書撰稿之時,仍是JDK 8用起來更順暢。

若是在Project SDK下拉框裏看不到Java 1.8,說明你尚未安裝過JDK 8。繼續學習以前,請先訪問www.oracle.com/technetwork…,下載相應平臺的安裝包完成安裝,而後重啓IntelliJ使其生效。最後,按照前述步驟從頭開始建立新項目。

言歸正傳,確認新項目設置如圖1-5所示,而後單擊Finish按鈕。

如圖1-6所示,IntelliJ隨即建立一個名爲Sandbox的新項目,並在默認的雙面板視圖裏顯示出來。反映在硬盤上,IntelliJ會在項目指定路徑建立一個文件夾、一系列子文件夾以及對應的項目文件。

圖1-6 默認的雙面板視圖

圖1-6中,左面板顯示的是項目工具窗口。右面板如今空着。待會你會看到,這裏會顯示編輯器窗口,供你查看和編輯Kotlin代碼文件。先來看左邊的項目工具窗口。單擊項目名稱Sandbox左側的展開箭頭,能夠展示項目包含的文件,如圖1-7所示。

圖1-7 項目視圖

在IntelliJ中,項目既包含咱們應用的全部源代碼,也包含有相關的依賴和配置信息。項目能夠分紅一個或多個相似於子項目的模塊。新建項目默認含有一個模塊,對於簡單的Kotlin項目來講,一個就夠了。

如圖1-7所示,Sandbox.iml文件包含項目模塊的配置信息。.idea文件夾存放整個項目的設置文件,以及用戶在IDE中和項目交互相關的設置文件(例如,當前編輯器打開了哪一個文件)。上述文件都是系統自動生成的,如今不用管它們。

External Libraries項包含項目依賴庫的信息。單擊展開該項,能夠看到,IntelliJ已自動爲項目添加了Java 1.8以及KotlinJavaRuntime依賴庫。

(想了解更多有關IntelliJ項目結構的知識,請訪問JetBrains文檔網址:www.jetbrains.org/intellij/sd…。)

src文件夾用來存放爲Sandbox項目建立的全部Kotlin代碼文件。好了,是時候來建立並編輯首個Kotlin代碼文件了。

1.2.1 建立首個Kotlin文件

在項目工具窗口中,右擊src文件夾。如圖1-8所示,在彈出的菜單中,依次選擇New和Kotlin File/Class菜單項。

圖1-8 新建一個Kotlin文件

在New Kotlin File/Class對話框中,在Name處輸入文件名「Hello」,保持Kind處的File選項不變(見圖1-9)。

圖1-9 給Kotlin文件命名

單擊OK按鈕確認。如圖1-10所示,IntelliJ隨即新建了src/Hello.kt這樣一個項目文件,同時在IntelliJ右邊窗口的編輯器裏打開該文件。咱們知道,.java後綴用於Java文件,.py後綴用於Python文件,一樣,.kt後綴說明新建文件存放着Kotlin代碼。

圖1-10 編輯器中的Hello.kt空文件

如今,能夠開始編寫Kotlin代碼了。在Hello.kt編輯器中,動動手,輸入代碼清單1-1所示的代碼。(注意,本書中全部須要讀者輸入的代碼都顯示爲粗體。)

代碼清單1-1 「Hello,World!」Kotlin語言版(Hello.kt)

fun main(args: Array<String>) {
    println("Hello, world!")
}

不太明白剛剛輸入的代碼?不要擔憂,學完本書,你必定能天然、流利地讀寫Kotlin代碼。如今只要大體知道是輸出「Hello,World!」字符串就能夠了。

代碼清單1-1中的代碼定義了一個main函數。函數實際就是一組能夠稍後運行的代碼指令。咱們將在第4章中具體學習如何定義並使用函數。

對於Kotlin語言來說,main函數有特別的意義。它是應用程序開始啓動的地方,又稱爲應用程序入口點。Sandbox或任何應用程序要能運行,都必須定義這樣的入口點。本書編寫的全部應用程序都從main函數開始啓動。

上述代碼中的main函數僅包含一條指令(也叫語句):println("Hello, world!")println()也是個函數,內置於Kotlin標準庫中。Sandbox應用程序一旦運行,println("Hello, world!")就會執行,IntelliJ隨即在屏幕上輸出圓括號中的Hello, world!字符串。

1.2.2 運行Kotlin文件

如圖1-11所示,一旦輸入完代碼清單1-1中的代碼,在第一行代碼左側,會出現一個綠色的運行按鈕 {%}。(若是綠色運行按鈕沒出現,或者Hello.kt文件名或某段代碼下方被打上了紅色波浪線,則說明代碼有誤,請對照代碼清單1-1仔細覈對修改。另外,若是看到Kotlin的紅藍K標誌也沒問題,它至關於運行按鈕。)

圖1-11 運行按鈕

代碼無誤的話,Hello, world!應用程序就能夠運行了。如圖1-12所示,單擊運行按鈕,選擇Run ‘HelloKt’菜單項。這至關於告訴IntelliJ,你想看着應用程序運行起來。

圖1-12 運行Hello.kt文件

應用程序運行時,IntelliJ就一行一行執行花括號({})裏的代碼,同時在IDE界面底部顯示兩個新工具窗口,如圖1-13所示。

圖1-13 運行和事件日誌工具窗口

圖1-13中,左邊是運行工具窗口,又叫控制檯(後續都這樣稱呼)。控制檯顯示IntelliJ執行應用程序時產生的各類信息,也包括應用程序自己的輸出。就本例來講,你會看到控制檯顯示Hello, world!字符串,還會看到標誌應用程序成功執行的語句:Process finished with exit code 0。這條語句會出如今控制檯各類輸出信息的最後。你知道就好,本書後續截圖將再也不包括此信息。

(macOS用戶可能會看到紅色的錯誤文本,指出JavaLauncherHelper有問題,如圖1-13所示。不要擔憂。這是在macOS上安裝Java運行時環境的方式所帶來的反作用。要想移除它得費一番工夫,不過這個問題並無什麼影響,因此你大可忽略它,繼續操做。)

圖1-13中,右邊是事件日誌工具窗口。該窗口顯示IntelliJ爲應用程序執行所作工做的相關信息。顯然,控制檯纔是咱們要關心的地方,因此事件日誌窗口後續不會再提起。(同理,你也不用管事件日誌窗口在應用程序運行時是否打開。)要關閉事件日誌窗口,單擊右上角的隱藏按鈕 {%} 便可。

編譯並運行Kotlin代碼

從點選Run ‘HelloKt’菜單項至控制檯輸出Hello, World!結果只需很短的時間,但後臺實際已忙活了很多事。

首先,IntelliJ使用kotlinc-jvm編譯器編譯Kotlin代碼。具體來說,就是把Kotlin代碼轉換爲JVM語言:字節碼。轉換過程當中,若有問題,kotlinc-jvm會報錯並給出排錯提示;一切順利的話,IntelliJ就進入執行階段。

在執行階段,kotlinc-jvm生成的字節碼會在JVM上執行。控制檯隨後會打印程序輸出,例如,在JVM一條條執行指令時,調用println()函數會輸出傳入其中的文字。

字節碼指令執行完畢後,JVM隨即終止。IntelliJ在控制檯顯示終止狀態,告訴用戶執行成功完成或是有錯並給出錯誤碼。

第2章會深刻探討字節碼的相關知識,不過,這裏要說的是,即便不能徹底理解Kotlin的編譯過程,也不妨礙你閱讀本書。

1.3 Kotlin REPL

就像拿張稿紙就某個計算一步步演算那樣,有時候,你可能須要測試一小段Kotlin代碼,看看運行結果如何。這在學習Kotlin語言時很是有用。幸運的是,IntelliJ就提供了這種工具,可以實現無須建立文件就快速測試代碼。該工具叫做Kotlin REPL。稍後會解釋REPL的含義,如今先打開它,看看能用它作些什麼。

如圖1-14所示,在IntelliJ中,選擇Tools → Kotlin → Kotlin REPL打開Kotlin REPL工具窗口。

圖1-14 打開Kotlin REPL工具窗口

如圖1-15所示,IntelliJ會在底部顯示REPL窗口。

圖1-15 Kotlin REPL工具窗口

你能夠在裏面輸入代碼,就像使用代碼編輯器同樣,但有一點不一樣:REPL不用編譯整個項目,就能當即給出結果。

在REPL中輸入代碼清單1-2所示的代碼。

代碼清單1-2 「Hello, Kotlin!」(REPL)

println("Hello, Kotlin!")

輸入完成後,按Command-Return(Ctrl-Return)組合鍵在REPL中執行代碼。如圖1-16所示,很快,你就會在下面看到Hello, Kotlin!輸出結果。

圖1-16 執行代碼

REPL是英文單詞read(讀取)、evaluate(求值)、print(輸出)和loop(循環)的首字母縮寫。整個運轉流程以下:在提示符下輸入一段代碼,而後單擊REPL左側的綠色運行按鈕或按Command-Return(Ctrl-Return)組合鍵提交。REPL讀取代碼,代碼求值(運行代碼),輸出結果或反作用結果。運行完畢,REPL交回控制權,循環再次開始。

Kotlin之旅已然啓航!你在本章學了很多內容,已爲進一步掌握Kotlin編程打下基礎。下一章,你將開始探索Kotlin語言的細節,學習如何使用變量、常量以及各類數據類型。

1.4 深刻學習:爲何要用IntelliJ

任何文本編輯器均可以用來編寫Kotlin代碼,不過,咱們推薦使用IntelliJ,尤爲是在學習這門語言的時候。如同憑藉文字處理軟件的拼寫和語法檢查功能,能更輕鬆地寫出規範的文章同樣,IntelliJ也更便於編寫規範的Kotlin代碼。這主要體如今如下幾個方面。

  • 藉助語法高亮、內容提示和代碼自動補全等功能,你能夠編寫出語法和語義正確的代碼。
  • 藉助應用程序運行時的斷點調試和實時代碼步進,你能夠邊運行邊調試代碼。
  • 藉助重構快捷命令(如重命名、導出常量)以及清理縮進和空行的代碼格式化功能,你能夠重構現有代碼。

並且,因爲Kotlin和IntelliJ都出自JetBrains公司,它們之間的集成設計更爲細緻周全,爲用戶帶來了愉快的開發體驗。另外,Android Studio基於IntelliJ開發,因此使用IntelliJ時學會的快捷操做和工具均可以直接運用。

1.5 深刻學習:面向JVM

JVM本質上是個軟件,它知道如何執行字節碼指令。「面向JVM」就是把Kotlin代碼編譯或轉譯成Java字節碼,以實如今JVM上運行,如圖1-17所示。

圖1-17 編譯和執行流程

Windows平臺也好,macOS平臺也罷,它們都有各自的指令集。JVM搭起了字節碼與不一樣軟硬件平臺間的橋樑,讀取字節碼並調用平臺特有的與之匹配的指令。顯然,不一樣軟硬件平臺有不一樣版本的JVM。這樣一來,Kotlin開發人員就能夠編寫平臺獨立的程序代碼,不管什麼系統平臺,均可實現一次編寫,而後編譯成字節碼,在不一樣設備上執行。

既然能轉換成JVM能夠執行的字節碼,Kotlin也就是JVM語言。做爲首門JVM語言,Java最爲知名。在後來者,如Scala和Kotlin語言中,開發人員揚長避短,已消除了「前輩」Java的一些弊端。

不過,Kotlin並未侷限於JVM。本書撰寫之際,Kotlin已能編譯成JavaScript,甚至能脫離虛擬機層,直接編譯成能夠在Windows、Linux和macOS平臺上運行的原生二進制代碼。

1.6 挑戰練習:使用REPL研究Kotlin中的算數運算符

本書不少章最後都配有挑戰練習。請獨立完成它們,以加深對Kotlin語言的理解,積累更多經驗。

使用REPL研究Kotlin中的+-*/以及%這些算數運算符是如何工做的。例如,在REPL中,嘗試輸入(9+12)*2。結果符合預期嗎?

還想深刻研究的話,能夠看看kotlinlang.org/api/latest/…網頁列出的Kotlin標準庫裏的數學函數,在REPL裏作作演練。例如,試試minOf (94, -99),求出最小值。

相關文章
相關標籤/搜索