`

Java protobuf框架使用向导

 
阅读更多

Java protobuf框架使用向导

 

ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf。

 

 

ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf。

 

下面介绍的是使用Java ProtoBuf的基本步骤:

 

1.http://code.google.com/p/protobuf/downloads/list ,选择其中的win版本下载

 

2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的proto.exe版本相同,否则可能出现编译通不过现象)

 

http://grepcode.com/snapshot/repo1.maven.org/maven2/com.google.protobuf/protobuf-java/2.4.1

 

3.在proto.exe同级目录,编写一个msg.proto文件:

 

  1. package tutorial;   
  2. option java_package = "com.protobuftest.protobuf";   
  3. option java_outer_classname = "PersonProbuf";   
  4. message Person {   
  5.   required string name = 1;   
  6.   required int32 id = 2;   
  7.   optional string email = 3;   
  8.   enum PhoneType {   
  9.     MOBILE = 0;   
  10.     HOME = 1;   
  11.     WORK = 2;   
  12.   }   
  13.   message PhoneNumber {   
  14.     required string number = 1;   
  15.     optional PhoneType type = 2 [default = HOME];   
  16.   }   
  17.   repeated PhoneNumber phone = 4;   
  18.   message CountryInfo {  
  19.           required string name = 1;  
  20.           required string code = 2;  
  21.           optional int32 number = 3;  
  22.   }  
  23. }   
  24. message AddressBook {   
  25.   repeated Person person = 1;   
  26. }  

 

4.使用如下命令编译这个文件:

 

5.将生成的ProtoBufferPractice.java文件引入eclipse

 

6.把下载的protobuf-java-2.4.1.jar也引入工程

 

7.使用方法:

 

  1. package com.protobuftest;  
  2.  
  3. import java.util.List;  
  4. import com.google.protobuf.InvalidProtocolBufferException;  
  5. import com.protobuftest.protobuf.PersonProbuf;  
  6. import com.protobuftest.protobuf.PersonProbuf.Person;  
  7. import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumber;  
  8. import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumberOrBuilder;  
  9. import com.protobuftest.protobuf.PersonProbuf.Person.PhoneType;  
  10.  
  11. public class ProtoBufTest {  
  12. /**  
  13.  * @param args  
  14.  */ 
  15. public static void main(String[] args) {  
  16. // TODO Auto-generated method stub  
  17. PersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();  
  18. builder.setEmail("kkk@email.com");  
  19. builder.setId(1);  
  20. builder.setName("TestName");  
  21. builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("131111111").setType(PersonProbuf.Person.PhoneType.MOBILE));  
  22. builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("011111").setType(PersonProbuf.Person.PhoneType.HOME));  
  23. Person person = builder.build();  
  24. byte[] buf = person.toByteArray();  
  25. try {  
  26. Person person2 = PersonProbuf.Person.parseFrom(buf);  
  27. System.out.println(person2.getName() + ", " + person2.getEmail());  
  28. List<PhoneNumber> lstPhones = person2.getPhoneList();  
  29. for (PhoneNumber phoneNumber : lstPhones) {  
  30. System.out.println(phoneNumber.getNumber());  
  31. }  
  32. catch (InvalidProtocolBufferException e) {  
  33. // TODO Auto-generated catch block  
  34. e.printStackTrace();  
  35. }  
  36. System.out.println(buf);  
  37. }  

 

源文档 <http://blog.csdn.net/csharp25/article/details/6632127

 

原文链接:http://www.cnblogs.com/brainy/archive/2012/05/11/2496581.html

分享到:
评论

相关推荐

    Java protobuf框架使用向导ProtoBuf

    Java protobuf框架使用向导ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf

    Java_protobuf框架使用向导

    要使用Java Protobuf框架,首先需要下载相应的工具。在`http://code.google.com/p/protobuf/downloads/list`,你可以找到适用于Windows系统的protobuf编译器proto.exe。同时,你需要下载对应的protobuf-java库,如...

    java protobuf 一键编辑工具

    Java Protobuf 一键编辑工具是基于Python PyQt4框架开发的一款实用程序,专为简化Protocol Buffers(Protobuf)文件的编辑和转换流程而设计。Protocol Buffers是Google开发的一种数据序列化协议,常用于结构化数据的...

    protobuf-java-3.7.1-API文档-中文版.zip

    赠送jar包:protobuf-java-3.7.1.jar; 赠送原API文档:protobuf-java-3.7.1-javadoc.jar; 赠送源代码:protobuf-java-3.7.1-sources.jar; 赠送Maven依赖信息文件:protobuf-java-3.7.1.pom; 包含翻译后的API文档...

    protobuf3转java工具

    总的来说,protobuf3转Java工具是开发者在使用protobuf3时不可或缺的辅助工具,它极大地简化了protobuf协议到Java代码的转换过程,提高了开发效率,同时利用protobuf的优势实现了高效的数据交换。对于处理大规模数据...

    protobuf java 接口 demo

    5. **服务端实现**: 你可以使用Java的gRPC库,它基于HTTP/2和protobuf,提供高性能的RPC框架。在服务端,你需要定义服务接口和实现,处理客户端的请求。 6. **客户端调用**: 客户端则需要创建一个stub,调用服务端...

    Java 和 protobuf 3.5开发实例一

    在本文中,我们将深入探讨如何使用Java与...在实际项目中,protobuf通常与RPC框架(如gRPC)结合使用,实现高效的跨平台通信。理解并熟练掌握protobuf的使用,能够显著提升Java应用的数据处理性能和网络通信效率。

    protobuf-java-3.5.1.jar

    7. **与其他技术的集成**:protobuf可以与gRPC(Google的高性能RPC框架)结合使用,提供基于protobuf的接口定义和服务调用。 8. **类型安全**:与JSON等文本格式相比,protobuf的强类型特性可以避免因数据类型错误...

    protobuf2协议文件转java

    总结来说,protobuf2协议文件转java的过程主要包括编写.proto文件定义数据结构,使用protoc编译器生成Java代码,然后在Java程序中利用这些生成的类进行序列化和反序列化操作。protobuf不仅提高了数据传输的效率,还...

    protobuf-java完整包(jar+source+javadoc)

    protobuf-java完整包(jar+source+javadoc+本地编译器),难得资源,直接导入可用! 使用教程: 1. 编辑build.bat,根据build.bat内设置的路径,把.proto文件放到相应的文件夹内,执行build.bat即可把.proto文件编译...

    protobuf2+java

    标题 "protobuf2+java" 指涉的是Google开源的Protocol Buffers(简称protobuf)的第二版与Java语言的结合使用。Protocol Buffers是一种高效的数据序列化协议,它允许开发者定义数据结构,然后生成能够在各种数据平台...

    protobuf序列化JAVA使用的JAR包V3.15

    标题中的"protobuf序列化JAVA使用的JAR包V3.15"指的是protobuf的Java实现,版本为3.15,以JAR(Java Archive)的形式提供。JAR文件是Java平台特有的归档文件,包含了编译后的类文件和其他资源,使得开发者可以直接...

    ProtoBuf的介绍以及在Java中使用protobuf将对象进行序列化与反序列化示例代码.rar

    `HelloNetty`可能是一个示例项目,展示如何在使用Netty框架的网络应用中利用ProtoBuf进行数据传输。Netty提供了ChannelHandlerContext对象的writeAndFlush()方法,可以直接将ProtoBuf序列化的字节流写入网络通道。...

    Unity3D 与 Java 基于 Protobuf 通信实现(客户端)

    在Java服务器端,你需要使用Google的官方Protobuf库,同样需要定义.proto文件并生成Java类。这样,客户端和服务器就有了共享的数据格式,可以互相理解对方发送的数据。 在Unity3D的SocketModule中,你需要创建一个...

    protobuf-java-3.16.1-API文档-中文版.zip

    赠送jar包:protobuf-java-3.16.1.jar; 赠送原API文档:protobuf-java-3.16.1-javadoc.jar; 赠送源代码:protobuf-java-3.16.1-sources.jar; 赠送Maven依赖信息文件:protobuf-java-3.16.1.pom; 包含翻译后的API...

    protobuf-java-2.5.0jar包

    开发者可以使用protobuf编译器(protoc)将.proto文件转换为Java类,这些类提供了序列化和反序列化的API,使得程序能够轻松地处理和解析protobuf格式的数据。 使用protobuf有以下几个关键步骤: 1. 定义数据结构:...

    java序列化之protobuf

    开发者可以使用protobuf编译器将.proto文件编译成Java、C++、Python等语言的类,这些类提供了序列化和反序列化的方法。protobuf的优势在于它产生的代码执行速度快,序列化后的数据体积小,且具有良好的版本兼容性。 ...

    protobuf-java-3.11.4-API文档-中文版.zip

    赠送jar包:protobuf-java-3.11.4.jar; 赠送原API文档:protobuf-java-3.11.4-javadoc.jar; 赠送源代码:protobuf-java-3.11.4-sources.jar; 赠送Maven依赖信息文件:protobuf-java-3.11.4.pom; 包含翻译后的API...

    C#Java生成protobuf工具pro

    总结起来,"C#Java生成protobuf工具pro"是一个针对C#和Java开发者的专业protobuf工具,它能解析.proto文件并生成对应语言的代码,简化protobuf在多语言环境下的使用,提高开发效率,并可能提供了额外的数据转换和...

    protobuf java 工程示例

    描述中的“protobuf工程示例,protobuf读写消息示例”意味着这个压缩包包含了一个展示如何在Java项目中使用protobuf进行消息序列化和反序列化的实例。在这个过程中,开发者通常会定义.proto文件,该文件包含了...

Global site tag (gtag.js) - Google Analytics