本文作者: youngxhui
本文鏈接: http://youngxhui.github.io/2017/12/02/Kotlin-1-2-平臺之間共享代碼/
版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 3.0 許可協(xié)議。轉載請注明出處!
前言
這是一個嘗試,之前沒有翻譯過任何技術文章,做一個嘗試,也算是學習,盡管現(xiàn)在這個譯文在網(wǎng)上已經(jīng)是滿天飛了。
原文地址Kotlin 1.2 Released: Sharing Code between Platforms
正文
今天,我們將要發(fā)布 Kotlin 1.2。這是一個重要的新版本和一個大的步伐在我們朝著使用 Kotlin 在現(xiàn)代應用程序中的道路上。
在 Kotlin 1.1 中,我們正式的發(fā)布了 JavaScript 目標,允許你去編譯 Kotlin 代碼成為 JS 并且運行在瀏覽器上。在 Kotlin 1.2 中,我們將要添加 JVM 和 JavaScript 的代碼重用成為可能?,F(xiàn)在你可以寫一次應用程序的邏輯代碼,而在你的應用程序中所有層重用它——后端,瀏覽器前端和Android移動應用。我們也會在庫上進行工作,幫助你重用更多的代碼。比如跨平臺庫。

Kotlin 1.2 是已經(jīng)綁定在 IntelliJ IDEA 2017.3中,將會在本周發(fā)布。如果你正在使用的是 Android Studio 或者 一個舊版本的 Intellij IDEA,你可以從 Tools | Kotlin | Configure Kotlin Plugin 更新框中安裝新的版本。
這個版本包括了大量外部貢獻者的工作,并且我們想感謝向我們反饋,提交問題和尤其是提交了PR的每個人。
多平臺項目
一個多平臺項目允許你編譯在你的應用程序的多層 —— 后端,前端和Android應用 —— 在相同的代碼基礎上。這樣的一個項目包含了 相同模塊,與平臺無關以及特定平臺的模塊,包含了特定平臺的代碼( JVM 或者 JS )和使用了特定平臺的庫。從通用模塊調用特定平臺的代碼,你可以指定預期的聲明——所有平臺特定模塊需要提供實際實現(xiàn)聲明。

有關該功能的更多信息,請查看這個文檔
如前所述,我們也在編寫一組公共庫允許你將更多的邏輯代碼轉移到公共代碼:
kotlin.test,包括開箱即用的Kotlin1.2,讓你寫一次測試并且運行在JVM 和 JS 下;
kotlin.html支持 同構渲染 — 用相同的代碼渲染 HTML 在后端和在前端;
kotlinx.serialization允許你輕松的對 Kotlin對象編組在你的應用程序的不同的層之間,使用 JSON 或者 ProtoBuf 進行序列化格式化。
請注意,多平臺項目目前是一個實驗性功能;這意味著這個功能是準備使用,但是我們也許需要去改變設計在之后的版本(并且如果我們這樣做,我們將會提供代碼遷移工具)。
編譯性能
在1.2的發(fā)展過程中,我們花費了很多精力來使編譯過程更快。我們已經(jīng)比Kotlin1.1提高了大約 25% 并且我們看見進一步改進的巨大潛力,它將會在發(fā)布在 1.2.x的更新中。
下方的圖片展示了兩個用Kotlin的大型JetBrains項目不同的編譯時間:

其他語言和庫的改進
我們也做了許多小的改進在語言和標準庫:
更簡潔的語法 用于將多個參數(shù)傳遞給注解(數(shù)組 文字(literals)) 不知如何翻譯literals 譯者注
支持
lateinit修飾在全局屬性和局部屬性,以及檢查一個lateinit是否被初始化;標準庫和 Java9 中引入的分包限制的兼容;
新的
kotlin.math包在標準庫中;新的標準庫函數(shù)在處理序列和集合,包含了一組函數(shù) 為了拆分集合和序列為可能重疊的固定大小的組。
更多的信息和代碼示例,請看 Kotlin1.2中新功能
世界各地的Kotlin
自從今年3月發(fā)布的Kotlin1.1以來,Kotlin已經(jīng)取得了巨大的收獲在世界各地。這是 KotlinConf 的高潮,我們第一次全球會議,有著1200參會者在11月2,3日的舊金山。我們已經(jīng)記錄了所有的會談,并且視頻已經(jīng)可以看。
Kotlin現(xiàn)在是一個Android開發(fā)官方支持的語言,開箱即用的Android Studio 3.0,已經(jīng)谷歌發(fā)布了官方示例和風格指南。結果是,在Android Studio中超過了 17% 的項目使用 Kotlin,包含來自很多熱門的創(chuàng)業(yè)公司以及財富500強公司的許多應用程序。

在服務器端,Spring 5.0 已經(jīng)發(fā)布,有著許多Kotlin支持的功能,而且 vert.x 已經(jīng)支持Kotlin在3.4.0后。當然,Gradle支持開箱即用Kotlin DSL,而且 Gradle Kotlin DSL 項目正在迅速的接近1.0版本。
在Github上,開源的Kotlin代碼行數(shù)已經(jīng)超過了2.5億。而在 Stack Overflow,Kotlin是增長最快的語言之一和最不反感的語言之一

圍繞Kotlin的社區(qū)建立同樣也是令人吃驚的,已經(jīng)有超過100用戶組在全世界,我們很難追蹤到所有的人 —— 但是針對我們所知道的,這個會談地圖給了你一個很好的想法,kotlin是多么廣泛的使用。

對于剛剛學習Kotlin的人來說,書籍的數(shù)量是不斷的增長(包含我們自己的 "Kotlin in Action",現(xiàn)在有英文,俄語,日語,中文和葡萄牙語),線上課程,教程和其他資源
團隊見面:網(wǎng)絡研討會和Reddit AMA
分享你更多的信息關于新版本,我們計劃組織一個網(wǎng)絡研討會關于Kotlin1.2多平臺項目在12月7日,18:00 CET。請注冊;空間有限。
Kotlin團隊也將會舉辦 AMA(Ask Me Anything) 在 Kotlin Reddit 上在12月5號。我們將開始中午開始(CET),并且我們接下來的24小時和你在一起。
如何升級
一如既往,你可以在線嘗試Kotlin在try.kotlinlang.org
在 Maven,Gradle和npm中:使用
1.2.0作為編譯器和標準庫的版本號???a target="_blank" rel="nofollow">這里IntelliJ IDEA:2017.3已經(jīng)和Kotlin1.2綁定,在早期版本中安裝或者升級 Kotlin 插件到1.2.0版本。
Android Studio:安裝或者升級插件通過
Plugin Manager。Eclips:安裝插件在 MarketPlace。
命令行編譯可以從Github發(fā)布頁面上下載。
兼容性 在Kotlin1.2的語言和標準庫是向后兼容的(模塊錯誤):如果一些編譯和運行在1.0或者1.1,將會繼續(xù)在1.2上運行。幫助逐漸共享的打團隊,我們將提供不使用新特性的編譯開關。這里是一個包含可能的缺陷文檔