SegmentFault思否 · 2021年11月08日

谷歌将在 Kotlin 中支持 Protocol Buffers 数据格式

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"
    }
  )
}
推荐阅读
关注数
4189
内容数
867
SegmentFault 思否旗下人工智能领域产业媒体,专注技术与产业,一起探索人工智能。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息