[id='proto_files']
= Protobuf Schemas
Protocol Buffers, Protobuf, schemas provide structured representations of your
Java objects.

You define Protobuf message types `.proto` schema files as in the following
example:

[source,proto]
----
include::config_examples/library.proto[]
----

The preceding `.library.proto` file defines an entity (Protobuf message type)
named _Book_ that is contained in the _book_sample_ package. _Book_ declares
several fields of primitive types and an array (Protobuf repeatable field) 
named _authors_, which is the _Author_ message type.

.Protobuf Messages

* You can nest messages but the resulting structure is strictly a tree, never a graph.
* Type inheritance is not possible.
* Collections are not supported but you can emulate arrays with repeated fields.

.Reference

* link:https://developers.google.com/protocol-buffers/docs/overview[Protocol Buffers Developer Guide]
