开发学院

您的位置:首页>教程>正文

教程正文

Protocol Buffer JAVA实例教程:前言

  本教程翻译自谷歌开发者官网,原文地址:https://developers.google.com/protocol-buffers/docs/javatutorial。开发学院对其进行了简单的翻译和排版,本页面的内容是根据知识共享属性3.0许可的,代码示例是根据Apache 2.0许可的。

Protocol Buffer 基础

  本教程为java程序介绍了Protocol Buffer 的基本知识。通过创建一个简单的示例程序,它向您展示了如下内容:

  在. proto文件中定义消息格式。

  使用Protocol Buffer 编译器。

  使用Java protocol buffer API 来写和读消息。

  这不是在Java中使用Protocol Buffer的全面指南。有关更详细的参考信息,请参见Protocol Buffer语言指南、Java应用编程接口参考、Java生成代码指南和编码参考。

为什么使用Protocol Buffers?

  我们将要使用的例子是一个非常简单的“地址簿”程序,它可以读写文件中的联系人详细信息。通讯簿中的每个人都有一个姓名、一个身份证、一个电子邮件地址和一个联系电话号码。

  如何序列化和检索这样的结构化数据?有几种方法可以解决这个问题:

  使用Java序列化。这是默认的方法,因为它内置于语言中,但是它有许多众所周知的问题,如果您需要与用C与C++程序设计学习与实验系统或Python编写的应用程序共享数据,这种方法也不能很好地工作。

  您可以发明一种特殊的方法将数据项编码成单个字符串,例如将4个int编码为“12:3:-23:67”。这是一种简单而灵活的方法,尽管它确实需要编写一次性编码和解析代码,而且解析会带来很小的运行时成本。这对于编码非常简单的数据最有效。

  将数据序列化为XML。这种方法可能非常有吸引力,因为XML(某种程度上)是人类可读的,并且有许多语言的绑定库。如果您想与其他应用程序/项目共享数据,这可能是一个不错的选择。然而,众所周知,XML占用大量空间,编码/解码它会给应用程序带来巨大的性能损失。此外,导航一个XML DOM树比导航一个类中的简单字段要复杂得多。

  Protocol buffers是解决这个问题的灵活、高效、自动化的解决方案。使用Protocol Buffer,您可以编写一个想要存储的数据结构的. proto描述。为此,Protocol Buffer编译器创建了一个类,该类以有效的二进制格式实现Protocol Buffer数据的自动编码和解析。生成的类为组成Protocol Buffer的字段提供了获取器和设置器,并作为一个单元处理读写Protocol Buffer的细节。重要的是,Protocol Buffer格式支持随着时间的推移扩展格式的想法,使得代码仍然可以读取用旧格式编码的数据。

示例代码

  示例代码在https://developers.google.com/protocol-buffers/docs/downloads.html下载,在"examples" 目录中。