谷歌將在 Kotlin 中支援 Protocol Buffers 資料格式

snakesss發表於2021-11-14

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方法。

相關文章