另一種JVM程式語言
如果你是一個Android或Java技術開發人員,Groovy、Scala、JRuby或Jython這些JVM Language,或許曾經聽過、看過,甚至已經研究過,不過你可能最後還是回到Java程式語言的懷抱。
Java程式設計語言已經二十幾歲了,如果有人問我「Java是不是一種「好」程式語言?」,我都會這麼回答「只要是可以幫我付帳單和貸款的,都是一種「好」技術」,算是巧妙的迴避問題。因為如果叫我想五個對於Java程式設計語言的形容詞,其中會有三個是比較負面的。如果針對具備三年以上Java程式設計師進行問卷調查,同樣請大家想五個形容詞,不知道會有什麼樣的結果。
Kotlin是一個比較新的JVM程式語言,它是在2011年7月由JetBrains發表的專案,JetBrains是開發工具IntelliJ IDEA的開發商,Android Studio就是以IntelliJ IDEA為基礎的Android官方開發工具。Kotlin v1.0在2016年2月發表,是第一個由JetBrains發佈的Kotlin正式版本。
對我來說,Kotlin跟其它JVM程式語言最大的差異,倒不是架構或語法,而是2017年5月的Google開發人員大會,發佈Android支援Kotlin為官方的程式設計語言。從Android Studio 3開始,開發人員可以直接使用Kotlin開發Android App。
Kotlin FAQ
已經熟悉Java程式設計語言
-
我為什麼要從Java轉換成Kotlin?
這個問題的另外一面,可能是「我花了幾年的時間才完全熟悉Java,現在又要我學另一種程式語言,你最好是給我一個非常好、而且很明確的道理」。雖然這是一個很嚴肅的問題,不過我只能提供自己的幾個想法給你參考:
- 不論是以開發人員或講師的角色來說,Java技術的確是不算簡單的
- 那Kotlin比Java簡單嗎?對我來說,是的
- 同樣功能的程式碼,Kotlin比Java的程式碼清爽多了(官方說最多可以減量40%)
- Kotlin同樣是在JVM運作,Java在這方面的特性Kotlin也有
-
Kotlin可以完全取代Java?
- 開發Android App:是的
- 開發Java應用程式,例如WEB、JavaFX:可以(沒有「是的」那麼肯定)
- Kotlin官方網站說未來還會支援嵌入式、MacOS、iOS
-
Kotlin可以和Java一起運作?
是的。Kotlin可以使用Java程式碼,Java也可以使用Kotlin程式碼。
-
Kotlin和Java的語法很不一樣嗎?
是的。不一樣的程度可以想像成長得有點像的父子或母女。(這其實是廢話,這樣的形容幾乎可以套用在所有不同的程式語言)
-
Kotlin也有Java 8的Lambda(functional programming)?
有。
-
Kotlin採用哪一種授權方式?
Apache Software License, Version 2.0。
-
需要花費多少時間學習Kotlin?
如果選擇一個好的教材,可以很容易把你在Java累積的技能快速轉換到Kotlin。(廣告:例如這個系列專欄就是好的教材,未來可能會出版電子書或實體書)
還不認識Java程式設計語言
-
我想要學習開發Android App,那我應該要先學Java還是Kotlin?
開發Android App使用Java或Kotlin都可以,都是官方正式支援的程式設計語言。你可以從幾個想法去選擇:
- 想要比較快速進入開發Android App的階段:選擇Kotlin
- 以開發Android App為主要的學習目的:選擇Kotlin
- 不知道該怎麼選擇,也沒有任何想法:選擇Kotlin
-
Java跟Kotlin哪一個比較容易學習?
我覺得Kotlin比Java容易學習。我的說法應該算是有說服力的,畢竟我已經當了十年以上的講師,而且以Java與Android課程為主。
-
聽說學會Java以後可以寫很多種程式,Kotlin也可以嗎?
Java程式設計語言可以開發網頁、嵌入式、桌面與Android應用程式,Kotlin也可以。
-
Kotlin程式設計語言有哪些書和學習資源?
目前只有少數幾本英文書,網路的學習資源以Kotlin官方網站為主,也是英文。(廣告:這個系列專欄是學習Kotlin不錯的資源,未來可能會出版電子書或實體書)
-
目前Android App的範例與資源都是用Java寫的,Kotlin也可以使用嗎?
在Android App專案裡面,Kotlin和Java程式碼可以一起使用,也可以互相使用對方寫的程式碼。
建立Kotlin開發環境
開發Kotlin應用程式需要安裝Java SE JDK與開發工具,Kotlin開發環境有下面幾種選擇:
- JetBrains的IntelliJ IDEA
- Eclipse與Kotlin Plugin
- 在終端機編譯與執行
- 使用建置工具,包含常見的Ant、Maven與Gradle
這裡使用的開發工具是IntelliJ IDEA Community,其它方式請參考Kotlin官方網站的說明。
下載與安裝JDK
Kotlin需要Java SE JDK 1.6或更新的版本,如果你的電腦還沒有安裝Java SE JDK,依照下列的步驟下載與安裝,或是參考後面的示範影片:
- 開啟瀏覽器,在網址列輸入這個網址http://www.oracle.com/。
- 將滑鼠游標移到「Downloads」,選擇左側的「Java Developers」。
- 選擇「JDK」的「DOWNLOAD」的下載圖示。
- 進入下載JDK的網頁以後,選擇「Accept License Agreement」,依照你的作業系統版本選擇下載的連結,如果是32位元就選擇「Windows x86」,64位元的話選擇「Windows x64」。
- 儲存下載的檔案,下載完成後執行這個檔案開始安裝的步驟,建議使用預設的安裝路徑,在後續的安裝過程中全部選擇「Next >」。
- 在完成安裝的視窗選擇「Close」。
詳細的操作步驟可以參考下面的示範影片:
下載與安裝IntelliJ IDEA Community
JetBrains提供免費開放版本的IntelliJ IDEA Community,它完整支援Kotlin程式設計語言。依照下面的步驟執行下載與安裝的工作:
- 開啟瀏覽器,在網址列輸入這個網址http://www.jetbrains.com/idea/download/。
-
選擇「Community」的「DOWNLOAD」,儲存與執行下載的安裝程式:
-
啟動安裝程式後,在歡迎畫面選擇「Next>」。
-
在選擇安裝位置(Choose Install Location)畫面選擇「Next>」。
-
在安裝選項(Installation Options)畫面,依照電腦的作業系統,勾選「32-bit launcher」或「64-bit launcher」, 最後選擇「Next>」:
-
在選擇開始功能表(Choose Start Menu Folder)畫面選擇「Install」開始安裝。
-
在完成安裝的畫面,勾選「Run IntelliJ IDEA Community Edition」後選擇「Finish」:
-
安裝程式自動啟動IntelliJ IDEA Community,第一次啟動後在「Complete Installation」對話框選擇「Do not import settings」,最後選擇「OK」:
-
在「Customize IntelliJ IDEA」畫面,選擇開發工具的樣式為「IntelliJ」或「Darcula」,最後選擇「Skil All and Set Defaults」:
-
出現IntelliJ IDEA的主畫面,完成安裝與初始設定:
Hello World!
-
在IntelliJ IDEA的主畫面選擇「Create New Project」:
-
在「New Project」視窗選擇「Java」後,選擇右上角的「New…」:
-
在「Select Home Directory for JDK」視窗,選擇JDK的安裝資料夾後選擇「OK」:
-
回到「New Project」視窗,Project SDK已經設定為上一步驟的選擇:
-
在「New Project」視窗的「Additional Libraries and Frameworks」勾選「Kotlin(Java)」後選擇「Next」:
-
在「Project name」輸入專案名稱,例如「HelloKotlin」,最後選擇「Finish」。
-
在出現「Tip of the Day」對話框,取消「Show Tips on Startup」勾選,再選擇「Close」,以後啟動就不會再出現這個對話框。
-
第一次建立Kotlin專案會花費一些時間執行初始化的工作。
-
完成初始化工作後,在專案的「src」目錄按滑鼠右鍵,選擇「New -> Kotlin File/Class」:
-
在「New Kotlin file/class」對話框的「Name:」輸入程式碼檔案名稱,例如「HelloWorld」,最後選擇「OK」。
-
在新建立的程式碼檔案輸入下面的內容:
fun main(args: Array<String>) {
println("Hello World!")
}
-
用滑鼠游標選擇Kotlin圖示後選擇「Run 'HelloWorld.kt'」,也可以使用快速鍵「Ctrl+Shift+F10」:
-
執行程式以後在畫面下方顯示「Hello World!」:
第一個Kotlin程式碼FAQ
-
不需要宣告類別?
是的。
-
「fun」好像是用來宣告main方法?
是的。Kotlin程式的進入點(Java的main方法),是一個名稱為「main」,參數為「Array、字串陣列」的函式。
-
println為什麼沒有System.out?
其實println是Kotlin定義在Console.kt裡面的函式。
-
敘述的最後面不需要分號(;)?
是的。你也可以加上分號,不過那是多餘的。如果需要在一行執行多個敘述,可以使用分號隔開。例如:
fun main(args: Array<String>) {
println("One"); println("Two")
}
下一步
想要趕快開始寫Kotlin程式?在安裝好開發環境以後,接下來的「10分鐘認識Kotlin」,使用精心挑選的主題,讓你快速認識Kotlin的基本精神。
相關的檔案都可以在GitHub瀏覽與下載。
http://github.com/macdidi5/Kotlin-Tutorial
後續 >> Kotlin Tutorial(2)10分鐘認識Kotlin
|