第二章 快速開始:HelloWorld
使用云端在線IDE學(xué)習(xí)Kotlin
我們不需要搭建任何環(huán)境鬓椭,只要有一臺能聯(lián)網(wǎng)的設(shè)備,打開瀏覽器訪問:
你就可以盡情享受Kotlin的樂趣了洛巢。
使用本地命令行環(huán)境編譯執(zhí)行Kotlin代碼
當(dāng)然,我們也可以搭建本地環(huán)境次兆,編譯執(zhí)行kotlin代碼稿茉。
程序的本質(zhì)就是映射(函數(shù))。比如說kotlinc這個程序芥炭,我們知道漓库,Kotlin基于Java虛擬機(jī)(JVM),通過Kotlinc編譯器生成的JVM字節(jié)碼與Java編譯的字節(jié)碼基本相同园蝠,也因此與Java可以完全兼容渺蒿,并且語法更加簡潔。
Downloading the compiler
Every release ships with a standalone version of the compiler. We can download it from [GitHub Releases]({{ site.data.releases.latest.url }}). The latest release is {{ site.data.releases.latest.version }}.
Manual Install
Unzip the standalone compiler into a directory and optionally add the bin
directory to the system path. The bin
directory contains the scripts needed to compile and run Kotlin on Windows, OS X and Linux.
SDKMAN!
An easier way to install Kotlin on UNIX based systems such as OS X, Linux, Cygwin, FreeBSD and Solaris is by using SDKMAN!.
Simply run the following in a terminal and follow any instructions:
$ curl -s https://get.sdkman.io | bash
Next open a new terminal and install Kotlin with:
$ sdk install kotlin
Homebrew
Alternatively, on OS X you can install the compiler via Homebrew.
$ brew update
$ brew install kotlin
MacPorts
If you're a MacPorts user, you can install the compiler with:
$ sudo port install kotlin
Creating and running a first application
-
Create a simple application in Kotlin that displays Hello, World!. Using our favorite editor, we create a new file called hello.kt with the following:
fun main(args: Array<String>) { println("Hello, World!") }
-
Compile the application using the Kotlin compiler
$ kotlinc hello.kt -include-runtime -d hello.jar
The
-d
option indicates what we want the output of the compiler to be called and may be either a directory name for class files or a .jar file name. The-include-runtime
option makes the resulting .jar file self-contained and runnable by including the Kotlin runtime library in it.
If you want to see all available options run$ kotlinc -help
-
Run the application.
$ java -jar hello.jar
Compiling a library
If you're developing a library to be used by other Kotlin applications, you can produce the .jar file without including the Kotlin runtime into it.
$ kotlinc hello.kt -d hello.jar
Since binaries compiled this way depend on the Kotlin runtime you should make sure the latter is present in the classpath whenever your compiled library is used.
You can also use the kotlin
script to run binaries produced by the Kotlin compiler:
$ kotlin -classpath hello.jar HelloKt
HelloKt
is the main class name that the Kotlin compiler generates for the file named hello.kt
.
Running the REPL
We can run the compiler without parameters to have an interactive shell. We can type any valid Kotlin code and see the results.
[圖片上傳失敗...(image-82eb40-1541525953222)]}})
Using the command line to run scripts
Kotlin can also be used as a scripting language. A script is a Kotlin source file (.kts) with top level executable code.
import java.io.File
val folders = File(args[0]).listFiles { file -> file.isDirectory() }
folders?.forEach { folder -> println(folder) }
To run a script, we just pass the -script
option to the compiler with the corresponding script file.
$ kotlinc -script list_folders.kts <path_to_folder_to_inspect>
使用 Intelli IDEA開發(fā)Kotlin程序
Kotlin是JVM上的語言彪薛,運行環(huán)境需要JDK環(huán)境茂装。如果我們學(xué)習(xí)Kotlin,就不建議使用eclipse了善延。畢竟Kotlin是JetBrains家族的親兒子少态,跟Intelli IDEA是血濃于水啊。
我們使用IDEA新建gradle項目易遣,選擇Java况增,Kotlin(Java)框架支持,如下圖:
新建完項目训挡,我們寫一個HelloWorld.kt類
package com.easy.kotlin
/**
* Created by jack on 2017/5/29.
*/
import java.util.Date
import java.text.SimpleDateFormat
fun main(args: Array<String>) {
println("Hello, world!")
println(SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(Date()))
}
整體的項目目錄結(jié)構(gòu)如下
.
├── README.md
├── build
│ ├── classes
│ │ └── main
│ │ ├── META-INF
│ │ │ └── easykotlin_main.kotlin_module
│ │ └── com
│ │ └── easy
│ │ └── kotlin
│ │ └── HelloWorldKt.class
│ └── kotlin-build
│ └── caches
│ └── version.txt
├── build.gradle
├── settings.gradle
└── src
├── main
│ ├── java
│ ├── kotlin
│ │ └── com
│ │ └── easy
│ │ └── kotlin
│ │ └── HelloWorld.kt
│ └── resources
└── test
├── java
├── kotlin
└── resources
21 directories, 7 files
直接運行HelloWorld.kt,輸出結(jié)果如下
Hello, world!
2017-05-29 01:15:30
關(guān)于工程的編譯歧强、構(gòu)建澜薄、運行,是由gradle協(xié)同kotlin-gradle-plugin摊册,在kotlin-stdlib-jre8肤京,kotlin-stdlib核心依賴下完成的。build.gradle配置文件如下:
group 'com.easy.kotlin'
version '1.0-SNAPSHOT'
buildscript {
ext.kotlin_version = '1.1.1'
repositories {
mavenCentral()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'java'
apply plugin: 'kotlin'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
工程源碼地址:https://github.com/EasyKotlin/easykotlin/tree/easykotlin_hello_world_20170529
使用Android Studio開發(fā) Kotlin Android應(yīng)用
2017谷歌I/O大會:宣布 Kotlin 成 Android 開發(fā)一級語言。
2017谷歌I/O大會上忘分,谷歌宣布棋枕,將Kotlin語言作為安卓開發(fā)的一級編程語言。Kotlin由JetBrains公司開發(fā)妒峦,與Java100%互通重斑,并具備諸多Java尚不支持的新特性。谷歌稱還將與JetBrains公司合作肯骇,為Kotlin設(shè)立一個非盈利基金會窥浪。
JetBrains在2010年首次推出Kotlin編程語言,并在次年將之開源笛丙。下一版的AndroidStudio(3.0)也將提供支持漾脂。
下面我們簡要介紹如何在Android上開始一個Kotlin的HelloWorld程序。
對于我們程序員來說胚鸯,我們正處于一個美好的時代骨稿。得益于互聯(lián)網(wǎng)的發(fā)展、工具的進(jìn)步姜钳,我們現(xiàn)在學(xué)習(xí)一門新技術(shù)的成本和難度都比過去低了很多坦冠。
假設(shè)你之前沒有使用過Kotlin,那么從頭開始寫一個HelloWorld的app也只需要這么幾步:
1.首先傲须,你要有一個Android Studio蓝牲。
本書中,筆者用的是2.2.3版本泰讽,其它版本應(yīng)該也大同小異例衍。
Android Studio 2.3.1
Build #AI-162.3871768, built on April 1, 2017
JRE: 1.8.0_112-release-b06 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
2.其次,安裝一個Kotlin的插件已卸。
依次打開:Android Studio > Preferences > Plugins佛玄,
然后選擇『Browse repositories』,在搜索框中搜索Kotlin累澡,結(jié)果列表中的『Kotlin』插件梦抢,如下圖
點擊安裝,安裝完成之后愧哟,重啟Android Studio奥吩。
3.新建一個Android項目
重新打開Android Studio,新建一個Android項目吧蕊梧,添加一個默認(rèn)的MainActivity——像以前一樣即可霞赫。
4.Java to Kotlin
安裝完插件的AndroidStudio現(xiàn)在已經(jīng)擁有開發(fā)Kotlin的功能。我們先來嘗試它的轉(zhuǎn)換功能:Java -> Kotlin肥矢,可以把現(xiàn)有的java文件翻譯成Kotlin文件端衰。
打開MainActivity文件,在Code菜單下面可以看到一個新的功能:Convert Java File to Kotlin File。
點擊轉(zhuǎn)換旅东,
可以看到轉(zhuǎn)換后的Kotlin文件:MainActivity.kt
package com.kotlin.easy.kotlinandroid
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
這個轉(zhuǎn)換功能灭抑,對我們Java程序員在學(xué)習(xí)Kotlin是十分實用。我們可以基于我們之前的Java編碼的經(jīng)驗來迅速學(xué)習(xí)Kotlin編程抵代。
5.配置gradle文件
MainActivity已經(jīng)被轉(zhuǎn)換成了Kotlin實現(xiàn)腾节,但是項目目前gradle編譯、構(gòu)建主守、運行還不能執(zhí)行禀倔,還需要進(jìn)一步配置一下,讓項目支持grade的編譯参淫、運行救湖。當(dāng)然,這一步也不需要我們做太多工作——IDEA都已經(jīng)幫我們做好了涎才。
在Java代碼轉(zhuǎn)換成Kotlin代碼之后鞋既,打開MainActivity.kt文件,編譯器會提示"Kotlin not configured"耍铜,點擊一下Configure按鈕邑闺,IDEA就會自動幫我們把配置文件寫好了。
我們可以看出棕兼,主要的依賴項是:
kotlin-gradle-plugin
plugin: 'kotlin-android'
kotlin-stdlib-jre7
完整的配置文件如下:
Project build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = '1.1.2-4'
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Module build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.kotlin.easy.kotlinandroid"
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.2'
testCompile 'junit:junit:4.12'
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}
repositories {
mavenCentral()
}
所以說使用IDEA來寫Kotlin代碼陡舅,這工具的完美集成會讓你用起來如絲般潤滑。畢竟Kotlin的親爸爸JetBrains是專門做工具的伴挚,而且Intelli IDEA又是那么敏捷靶衍、智能。
配置之后茎芋,等Gradle Sync完成颅眶,即可運行。
6.運行
運行結(jié)果如下
工程源碼:https://github.com/EasyKotlin/KotlinAndroid
參考資料
1.https://www.kotliner.cn/2017/03/13/%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B%20Kotlin%2011%E6%8B%9B/
Kotlin開發(fā)者社區(qū)
專注分享 Java田弥、 Kotlin涛酗、Spring/Spring Boot、MySQL偷厦、redis商叹、neo4j、NoSQL只泼、Android剖笙、JavaScript、React辜妓、Node、函數(shù)式編程、編程思想籍滴、"高可用酪夷,高性能,高實時"大型分布式系統(tǒng)架構(gòu)設(shè)計主題孽惰。
High availability, high performance, high real-time large-scale distributed system architecture design晚岭。
分布式框架:Zookeeper、分布式中間件框架等
分布式存儲:GridFS勋功、FastDFS坦报、TFS、MemCache狂鞋、redis等
分布式數(shù)據(jù)庫:Cobar片择、tddl、Amoeba骚揍、Mycat
云計算字管、大數(shù)據(jù)、AI算法
虛擬化信不、云原生技術(shù)
分布式計算框架:MapReduce嘲叔、Hadoop、Storm抽活、Flink等
分布式通信機(jī)制:Dubbo硫戈、RPC調(diào)用、共享遠(yuǎn)程數(shù)據(jù)下硕、消息隊列等
消息隊列MQ:Kafka丁逝、MetaQ,RocketMQ
怎樣打造高可用系統(tǒng):基于硬件卵牍、軟件中間件果港、系統(tǒng)架構(gòu)等一些典型方案的實現(xiàn):HAProxy、基于Corosync+Pacemaker的高可用集群套件中間件系統(tǒng)
Mycat架構(gòu)分布式演進(jìn)
大數(shù)據(jù)Join背后的難題:數(shù)據(jù)糊昙、網(wǎng)絡(luò)辛掠、內(nèi)存和計算能力的矛盾和調(diào)和
Java分布式系統(tǒng)中的高性能難題:AIO,NIO,Netty還是自己開發(fā)框架芙盘?
高性能事件派發(fā)機(jī)制:線程池模型葡兑、Disruptor模型等等。猩谊。。
合抱之木祭刚,生于毫末牌捷;九層之臺墙牌,起于壘土;千里之行暗甥,始于足下喜滨。不積跬步,無以至千里撤防;不積小流虽风,無以成江河。
Kotlin 簡介
Kotlin是一門非研究性的語言寄月,它是一門非常務(wù)實的工業(yè)級編程語言辜膝,它的使命就是幫助程序員們解決實際工程實踐中的問題。使用Kotlin 讓 Java程序員們的生活變得更好漾肮,Java中的那些空指針錯誤厂抖,浪費時間的冗長的樣板代碼,啰嗦的語法限制等等初橘,在Kotlin中統(tǒng)統(tǒng)消失验游。Kotlin 簡單務(wù)實,語法簡潔而強(qiáng)大保檐,安全且表達(dá)力強(qiáng)耕蝉,極富生產(chǎn)力。
Java誕生于1995年夜只,至今已有23年歷史垒在。當(dāng)前最新版本是 Java 9。在 JVM 生態(tài)不斷發(fā)展繁榮的過程中扔亥,也誕生了Scala场躯、Groovy、Clojure 等兄弟語言旅挤。
Kotlin 也正是 JVM 家族中的優(yōu)秀一員踢关。Kotlin是一種現(xiàn)代語言(版本1.0于2016年2月發(fā)布)。它最初的目的是像Scala那樣粘茄,優(yōu)化Java語言的缺陷签舞,提供更加簡單實用的編程語言特性,并且解決了性能上的問題柒瓣,比如編譯時間儒搭。 JetBrains在這些方面做得非常出色。
Kotlin語言的特性
用 Java 開發(fā)多年以后芙贫,能夠嘗試一些新的東西真是太棒了搂鲫。如果您是 Java 開發(fā)人員,使用 Kotlin 將會非常自然流暢磺平。如果你是一個Swift開發(fā)者魂仍,你將會感到似曾相識拐辽,比如可空性(Nullability)。 Kotlin語言的特性有:
1.簡潔
大幅減少樣板代碼量擦酌。
2.與Java的100%互操作性
Kotlin可以直接與Java類交互薛训,反之亦然。這個特性使得我們可以直接重用我們的代碼庫仑氛,并將其遷移到 Kotlin中。由于Java的互操作性幾乎無處不在闸英。我們可以直接訪問平臺API以及現(xiàn)有的代碼庫锯岖,同時仍然享受和使用 Kotlin 的所有強(qiáng)大的現(xiàn)代語言功能。
3.擴(kuò)展函數(shù)
Kotlin 類似于 C# 和 Gosu, 它提供了為現(xiàn)有類提供新功能擴(kuò)展的能力甫何,而不必從該類繼承或使用任何類型的設(shè)計模式 (如裝飾器模式)出吹。
4.函數(shù)式編程
Kotlin 語言一等支持函數(shù)式編程,就像Scala一樣辙喂。具備高階函數(shù)捶牢、Lambda 表達(dá)式等函數(shù)式基本特性。
5.默認(rèn)和命名參數(shù)
在Kotlin中巍耗,您可以為函數(shù)中的參數(shù)設(shè)置一個默認(rèn)值秋麸,并給每個參數(shù)一個名稱。這有助于編寫易讀的代碼炬太。
6.強(qiáng)大的開發(fā)工具支持
而由于是JetBrains出品灸蟆,我們擁有很棒的IDE支持。雖然Java到Kotlin的自動轉(zhuǎn)換并不是100% OK 的亲族,但它確實是一個非常好的工具炒考。使用 IDEA 的工具轉(zhuǎn)換Java代碼為 Kotlin 代碼時,可以輕松地重用60%-70%的結(jié)果代碼霎迫,而且修改成本很小斋枢。
Kotlin 除了簡潔強(qiáng)大的語法特性外,還有實用性非常強(qiáng)的API以及圍繞它構(gòu)建的生態(tài)系統(tǒng)知给。例如:集合類 API瓤帚、IO 擴(kuò)展類、反射API 等炼鞠。同時 Kotlin 社區(qū)也提供了豐富的文檔和大量的學(xué)習(xí)資料缘滥,還有在線REPL。
A modern programming language that makes developers happier. Open source forever