blob: 3bfeb0f169016e90d8d6d3b4ec3986ce26c7ac37 [file] [log] [blame] [view]
temporal40ee5512008-07-10 02:12:20 +00001Protocol Buffers - Google's data interchange format
Feng Xiao17007a62014-08-28 14:39:49 -07002===================================================
3
temporal40ee5512008-07-10 02:12:20 +00004Copyright 2008 Google Inc.
Feng Xiao17007a62014-08-28 14:39:49 -07005
Protobuf Team Bot016ef232022-11-23 13:53:12 -08006[Protocol Buffers documentation](https://developers.google.com/protocol-buffers/)
temporal40ee5512008-07-10 02:12:20 +00007
Feng Xiaod0e01142016-01-21 17:06:38 -08008Overview
9--------
temporal40ee5512008-07-10 02:12:20 +000010
Feng Xiaod0e01142016-01-21 17:06:38 -080011Protocol Buffers (a.k.a., protobuf) are Google's language-neutral,
12platform-neutral, extensible mechanism for serializing structured data. You
Sylvain Baubeaue5ec85e2016-01-25 21:41:31 +010013can find [protobuf's documentation on the Google Developers site](https://developers.google.com/protocol-buffers/).
Feng Xiao64d86522016-01-06 16:25:35 -080014
Feng Xiaod0e01142016-01-21 17:06:38 -080015This README file contains protobuf installation instructions. To install
16protobuf, you need to install the protocol compiler (used to compile .proto
17files) and the protobuf runtime for your chosen programming language.
Feng Xiao64d86522016-01-06 16:25:35 -080018
Feng Xiaod0e01142016-01-21 17:06:38 -080019Protocol Compiler Installation
20------------------------------
Feng Xiao64d86522016-01-06 16:25:35 -080021
Feng Xiaod0e01142016-01-21 17:06:38 -080022The protocol compiler is written in C++. If you are using C++, please follow
23the [C++ Installation Instructions](src/README.md) to install protoc along
24with the C++ runtime.
Feng Xiao64d86522016-01-06 16:25:35 -080025
Feng Xiaod0e01142016-01-21 17:06:38 -080026For non-C++ users, the simplest way to install the protocol compiler is to
Protobuf Team Bot016ef232022-11-23 13:53:12 -080027download a pre-built binary from our [GitHub release page](https://github.com/protocolbuffers/protobuf/releases).
Feng Xiaode000522014-08-28 11:18:51 -070028
Feng Xiaod0e01142016-01-21 17:06:38 -080029In the downloads section of each release, you can find pre-built binaries in
Protobuf Team Bot016ef232022-11-23 13:53:12 -080030zip packages: `protoc-$VERSION-$PLATFORM.zip`. It contains the protoc binary
31as well as a set of standard `.proto` files distributed along with protobuf.
Feng Xiaode000522014-08-28 11:18:51 -070032
Feng Xiaod0e01142016-01-21 17:06:38 -080033If you are looking for an old version that is not available in the release
Protobuf Team Bot016ef232022-11-23 13:53:12 -080034page, check out the [Maven repository](https://repo1.maven.org/maven2/com/google/protobuf/protoc/).
Feng Xiaode000522014-08-28 11:18:51 -070035
Feng Xiaod0e01142016-01-21 17:06:38 -080036These pre-built binaries are only provided for released versions. If you want
noahdietz5abf8022022-04-12 10:25:08 -070037to use the github main version at HEAD, or you need to modify protobuf code,
Feng Xiaod0e01142016-01-21 17:06:38 -080038or you are using C++, it's recommended to build your own protoc binary from
39source.
temporal40ee5512008-07-10 02:12:20 +000040
Mike Kruskaled5c57a2022-08-10 22:51:29 -070041If you would like to build protoc binary from source, see the [C++ Installation Instructions](src/README.md).
temporal40ee5512008-07-10 02:12:20 +000042
Feng Xiaod0e01142016-01-21 17:06:38 -080043Protobuf Runtime Installation
44-----------------------------
temporal40ee5512008-07-10 02:12:20 +000045
Feng Xiaod0e01142016-01-21 17:06:38 -080046Protobuf supports several different programming languages. For each programming
47language, you can find instructions in the corresponding source directory about
48how to install protobuf runtime for that specific language:
temporal40ee5512008-07-10 02:12:20 +000049
Joshua Haberman96ccf402021-05-20 10:06:36 -070050| Language | Source |
51|--------------------------------------|-------------------------------------------------------------|
52| C++ (include C++ runtime and protoc) | [src](src) |
53| Java | [java](java) |
54| Python | [python](python) |
55| Objective-C | [objectivec](objectivec) |
56| C# | [csharp](csharp) |
Joshua Haberman96ccf402021-05-20 10:06:36 -070057| Ruby | [ruby](ruby) |
58| Go | [protocolbuffers/protobuf-go](https://github.com/protocolbuffers/protobuf-go)|
59| PHP | [php](php) |
60| Dart | [dart-lang/protobuf](https://github.com/dart-lang/protobuf) |
Noel Kim (김민혁)e58ff982022-08-31 01:30:54 +090061| Javascript | [protocolbuffers/protobuf-javascript](https://github.com/protocolbuffers/protobuf-javascript)|
temporal40ee5512008-07-10 02:12:20 +000062
Feng Xiao74bf45f2017-09-08 15:44:09 -070063Quick Start
64-----------
temporal40ee5512008-07-10 02:12:20 +000065
Protobuf Team Bot016ef232022-11-23 13:53:12 -080066The best way to learn how to use protobuf is to follow the [tutorials in our
67developer guide](https://developers.google.com/protocol-buffers/docs/tutorials).
Feng Xiao74bf45f2017-09-08 15:44:09 -070068
69If you want to learn from code examples, take a look at the examples in the
70[examples](examples) directory.
71
72Documentation
73-------------
temporal40ee5512008-07-10 02:12:20 +000074
Protobuf Team Bot016ef232022-11-23 13:53:12 -080075The complete documentation is available via the [Protocol Buffers documentation](https://developers.google.com/protocol-buffers/).
Protocol Buffers Docs1cb0d642022-07-17 13:16:59 +000076
77Developer Community
78-------------------
79
80To be alerted to upcoming changes in Protocol Buffers and connect with protobuf developers and users,
81[join the Google Group](https://groups.google.com/g/protobuf).
82