【Protobuf】Protocol buffer在Java语言中的应用01

来源:互联网 发布:结构优化算法 编辑:程序博客网 时间:2024/05/21 05:43

参考文章:
http://blog.csdn.net/briblue/article/details/53187780
http://blog.csdn.net/antgan/article/details/52103966
http://www.cnblogs.com/zhangshihai1232/articles/5796940.html

1.简介
protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。由于它是一种二进制的格式,比使用xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
来看看几张图你就知道它的强大。




2.支持语言:
·
 SourceC++ (include C++ runtime and protoc)srcJavajavaPythonpythonObjective-CobjectivecC#csharpJavaNanojavananoJavaScriptjsRubyrubyGogolang/protobufPHPphp
3.官方文档
http://code.google.com/p/protobuf/

4.Protocol环境搭建
https://github.com/google/protobuf/releases
在上面的链接中,你可以按照对应的平台下载zip包:
protobuf-java-3.1.0.zip
protoc-3.1.0-win32.zip

解压protobuf-java-3.1.0.zip,我们定义它的根目录为$ROOT
解压protoc-3.1.0-win32.zip,把protoc.exe放在Protobuf安装目录下的src里。

编辑系统变量Path,添加Protoc.exe的存放目录。




5.生成protobuf-java-3.1.0 的jar包,方便引入

这里我采用maven来生成jar文件,我电脑已经安装过了maven,这里就不介绍maven。
在命令行中定位到$ROOT/java/,然后运行命令mvn package,
$ROOT/java/core/target/目录下生成protobuf-java-3.1.0.jar文件。


6.编译代码测试环境 生成的包
$ROOT它下面有一个examples文件夹,里面有个adressbook.proto文件,.proto就是protocol buffer的文件格式后缀。将文件拷贝至D:/proto 文件夹下
方案1:使用protoc.exe编译成java类
util包下新建GenerareClass类
import java.io.IOException;public class GenerateClass {public static void main(String[] args){    //protoc.exe -I=proto的输入目录  --java_out=java类输出目录    proto的输入目录包括包括proto文件        String protoFile = "addressbook.proto";//文件名字        String strCmd = "D:/Jack_ESong/software/protocolbuffer/protobuf-3.1.0/src/protoc.exe -I=D:/proto --java_out=D:/proto D:/proto/"+ protoFile;          try {            Runtime.getRuntime().exec(strCmd);        } catch (IOException e) {            e.printStackTrace();        }    }}
方案2:
命令格式如下。
protoc.exe -I=proto的输入目录 --java_out=java类输出目录 proto的输入目录包括包括proto文件
它就会在d:/proto 目录下 自动生成com/example/tutorial/AddressBookProtos.java文件。
自此,protoc buffer就完全编译成功,并且可以正常运行


方案3:
在下载的protobuf-java-3.1.0.zip解压后,我们定义它的根目录为$ROOT。它下面有一个examples文件夹,里面有个adressbook.proto文件,.proto就是protocol buffer的文件格式后缀。
我们将之前生成的protobuf-java-3.1.0.jar复制到该目录下。然后执行下面的命令
protoc --java_out=. addressbook.proto
它就会自动生成com/example/tutorial/AddressBookProtos.java文件。


















1 0
原创粉丝点击