protocol buffer 是 google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了三种语言的实现:java、c++ 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。本文通过一个简单的示例介绍 protocol buffer。
在开始之前需要下载 protocol buffer 的编译器和相应类库。下载地址为:
http://code.google.com/p/protobuf/downloads/list 。当前版本为 2.3.0,下载一下两个压缩包:protoc-2.3.0-win32.zip 和 protobuf-2.3.0.zip,前者是 protocol buffer 编译器,后者包含了三种语言的开发包。
首先解压 protoc-2.3.0-win32.zip,把 protoc.exe 文件放到 path 路径中,最简单的就是把这个文件复制到 c:\windows 目录中。
解压 protobuf-2.3.0.zip 文件,假设解压后的目录为 proto_home。由于此开发包中只包含了源文件,没有包含打包后的 jar 文件,所以需要自己手动编译。下面一步一步来编译 protocol buffer 的 java 实现,由于 protocol buffer 使用 maven 作为编译工具,所以必须先下载安装 maven,maven 可以从 http://maven.apache.org 上下载。安装 maven 非常简单,只要解压并把 bin 目录添加到 path 中即可。安装好 maven 后,测试一下 maven 是否安装成功,打开命令行窗口,运行命令 mvn -version,当看到一下输出后,说明 maven 安装成功。
在编译之前还需把 protocol buffer 的编译器复制一份到把 protocol buffer 的编译器复制一份到目录 proto_home\src\ 中,由于在 maven 脚本中调用了这个文件。下面在命令行窗口中把当前工作目录定位到proto_home\java 中,运行命令 mvn package。编译完成后会在 taget 目录中生成一个 jar 文件 protobuf-java-2.3.0.jar。
protocol buffer 的编译器和基于 java 的类库已经准备好了,下面可以使用 protocol buffer 写一个简单的示例。本文中就直接使用 protocol buffer 本身自带的一些示例,这个示例在 proto_home\examples 目录中。这个示例会用到这个目录中的 addressbook.proto、AddPerson.java 和 ListPerson.java 文件。下面一步一步来运行这些示例。
首先把前面编译生成的 protobuf-java-2.3.0.jar 复制到 proto_home\examples 目录中,便于引用。
使用 protocol buffer 编译器编译 addressbook.proto 文件。打开命令行窗口,并定位到 proto_home\examples 目录中,运行命令 protoc --java_out=. addressbook.proto,执行这个命令后会在当前目录下生成一个java类 com.example.tutorial.AddressBookProtos.java。
生成了 java 类之后就是编译并运行这个示例,在命令行中执行命令 javac -d . -classpath .;protobuf-java-2.3.0.jar AddPerson.java ListPeople.java com\example\tutorial\AddressBookProtos.java。
下面运行 AddPerson,在命令中执行命令 java -cp .;protobuf-java-2.3.0.jar AddPerson addr.dat,按照提示输入相应的信息,如下图所示
运行这个程序会在当前目录中创建一个数据文件 addr.dat 保存 protocol buffer 生成的数据。运行程序 ListPeople 则可以读取 addr.dat 文件中的数据。
java -cp .;protobuf-java-2.3.0.jar ListPeople addr.dat
如下图所示
分享到:
相关推荐
Protocol Buffer 技术详解(语言规范) Protocol Buffer 是一种语言中立、平台中立、可扩展的序列化数据格式,用于在通信网络和数据存储中交换结构化数据。Protocol Buffer 技术的主要优点是可以在不同的语言和平台...
**Protocol Buffer:深入理解与应用** Protocol Buffer是Google开发的一种数据序列化协议,它提供了一种高效、跨平台的方式来存储和传输结构化数据。Protocol Buffer的主要功能是将复杂的数据结构转换为二进制流,...
描述中提到"已经编译好的cocos2d-x的protocol buffer库",这通常包括了Protocol Buffer的动态或静态库文件,这些库文件是预先通过编译Protocol Buffer的源代码生成的,适用于Cocos2d-x的环境。这些库文件允许Cocos2d...
ProtocolBuffer,简称PB,是由Google开发的一种数据序列化协议,它是Google的一种二进制数据交换格式,用于结构化数据的序列化。Protocol Buffers的设计目标是替代XML等传统数据交换格式,提供更高效、更小的数据...
Protocol Buffer是Google开发的一种数据序列化协议,它允许开发者定义数据结构,并将其转换为二进制格式进行存储或网络传输。Protocol Buffer 3.0 (简称protobuf) 是该技术的第三个主要版本,提供了更强大的功能和...
Protocol Buffer是Google开发的一种数据序列化协议,它允许开发者定义数据结构,并在各种数据平台之间交换这些数据。Sublime Text 3是一款广受欢迎的代码编辑器,拥有丰富的插件库来增强其功能。"Protocol Buffer ...
Protocol Buffer(简称PB)是Google开发的一种数据序列化协议,用于高效地编码和解码结构化数据。它提供了一种跨平台、语言无关的方式,使得应用程序可以方便地存储、交换和解析数据。Protocol Buffer文件(通常扩展...
【Protocol Buffer】是一种高效的数据序列化协议,由Google公司开发并开源。它主要用于结构化数据的描述、传输和存储,其设计目标是提供一种高效、紧凑的二进制数据格式,相比XML和JSON等文本格式,它能显著减少数据...
Protocol Buffer技术是Google开发的一种数据序列化协议,用于高效地编码和解码结构化数据。在C++中,Protocol Buffer提供了强大的工具`protoc`,用于将`.proto`文件转换为对应编程语言(如C++)的源代码,使得开发者...
**Protocol Buffer:谷歌的高效序列化框架** Protocol Buffers(简称protobuf)是由谷歌公司开发的一种高效、跨平台的数据序列化协议。它允许开发者定义数据结构,然后将这些数据结构转换成二进制格式进行存储或在...
### Protocol Buffer 配置及实例详解 #### 一、Protocol Buffers 概述 Protocol Buffers 被定义为一种数据描述语言(Data Description Language,DDL),它在 Google 内部得到了广泛的应用,主要用于结构化数据的...
Protocol Buffer 2.5.0 jar包
Protocol Buffer(简称protobuf)是Google开发的一种数据序列化协议,用于高效、跨平台地存储和传输结构化数据。它能够将复杂的数据结构转换为二进制格式,以便在网络通信和文件存储中使用,大大减少了数据的存储...
### Protocol_Buffer官网文档中文版知识点总结 #### 一、简介与概览 - **Protocol Buffer**是一种用于数据序列化的高效工具,支持多种编程语言(如Java、C++、Python等),能够实现数据的有效存储和传输。 #### ...
Protocol Buffer(简称protobuf)是Google推出的一种数据序列化协议,它能够将结构化数据序列化,可用于数据存储、通信协议等方面。本项目结合了cocos2d-x与protobuf,旨在为Android平台的游戏开发提供高效的数据...
Protocol Buffer是Google开发的一种数据序列化协议,常用于结构化数据的存储和交换。它提供了一种高效、灵活且跨语言的方式,使得不同系统之间能够方便地共享数据。标题中的"Protocol Buffer java版本"指的是...
Protocol Buffer(简称protobuf)是Google开发的一种数据序列化协议,它是Google的一种高效、灵活且跨平台的数据交换格式。Protocol Buffers的设计目标是为了提供一种简单、快速、可扩展的方式来存储和传输结构化...