11 月 1 日,谷歌宣佈在 Kotlin 中支援 Protocol Buffers,進一步加深對 Kotlin 這門程式語言的投資。
Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司開發的一種資料描述語言,類似於XML能夠將結構化資料序列化,可用於資料儲存、通訊協議等方面。
去年,谷歌公佈開了對 gRPC 的 Kotlin 支援,這是一種開源遠端過程呼叫 (RPC) 框架,為 Google 的數千個微服務提供支援。谷歌表示,未來將大力投資 Kotlin 語言和生態系統,Android 開發以 Kotlin 優先,後端服務的構建也儘量用 Kotlin,這都歸功於他們對Kotlin 這門語言的表現力、安全性和跟 Java 雙向互操作性的喜愛 。
現在,開發者可以使用 proto 編譯器中新內建的 Kotlin 支援,來生成慣用的 Kotlin 領域特定語言 (DSL)。
例如,這是一個簡單的 protocol buffer 訊息,代表擲骰子:
message DiceSeries {
message DiceRoll {
int32 value = 1; // value of this roll, e.g. 2..12
string nickname = 2; // string nickname, e.g. "snake eyes"
}
repeated DiceRoll rolls = 1;
}
它在Java中是這樣的:
DiceSeries series = DiceSeries.newBuilder()
.addRoll(DiceRoll.newBuilder()
.setValue(5))
.addRoll(DiceRoll.newBuilder()
.setValue(20)
.setNickname("critical hit"))
.build()
在此版本中,protos 提供了一組表達性的 DSL 構建方法,讓這段程式碼在 Kotlin 中變得更加簡潔、優雅,下面是使用新的 Kotlin 原型繫結編寫的骰子程式碼:
val series = diceSeries {
rolls = listOf(
diceRoll { value = 5 },
diceRoll {
value = 20
nickname = "critical hit"
}
)
}
由此可見,Kotlin 版本使用 Kotlin 型別安全構建器,讓程式碼更加簡潔,而且不需要顯式呼叫 build方法。