- Kotlin從基礎到實戰
- 黑馬程序員編著
- 1468字
- 2019-08-06 10:10:28
1.1 Kotlin簡介
1.1.1 Kotlin的前景
Kotlin語言由JetBrains公司開發,是一個基于JVM的新編程語言,它的語法格式比Java更加簡潔,現在已經正式成為Android官方支持的開發語言,并且100%兼容Java語言。目前Kotlin語言主要用于以下幾個領域。
1. 服務端開發
Kotlin語言非常適合開發服務端應用程序,并且與Java技術保持良好的兼容性,之前用Java語言做的服務端程序都可以使用Kotlin語言來代替。Kotlin的革新式語言功能有助于構建強大而易于使用的程序。Kotlin語言對協程的支持有助于構建服務器端程序,伸縮到適度的硬件要求以應對大量的客戶端。Kotlin語言與所有基于Java語言的框架完全兼容,可以讓你保持熟悉的技術棧,同時獲得更現代化的語言優勢。
2. Android開發
Kotlin語言也適合開發Android程序。在兼容性方面,Kotlin語言與JDK 6完全兼容,保證了Kotlin應用程序可以在較舊的Android設備上運行。在性能方面,由于Kotlin支持內聯函數,使用Lambda表達式的代碼通常比使用Java的代碼運行速度快,因此Kotlin應用程序的運行速度比Java快。在互操作性方面,Kotlin與Java可進行100%的互操作,在Kotlin應用程序中可以使用所有現有的Android庫。在編譯時長方面,Kotlin支持高效的增量編譯,所以對于清理構建會有額外的開銷,增量構建通常與Java一樣快或者更快。
3. JavaScript開發
Kotlin提供了JavaScript作為目標平臺的能力。這種能力通過將Kotlin轉換為JavaScript來實現,目前的實現目標是ECMAScript 5.1。當選擇JavaScript為目標時,作為項目部分的Kotlin代碼以及Kotlin附帶的標準庫都會轉換為JavaScript。但不包括使用的JDK、任何JVM、Java框架或庫。所有非Kotlin文件在編譯期間會被忽略掉。Kotlin編譯器遵循以下目標:提供最佳大小的輸出;提供可讀的JavaScript輸出;提供與現有模塊系統的互操作性;在標準庫中提供相同的功能。
1.1.2 Kotlin的特性
1. 簡潔
在開發程序時,通常情況下開發人員會花費更多的時間去閱讀現有代碼。例如,需要在當前項目上添加新的功能,此時就需要閱讀與當前功能相關的代碼,而閱讀代碼的時間長短取決于代碼量的多少。在Kotlin程序中,由于代碼簡潔,從而大大減少了樣板代碼的數量,因此在后續閱讀代碼時會更加簡便,這就提高了工作效率,進而可以更快地完成任務。在許多情況下,IDEA工具將自動檢測到可以用更簡潔的結構替換公共的代碼模式,并提供修復代碼的方法,通過研究這些自動修復所使用的語言特性,可以在開發程序時靈活應用這些特性。
2. 安全
一般情況下,為了保證編程語言的安全性,在設計程序時會盡量避免出錯的可能,當然這并不能保證程序絕對不會出現問題。防止錯誤的發生通常以犧牲成本為代價,需要給編譯器更多關于程序的預期操作信息,這樣編譯器就可以驗證與程序所做的匹配信息是否一致。
Kotlin試圖用較小的成本獲取比Java更高級別的安全性。在JVM上運行的程序已經提供了許多安全機制,例如,防止內存泄露、防止緩沖區溢出以及由于不正確使用動態分配內存造成的其他問題等。Kotlin作為一種靜態語言,在JVM上也保證應用程序的類型安全,不必指定所有類型的聲明。很多情況下,編譯器會自動推斷類型。此外,Kotlin允許定義可空類型變量,并提供了多種方式對空數據進行處理,這樣可以避免程序的空指針異常(NullPointerException),從而大大降低了程序崩潰的可能性。
3. 互操作性
Kotlin與Java的互操作性,表現在Kotlin程序可以調用Java中的方法、擴展Java類、實現Java中的接口以及使用Java語言來注釋Kotlin程序等。Kotlin中的類和方法可以完全像普通的Java類和方法一樣去調用,這樣Java代碼與Kotlin代碼可以在項目中的任何地方進行互調。其重點體現在使用現有的Java標準庫擴展Java中的功能,使Kotlin程序使用起來更方便。
Kotlin的開發工具IDEA還提供了跨語言項目的全力支持,它不僅可以編譯Java源文件,而且還可以使Java與Kotlin進行任意的組合。IDEA工具的跨語言功能,允許程序執行如下操作。
? 自由組合Kotlin語言與Java源文件。
? 調試混合語言項目,并在不同語言編寫的程序之間進行互操作。
- Learning Real-time Processing with Spark Streaming
- Python數據分析入門與實戰
- ReSharper Essentials
- AWS Serverless架構:使用AWS從傳統部署方式向Serverless架構遷移
- HTML5+CSS3基礎開發教程(第2版)
- Django 3.0應用開發詳解
- JavaScript機器人編程指南
- C++程序設計教程
- Test-Driven iOS Development with Swift
- iOS Development with Xamarin Cookbook
- Getting Started with Web Components
- JavaScript語法簡明手冊
- Visual FoxPro程序設計實驗教程
- Internet of Things with Arduino Cookbook
- 秒懂算法:用常識解讀數據結構與算法