The Java™ programming language compiler API is a set of interfaces that describes the functions provided by a compiler. This API has three main objectives:

- Allow invocation of a compiler from a program using standardized interfaces.
- Provide interfaces enabling the compiler to report diagnostics in a structured way.
- Provide interfaces enabling clients of the compiler to override how file objects are found. "File objects" is a file abstraction.