java files for each of the classes/enums which it will generate for each top-level message, enumeration, and service declared in the. Then the compiler will also create separate. proto file contains a line like the following: java file containing a Java class which represents the. proto file input, the compiler creates a wrapper. The parameter to the -java_out= option is the directory where you want the compiler to write your Java output. The protocol buffer compiler produces Java output when invoked with the -java_out= command-line flag. Note that no Java protocol buffer methods accept or return nulls unless otherwise specified. You should read the proto2 language guide and/or proto3 language guide before reading this document. Any differences between proto2 and proto3 generated code are highlighted - note that these differences are in the generated code as described in this document, not the base message classes/interfaces, which are the same in both versions. This page describes exactly what Java code the protocol buffer compiler generates for any given protocol definition.