本文作者: youngxhui
本文鏈接: http://youngxhui.github.io/2017/12/02/Kotlin-1-2-平臺(tái)之間共享代碼/
版權(quán)聲明: 本博客所有文章除特別聲明外侣监,均采用 CC BY-NC-SA 3.0 許可協(xié)議鸭轮。轉(zhuǎn)載請(qǐng)注明出處!
前言
這是一個(gè)嘗試橄霉,之前沒(méi)有翻譯過(guò)任何技術(shù)文章窃爷,做一個(gè)嘗試,也算是學(xué)習(xí)姓蜂,盡管現(xiàn)在這個(gè)譯文在網(wǎng)上已經(jīng)是滿(mǎn)天飛了按厘。
原文地址Kotlin 1.2 Released: Sharing Code between Platforms
正文
今天,我們將要發(fā)布 Kotlin 1.2覆糟。這是一個(gè)重要的新版本和一個(gè)大的步伐在我們朝著使用 Kotlin 在現(xiàn)代應(yīng)用程序中的道路上刻剥。
在 Kotlin 1.1 中,我們正式的發(fā)布了 JavaScript 目標(biāo)滩字,允許你去編譯 Kotlin 代碼成為 JS 并且運(yùn)行在瀏覽器上造虏。在 Kotlin 1.2 中,我們將要添加 JVM 和 JavaScript 的代碼重用成為可能÷蠊浚現(xiàn)在你可以寫(xiě)一次應(yīng)用程序的邏輯代碼漓藕,而在你的應(yīng)用程序中所有層重用它——后端,瀏覽器前端和Android移動(dòng)應(yīng)用挟裂。我們也會(huì)在庫(kù)上進(jìn)行工作享钞,幫助你重用更多的代碼。比如跨平臺(tái)庫(kù)诀蓉。
Kotlin 1.2 是已經(jīng)綁定在 IntelliJ IDEA 2017.3中栗竖,將會(huì)在本周發(fā)布暑脆。如果你正在使用的是 Android Studio 或者 一個(gè)舊版本的 Intellij IDEA,你可以從 Tools | Kotlin | Configure Kotlin Plugin 更新框中安裝新的版本狐肢。
這個(gè)版本包括了大量外部貢獻(xiàn)者的工作添吗,并且我們想感謝向我們反饋,提交問(wèn)題和尤其是提交了PR的每個(gè)人份名。
多平臺(tái)項(xiàng)目
一個(gè)多平臺(tái)項(xiàng)目允許你編譯在你的應(yīng)用程序的多層 —— 后端碟联,前端和Android應(yīng)用 —— 在相同的代碼基礎(chǔ)上。這樣的一個(gè)項(xiàng)目包含了 相同模塊,與平臺(tái)無(wú)關(guān)以及特定平臺(tái)的模塊僵腺,包含了特定平臺(tái)的代碼( JVM 或者 JS )和使用了特定平臺(tái)的庫(kù)鲤孵。從通用模塊調(diào)用特定平臺(tái)的代碼,你可以指定預(yù)期的聲明——所有平臺(tái)特定模塊需要提供實(shí)際實(shí)現(xiàn)聲明辰如。
有關(guān)該功能的更多信息普监,請(qǐng)查看這個(gè)文檔
如前所述,我們也在編寫(xiě)一組公共庫(kù)允許你將更多的邏輯代碼轉(zhuǎn)移到公共代碼:
kotlin.test,包括開(kāi)箱即用的Kotlin1.2丧没,讓你寫(xiě)一次測(cè)試并且運(yùn)行在JVM 和 JS 下鹰椒;
kotlin.html支持 同構(gòu)渲染 — 用相同的代碼渲染 HTML 在后端和在前端;
kotlinx.serialization允許你輕松的對(duì) Kotlin對(duì)象編組在你的應(yīng)用程序的不同的層之間呕童,使用 JSON 或者 ProtoBuf 進(jìn)行序列化格式化漆际。
請(qǐng)注意,多平臺(tái)項(xiàng)目目前是一個(gè)實(shí)驗(yàn)性功能夺饲;這意味著這個(gè)功能是準(zhǔn)備使用奸汇,但是我們也許需要去改變?cè)O(shè)計(jì)在之后的版本(并且如果我們這樣做,我們將會(huì)提供代碼遷移工具)往声。
編譯性能
在1.2的發(fā)展過(guò)程中擂找,我們花費(fèi)了很多精力來(lái)使編譯過(guò)程更快。我們已經(jīng)比Kotlin1.1提高了大約 25% 并且我們看見(jiàn)進(jìn)一步改進(jìn)的巨大潛力浩销,它將會(huì)在發(fā)布在 1.2.x的更新中贯涎。
下方的圖片展示了兩個(gè)用Kotlin的大型JetBrains項(xiàng)目不同的編譯時(shí)間:
其他語(yǔ)言和庫(kù)的改進(jìn)
我們也做了許多小的改進(jìn)在語(yǔ)言和標(biāo)準(zhǔn)庫(kù):
更簡(jiǎn)潔的語(yǔ)法 用于將多個(gè)參數(shù)傳遞給注解(數(shù)組 文字(literals)) 不知如何翻譯literals 譯者注
支持
lateinit
修飾在全局屬性和局部屬性,以及檢查一個(gè)lateinit
是否被初始化慢洋;更加聰明的智能推導(dǎo)和改進(jìn)的類(lèi)型推斷在一些情況下塘雳。
標(biāo)準(zhǔn)庫(kù)和 Java9 中引入的分包限制的兼容;
新的
kotlin.math
包在標(biāo)準(zhǔn)庫(kù)中普筹;新的標(biāo)準(zhǔn)庫(kù)函數(shù)在處理序列和集合败明,包含了一組函數(shù) 為了拆分集合和序列為可能重疊的固定大小的組。
更多的信息和代碼示例太防,請(qǐng)看 Kotlin1.2中新功能
世界各地的Kotlin
自從今年3月發(fā)布的Kotlin1.1以來(lái)妻顶,Kotlin已經(jīng)取得了巨大的收獲在世界各地。這是 KotlinConf 的高潮,我們第一次全球會(huì)議讳嘱,有著1200參會(huì)者在11月2幔嗦,3日的舊金山。我們已經(jīng)記錄了所有的會(huì)談沥潭,并且視頻已經(jīng)可以看崭添。
Kotlin現(xiàn)在是一個(gè)Android開(kāi)發(fā)官方支持的語(yǔ)言,開(kāi)箱即用的Android Studio 3.0叛氨,已經(jīng)谷歌發(fā)布了官方示例和風(fēng)格指南。結(jié)果是棘伴,在Android Studio中超過(guò)了 17% 的項(xiàng)目使用 Kotlin寞埠,包含來(lái)自很多熱門(mén)的創(chuàng)業(yè)公司以及財(cái)富500強(qiáng)公司的許多應(yīng)用程序。
在服務(wù)器端焊夸,Spring 5.0 已經(jīng)發(fā)布仁连,有著許多Kotlin支持的功能,而且 vert.x 已經(jīng)支持Kotlin在3.4.0后。當(dāng)然阱穗,Gradle支持開(kāi)箱即用Kotlin DSL饭冬,而且 Gradle Kotlin DSL 項(xiàng)目正在迅速的接近1.0版本。
在Github上揪阶,開(kāi)源的Kotlin代碼行數(shù)已經(jīng)超過(guò)了2.5億昌抠。而在 Stack Overflow,Kotlin是增長(zhǎng)最快的語(yǔ)言之一和最不反感的語(yǔ)言之一
圍繞Kotlin的社區(qū)建立同樣也是令人吃驚的鲁僚,已經(jīng)有超過(guò)100用戶(hù)組在全世界炊苫,我們很難追蹤到所有的人 —— 但是針對(duì)我們所知道的,這個(gè)會(huì)談地圖給了你一個(gè)很好的想法冰沙,kotlin是多么廣泛的使用侨艾。
對(duì)于剛剛學(xué)習(xí)Kotlin的人來(lái)說(shuō),書(shū)籍的數(shù)量是不斷的增長(zhǎng)(包含我們自己的 "Kotlin in Action",現(xiàn)在有英文拓挥,俄語(yǔ)唠梨,日語(yǔ),中文和葡萄牙語(yǔ)),線(xiàn)上課程侥啤,教程和其他資源
團(tuán)隊(duì)見(jiàn)面:網(wǎng)絡(luò)研討會(huì)和Reddit AMA
分享你更多的信息關(guān)于新版本当叭,我們計(jì)劃組織一個(gè)網(wǎng)絡(luò)研討會(huì)關(guān)于Kotlin1.2多平臺(tái)項(xiàng)目在12月7日,18:00 CET愿棋。請(qǐng)注冊(cè)科展;空間有限。
Kotlin團(tuán)隊(duì)也將會(huì)舉辦 AMA(Ask Me Anything) 在 Kotlin Reddit 上在12月5號(hào)糠雨。我們將開(kāi)始中午開(kāi)始(CET),并且我們接下來(lái)的24小時(shí)和你在一起才睹。
如何升級(jí)
一如既往,你可以在線(xiàn)嘗試Kotlin在try.kotlinlang.org
在 Maven,Gradle和npm中:使用
1.2.0
作為編譯器和標(biāo)準(zhǔn)庫(kù)的版本號(hào)琅攘】迓看這里IntelliJ IDEA:2017.3已經(jīng)和Kotlin1.2綁定,在早期版本中安裝或者升級(jí) Kotlin 插件到1.2.0版本坞琴。
Android Studio:安裝或者升級(jí)插件通過(guò)
Plugin Manager
哨查。Eclips:安裝插件在 MarketPlace。
命令行編譯可以從Github發(fā)布頁(yè)面上下載剧辐。
兼容性 在Kotlin1.2的語(yǔ)言和標(biāo)準(zhǔn)庫(kù)是向后兼容的(模塊錯(cuò)誤):如果一些編譯和運(yùn)行在1.0或者1.1寒亥,將會(huì)繼續(xù)在1.2上運(yùn)行。幫助逐漸共享的打團(tuán)隊(duì)荧关,我們將提供不使用新特性的編譯開(kāi)關(guān)溉奕。這里是一個(gè)包含可能的缺陷文檔