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文件:
- package tutorial;
- option java_package = "com.protobuftest.protobuf";
- option java_outer_classname = "PersonProbuf";
- message Person {
- required string name = 1;
- required int32 id = 2;
- optional string email = 3;
- enum PhoneType {
- MOBILE = 0;
- HOME = 1;
- WORK = 2;
- }
- message PhoneNumber {
- required string number = 1;
- optional PhoneType type = 2 [default = HOME];
- }
- repeated PhoneNumber phone = 4;
- message CountryInfo {
- required string name = 1;
- required string code = 2;
- optional int32 number = 3;
- }
- }
- message AddressBook {
- repeated Person person = 1;
- }
4.使用如下命令编译这个文件:
5.将生成的ProtoBufferPractice.java文件引入eclipse
6.把下载的protobuf-java-2.4.1.jar也引入工程
7.使用方法:
- package com.protobuftest;
- import java.util.List;
- import com.google.protobuf.InvalidProtocolBufferException;
- import com.protobuftest.protobuf.PersonProbuf;
- import com.protobuftest.protobuf.PersonProbuf.Person;
- import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumber;
- import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumberOrBuilder;
- import com.protobuftest.protobuf.PersonProbuf.Person.PhoneType;
- public class ProtoBufTest {
- /**
- * @param args
- */
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- PersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();
- builder.setEmail("kkk@email.com");
- builder.setId(1);
- builder.setName("TestName");
- builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("131111111").setType(PersonProbuf.Person.PhoneType.MOBILE));
- builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("011111").setType(PersonProbuf.Person.PhoneType.HOME));
- Person person = builder.build();
- byte[] buf = person.toByteArray();
- try {
- Person person2 = PersonProbuf.Person.parseFrom(buf);
- System.out.println(person2.getName() + ", " + person2.getEmail());
- List<PhoneNumber> lstPhones = person2.getPhoneList();
- for (PhoneNumber phoneNumber : lstPhones) {
- System.out.println(phoneNumber.getNumber());
- }
- } catch (InvalidProtocolBufferException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.out.println(buf);
- }
- }
源文档 <http://blog.csdn.net/csharp25/article/details/6632127>
原文链接:http://www.cnblogs.com/brainy/archive/2012/05/11/2496581.html
相关推荐
Java protobuf框架使用向导ProtoBuf,全称是Protocol Buffers, 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf
要使用Java Protobuf框架,首先需要下载相应的工具。在`http://code.google.com/p/protobuf/downloads/list`,你可以找到适用于Windows系统的protobuf编译器proto.exe。同时,你需要下载对应的protobuf-java库,如...
Java Protobuf 一键编辑工具是基于Python PyQt4框架开发的一款实用程序,专为简化Protocol Buffers(Protobuf)文件的编辑和转换流程而设计。Protocol Buffers是Google开发的一种数据序列化协议,常用于结构化数据的...
赠送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时不可或缺的辅助工具,它极大地简化了protobuf协议到Java代码的转换过程,提高了开发效率,同时利用protobuf的优势实现了高效的数据交换。对于处理大规模数据...
5. **服务端实现**: 你可以使用Java的gRPC库,它基于HTTP/2和protobuf,提供高性能的RPC框架。在服务端,你需要定义服务接口和实现,处理客户端的请求。 6. **客户端调用**: 客户端则需要创建一个stub,调用服务端...
在本文中,我们将深入探讨如何使用Java与...在实际项目中,protobuf通常与RPC框架(如gRPC)结合使用,实现高效的跨平台通信。理解并熟练掌握protobuf的使用,能够显著提升Java应用的数据处理性能和网络通信效率。
7. **与其他技术的集成**:protobuf可以与gRPC(Google的高性能RPC框架)结合使用,提供基于protobuf的接口定义和服务调用。 8. **类型安全**:与JSON等文本格式相比,protobuf的强类型特性可以避免因数据类型错误...
总结来说,protobuf2协议文件转java的过程主要包括编写.proto文件定义数据结构,使用protoc编译器生成Java代码,然后在Java程序中利用这些生成的类进行序列化和反序列化操作。protobuf不仅提高了数据传输的效率,还...
protobuf-java完整包(jar+source+javadoc+本地编译器),难得资源,直接导入可用! 使用教程: 1. 编辑build.bat,根据build.bat内设置的路径,把.proto文件放到相应的文件夹内,执行build.bat即可把.proto文件编译...
标题 "protobuf2+java" 指涉的是Google开源的Protocol Buffers(简称protobuf)的第二版与Java语言的结合使用。Protocol Buffers是一种高效的数据序列化协议,它允许开发者定义数据结构,然后生成能够在各种数据平台...
标题中的"protobuf序列化JAVA使用的JAR包V3.15"指的是protobuf的Java实现,版本为3.15,以JAR(Java Archive)的形式提供。JAR文件是Java平台特有的归档文件,包含了编译后的类文件和其他资源,使得开发者可以直接...
`HelloNetty`可能是一个示例项目,展示如何在使用Netty框架的网络应用中利用ProtoBuf进行数据传输。Netty提供了ChannelHandlerContext对象的writeAndFlush()方法,可以直接将ProtoBuf序列化的字节流写入网络通道。...
在Java服务器端,你需要使用Google的官方Protobuf库,同样需要定义.proto文件并生成Java类。这样,客户端和服务器就有了共享的数据格式,可以互相理解对方发送的数据。 在Unity3D的SocketModule中,你需要创建一个...
赠送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编译器(protoc)将.proto文件转换为Java类,这些类提供了序列化和反序列化的API,使得程序能够轻松地处理和解析protobuf格式的数据。 使用protobuf有以下几个关键步骤: 1. 定义数据结构:...
开发者可以使用protobuf编译器将.proto文件编译成Java、C++、Python等语言的类,这些类提供了序列化和反序列化的方法。protobuf的优势在于它产生的代码执行速度快,序列化后的数据体积小,且具有良好的版本兼容性。 ...
赠送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工具,它能解析.proto文件并生成对应语言的代码,简化protobuf在多语言环境下的使用,提高开发效率,并可能提供了额外的数据转换和...
描述中的“protobuf工程示例,protobuf读写消息示例”意味着这个压缩包包含了一个展示如何在Java项目中使用protobuf进行消息序列化和反序列化的实例。在这个过程中,开发者通常会定义.proto文件,该文件包含了...