《Kotlin 程序設(shè)計》第二章 快速開始:HelloWorld

第二章 快速開始:HelloWorld

使用云端在線IDE學(xué)習(xí)Kotlin

我們不需要搭建任何環(huán)境鬓椭,只要有一臺能聯(lián)網(wǎng)的設(shè)備,打開瀏覽器訪問:

https://try.kotlinlang.org

你就可以盡情享受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

  1. 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!")
    }
    
  2. 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
    
  3. 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

圖來自《Kotlin從入門到進(jìn)階實戰(zhàn)》 (陳光劍谒主,清華大學(xué)出版社)
圖來自《Kotlin從入門到進(jìn)階實戰(zhàn)》 (陳光劍朝扼,清華大學(xué)出版社)

https://kotlinlang.org/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市霎肯,隨后出現(xiàn)的幾起案子擎颖,更是在濱河造成了極大的恐慌榛斯,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搂捧,死亡現(xiàn)場離奇詭異驮俗,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)允跑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門王凑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人聋丝,你說我怎么就攤上這事索烹。” “怎么了弱睦?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵百姓,是天一觀的道長。 經(jīng)常有香客問我况木,道長垒拢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任火惊,我火速辦了婚禮求类,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘屹耐。我一直安慰自己仑嗅,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布张症。 她就那樣靜靜地躺著仓技,像睡著了一般。 火紅的嫁衣襯著肌膚如雪俗他。 梳的紋絲不亂的頭發(fā)上脖捻,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機(jī)與錄音兆衅,去河邊找鬼地沮。 笑死,一個胖子當(dāng)著我的面吹牛羡亩,可吹牛的內(nèi)容都是我干的摩疑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼畏铆,長吁一口氣:“原來是場噩夢啊……” “哼雷袋!你這毒婦竟也來了辞居?” 一聲冷哼從身側(cè)響起楷怒,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤蛋勺,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鸠删,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抱完,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年刃泡,在試婚紗的時候發(fā)現(xiàn)自己被綠了巧娱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡烘贴,死狀恐怖家卖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庙楚,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布趴樱,位于F島的核電站馒闷,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏叁征。R本人自食惡果不足惜纳账,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捺疼。 院中可真熱鬧疏虫,春花似錦、人聲如沸啤呼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽官扣。三九已至翅敌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間惕蹄,已是汗流浹背蚯涮。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留卖陵,地道東北人遭顶。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像泪蔫,于是被迫代替她去往敵國和親棒旗。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容