# Module jdk.compiler

Defines the implementation of the system Java compiler and its command line equivalent, javac.

## javac

This module provides the equivalent of command-line access to javac via the `ToolProvider` and `Tool` service provider interfaces (SPIs), and more flexible access via the `JavaCompiler` SPI.

Instances of the tools can be obtained by calling `ToolProvider.findFirst` or the service loader with the name `"javac"`.

In addition, instances of `JavaCompiler.CompilationTask` obtained from JavaCompiler can be downcast to `JavacTask` for access to lower level aspects of javac, such as the `Abstract Syntax Tree` (AST).

This module uses the `FileSystemProvider` API to locate file system providers. In particular, this means that a jar file system provider, such as that in the `jdk.zipfs` module, must be available if the compiler is to be able to read JAR files.

Tool Guides:
  javac

Module Graph:
Since:
  9

- - ### Packages

    Exports
    Package | Description
    --- | ---
    com.sun.source.doctree | Provides interfaces to represent documentation comments as abstract syntax trees (AST).
    com.sun.source.tree | Provides interfaces to represent source code as abstract syntax trees (AST).
    com.sun.source.util | Provides utilities for operations on abstract syntax trees (AST).
    com.sun.tools.javac | This package provides a legacy entry point for the javac tool.

    Indirect Exports
    From | Packages
    --- | ---
    java.compiler | javax.annotation.processing javax.lang.model javax.lang.model.element javax.lang.model.type javax.lang.model.util javax.tools

  - ### Modules

    Requires
    Modifier | Module | Description
    --- | --- | ---
    transitive | java.compiler | Defines the Language Model, Annotation Processing, and Java Compiler APIs.

  - ### Services

    Provides
    Type | Description
    --- | ---
    JavaCompiler |
    Tool |
    ToolProvider |

    Uses
    Type | Description
    --- | ---
    Plugin | The interface for a javac plug-in.
    Processor | The interface for an annotation processor.