Avro kernel classes.

A {@link org.apache.avro.Schema} provides an abstract definition of a data type.

The in-memory representation of data is determined by {@link org.apache.avro.io.DatumReader} and {@link org.apache.avro.io.DatumWriter} implementations. Generic implementations are provided in the {@link org.apache.avro.generic} package. A {@link org.apache.avro.compiler.specific.SpecificCompiler compiler} can generate specific java classes and interfaces for schemas and protocols. Schemas may be automatically generated for existing Java classes by reflection using the {@link org.apache.avro.reflect} package.

Data of a given schema is always serialized identically, regardless of its in-memory representation, by traversing the schema and writing leaf values from the data structure with a {@link org.apache.avro.io.Encoder}. Deserializing similarly proceeds by traversing the schema, reading leaf values with a {@link org.apache.avro.io.Decoder} and storing them in an in-memory data structure.