blob: 5d2695d88db1990649176ee99c9d8cb927141d67 [file] [log] [blame] [view]
Feng Xiao8052dc72016-04-19 15:29:18 -07001# Third-Party Add-ons for Protocol Buffers
2
3This page lists code related to Protocol Buffers which is developed and maintained by third parties. You may find this code useful, but note that **these projects are not affiliated with or endorsed by Google (unless explicitly marked)**; try them at your own risk. Also note that many projects here are in the early stages of development and not production-ready.
4
5If you have a project that should be listed here, please [send us a pull request](https://github.com/google/protobuf/pulls) to update this page.
6
7## Programming Languages
8
9These are projects we know about implementing Protocol Buffers for other programming languages:
10* Action Script: http://code.google.com/p/protobuf-actionscript3/
11* Action Script: https://code.google.com/p/protoc-gen-as3/
12* Action Script: https://github.com/matrix3d/JProtoc
Eric Zhong46296592016-05-30 19:41:47 +080013* Action Script: https://github.com/zhongfq/protobuf-as3/
Feng Xiao8052dc72016-04-19 15:29:18 -070014* C: https://github.com/protobuf-c/protobuf-c
15* C: http://koti.kapsi.fi/jpa/nanopb/
16* C: https://github.com/cloudwu/pbc/
17* C: https://github.com/haberman/upb/wiki
18* C: https://github.com/squidfunk/protobluff
19* C++: https://github.com/google/protobuf (Google-official implementation)
20* C/C++: http://spbc.sf.net/
21* C#: http://code.google.com/p/protobuf-csharp-port
22* C#: http://code.google.com/p/protosharp/
23* C#: https://silentorbit.com/protobuf/
24* C#/.NET/WCF/VB: http://code.google.com/p/protobuf-net/
25* Clojure: http://github.com/ninjudd/clojure-protobuf
Jie Luo920af752017-03-06 15:40:39 -080026* Common Lisp: http://github.com/ndantam/s-protobuf
Feng Xiao8052dc72016-04-19 15:29:18 -070027* Common Lisp: http://github.com/brown/protobuf
28* D: https://github.com/msoucy/dproto
29* D: http://256.makerslocal.org/wiki/index.php/ProtocolBuffer
30* D: https://github.com/opticron/ProtocolBuffer
31* Dart: https://github.com/dart-lang/dart-protobuf (runtime) https://github.com/dart-lang/dart-protoc-plugin (code generator)
32* Delphi: http://sourceforge.net/projects/protobuf-delphi/
33* Delphi: http://fundementals.sourceforge.net/dl.html
34* Elixir: https://github.com/jeremyong/exprotoc
Bing Han2fb74792017-08-23 00:03:01 +080035* Elixir: https://github.com/tony612/protobuf-elixir
Tiziano Santoro30250cd2016-12-28 01:02:12 +000036* Elm: https://github.com/tiziano88/elm-protobuf
Feng Xiao8052dc72016-04-19 15:29:18 -070037* Erlang: http://github.com/ngerakines/erlang_protobuffs/tree/master
38* Erlang: http://piqi.org/
39* Erlang: https://code.google.com/p/protoc-gen-erl/
40* Erlang: https://github.com/basho/erlang_protobuffs
Tomas Abrahamsson4d04fcd2016-08-25 15:11:45 +020041* Erlang: https://github.com/tomas-abrahamsson/gpb
Feng Xiao8052dc72016-04-19 15:29:18 -070042* Go: https://github.com/golang/protobuf (Google-official implementation)
Feng Xiao8052dc72016-04-19 15:29:18 -070043* Go: https://github.com/akunspy/gopbuf
Changjian Gaof85eecb2017-04-20 19:53:11 +080044* Go: https://github.com/gogo/protobuf
Feng Xiao8052dc72016-04-19 15:29:18 -070045* Haskell: http://hackage.haskell.org/package/hprotoc
46* Haxe: https://github.com/Atry/protoc-gen-haxe
47* Java: https://github.com/google/protobuf (Google-official implementation)
48* Java/Android: https://github.com/square/wire
49* Java ME: http://code.google.com/p/protobuf-javame/
50* Java ME: http://swingme.sourceforge.net/encode.shtml
Feng Xiao8052dc72016-04-19 15:29:18 -070051* Java ME: http://code.google.com/p/protobuf-j2me/
52* Javascript: http://code.google.com/p/protobuf-js/
53* Javascript: http://github.com/sirikata/protojs
54* Javascript: https://github.com/dcodeIO/ProtoBuf.js
55* Javascript: http://code.google.com/p/protobuf-for-node/
56* Javascript: http://code.google.com/p/protostuff/
57* Julia: https://github.com/tanmaykm/ProtoBuf.jl
58* Lua: http://code.google.com/p/protoc-gen-lua/
59* Lua: http://github.com/indygreg/lua-protobuf
60* Lua: https://github.com/Neopallium/lua-pb
61* Matlab: http://code.google.com/p/protobuf-matlab/
62* Mercury: http://code.google.com/p/protobuf-mercury/
63* Objective C: http://code.google.com/p/protobuf-objc/
64* Objective C: https://github.com/alexeyxo/protobuf-objc
65* OCaml: http://piqi.org/
66* Perl: http://groups.google.com/group/protobuf-perl
67* Perl: http://search.cpan.org/perldoc?Google::ProtocolBuffers
Mattia Barbon297ec742016-07-09 15:59:38 +020068* Perl: https://metacpan.org/pod/Google::ProtocolBuffers::Dynamic
Feng Xiao8052dc72016-04-19 15:29:18 -070069* Perl/XS: http://code.google.com/p/protobuf-perlxs/
70* PHP: http://code.google.com/p/pb4php/
71* PHP: https://github.com/allegro/php-protobuf/
72* PHP: https://github.com/chobie/php-protocolbuffers
73* PHP: http://drslump.github.com/Protobuf-PHP
74* Prolog: http://www.swi-prolog.org/pldoc/package/protobufs.html
75* Python: https://github.com/google/protobuf (Google-official implementation)
76* Python: http://eigenein.github.com/protobuf/
77* R: http://cran.r-project.org/package=RProtoBuf
78* Ruby: http://code.google.com/p/ruby-protobuf/
79* Ruby: http://github.com/mozy/ruby-protocol-buffers
80* Ruby: https://github.com/bmizerany/beefcake/tree/master/lib/beefcake
81* Ruby: https://github.com/localshred/protobuf
82* Rust: https://github.com/stepancheg/rust-protobuf/
83* Scala: http://github.com/jeffplaisance/scala-protobuf
84* Scala: http://code.google.com/p/protobuf-scala
85* Scala: https://github.com/SandroGrzicic/ScalaBuff
86* Scala: http://trueaccord.github.io/ScalaPB/
87* Swift: https://github.com/alexeyxo/protobuf-swift
Sinziana Gafitanu9819b722016-10-30 19:40:08 -070088* Swift: https://github.com/apple/swift-protobuf/
Feng Xiao8052dc72016-04-19 15:29:18 -070089* Vala: https://launchpad.net/protobuf-vala
90* Visual Basic: http://code.google.com/p/protobuf-net/
91
92## RPC Implementations
93
94GRPC (http://www.grpc.io/) is Google's RPC implementation for Protocol Buffers. There are other third-party RPC implementations as well. Some of these actually work with Protocol Buffers service definitions (defined using the `service` keyword in `.proto` files) while others just use Protocol Buffers message objects.
95
96* https://github.com/grpc/grpc (C++, Node.js, Python, Ruby, Objective-C, PHP, C#, Google-official implementation)
97* http://zeroc.com/ice.html (Multiple languages)
98* http://code.google.com/p/protobuf-net/ (C#/.NET/WCF/VB)
99* https://launchpad.net/txprotobuf/ (Python)
100* https://github.com/modeswitch/protobuf-rpc (Python)
101* http://code.google.com/p/protobuf-socket-rpc/ (Java, Python)
102* http://code.google.com/p/proto-streamer/ (Java)
103* http://code.google.com/p/server1/ (C++)
104* http://deltavsoft.com/RcfUserGuide/Protobufs (C++)
105* http://code.google.com/p/protobuf-mina-rpc/ (Python client, Java server)
106* http://code.google.com/p/casocklib/ (C++)
107* http://code.google.com/p/cxf-protobuf/ (Java)
108* http://code.google.com/p/protobuf-remote/ (C++/C#)
109* http://code.google.com/p/protobuf-rpc-pro/ (Java)
110* https://code.google.com/p/protorpc/ (Go/C++)
111* https://code.google.com/p/eneter-protobuf-serializer/ (Java/.NET)
112* http://www.deltavsoft.com/RCFProto.html (C++/Java/Python/C#)
113* https://github.com/robbinfan/claire-protorpc (C++)
114* https://github.com/BaiduPS/sofa-pbrpc (C++)
115* https://github.com/ebencheung/arab (C++)
116* http://code.google.com/p/protobuf-csharp-rpc/ (C#)
117* https://github.com/thesamet/rpcz (C++/Python, based on ZeroMQ)
118* https://github.com/w359405949/libmaid (C++, Python)
119* https://github.com/madwyn/libpbrpc (C++)
MaDuo6bd51a52017-07-06 02:31:32 +0800120* https://github.com/SeriousMa/grpc-protobuf-validation (Java)
Bing Han2fb74792017-08-23 00:03:01 +0800121* https://github.com/tony612/grpc-elixir (Elixir)
Feng Xiao8052dc72016-04-19 15:29:18 -0700122
123## Other Utilities
124
125There are miscellaneous other things you may find useful as a Protocol Buffers developer.
126
Paul Cody Johnston7b54b342017-02-01 07:16:22 -0700127* [Bazel Build](https://bazel.build)
128 * [rules_closure](https://github.com/bazelbuild/rules_closure) `js-closure`
129 * [rules_go](https://github.com/bazelbuild/rules_go) `go`
130 * [rules_protobuf](https://github.com/pubref/rules_protobuf) `java` `c++` `c#` `go` `js-closure` `js-node` `python` `ruby`
Feng Xiao8052dc72016-04-19 15:29:18 -0700131* [NetBeans IDE plugin](http://code.google.com/p/protobuf-netbeans-plugin/)
132* [Wireshark/Ethereal packet sniffer plugin](http://code.google.com/p/protobuf-wireshark/)
133* [Alternate encodings (JSON, XML, HTML) for Java protobufs](http://code.google.com/p/protobuf-java-format/)
134* [Another JSON encoder/decoder for Java](https://github.com/sijuv/protobuf-codec)
135* [Editor for serialized protobufs](http://code.google.com/p/protobufeditor/)
136* [Intellij IDEA plugin](http://github.com/nnmatveev/idea-plugin-protobuf)
137* [TextMate syntax highlighting](http://github.com/michaeledgar/protobuf-tmbundle)
138* [Oracle PL SQL plugin](http://code.google.com/p/protocol-buffer-plsql/)
139* [Eclipse editor for protobuf (from Google)](http://code.google.com/p/protobuf-dt/)
140* [C++ Builder compatible protobuf](https://github.com/saadware/protobuf-cppbuilder)
Sergei Ivanov09dc9332016-12-09 00:01:11 +0000141* Maven Protobuf Compiler Plugin
142 * By xolstice.org ([Documentation](https://www.xolstice.org/protobuf-maven-plugin/)) ([Source](https://github.com/xolstice/protobuf-maven-plugin/)) [![Maven Central](https://img.shields.io/maven-central/v/org.xolstice.maven.plugins/protobuf-maven-plugin.svg)](https://repo1.maven.org/maven2/org/xolstice/maven/plugins/protobuf-maven-plugin/)
Feng Xiao8052dc72016-04-19 15:29:18 -0700143 * http://igor-petruk.github.com/protobuf-maven-plugin/
144 * http://code.google.com/p/maven-protoc-plugin/
145 * https://github.com/os72/protoc-jar-maven-plugin
Arnold Schrijverd640cdd2017-07-21 13:06:04 +0200146* [Documentation generator plugin (Markdown/HTML/DocBook/...)](https://github.com/pseudomuto/protoc-gen-doc)
Feng Xiao8052dc72016-04-19 15:29:18 -0700147* [DocBook generator for .proto files](http://code.google.com/p/protoc-gen-docbook/)
148* [Protobuf for nginx module](https://github.com/dbcode/protobuf-nginx/)
149* [RSpec matchers and Cucumber step defs for testing Protocol Buffers](https://github.com/connamara/protobuf_spec)
150* [Sbt plugin for Protocol Buffers](https://github.com/Atry/sbt-cppp)
151* [Gradle Protobuf Plugin](https://github.com/aantono/gradle-plugin-protobuf)
152* [Multi-platform executable JAR and Java API for protoc](https://github.com/os72/protoc-jar)
153* [Python scripts to convert between Protocol Buffers and JSON](https://github.com/NextTuesday/py-pb-converters)
154* [Visual Studio Language Service support for Protocol Buffers](http://visualstudiogallery.msdn.microsoft.com/4bc0f38c-b058-4e05-ae38-155e053c19c5)
155* [C++ library for serialization/de-serialization between Protocol Buffers and JSON.](https://github.com/yinqiwen/pbjson)
156* [ProtoBuf with Java EE7 Expression Language 3.0; pure Java ProtoBuf Parser and Builder.](https://github.com/protobufel/protobuf-el)
157* [Notepad++ Syntax Highlighting for .proto files](https://github.com/chai2010/notepadplus-protobuf)
158* [Linter for .proto files](https://github.com/ckaznocha/protoc-gen-lint)
os72f6be0d12016-05-31 22:07:14 -0700159* [Protocol Buffers Dynamic Schema - create protobuf schemas programmatically (Java)] (https://github.com/os72/protobuf-dynamic)
David Konsumer3055a022017-04-18 18:58:21 -0700160* [Make protoc plugins in NodeJS](https://github.com/konsumer/node-protoc-plugin)
Giorgio Azzinnaroa3e17522017-08-04 21:19:36 +0200161* [ProfaneDB - A Protocol Buffers database](https://profanedb.gitlab.io)