The Java programming language Compiler Group

This group is comprised of developers involved in the design, implementation, and maintenance of the javac compiler for the Java™ programming language, and associated components.


The javac compiler reads source files written in the Java programming language, and compiles them into class files. The Java programming language is defined by The Java Language Specification (JLS) and class files are defined by The Java Virtual Machine Specification (JVMS).

Optionally, the compiler can also process annotations found in source and class files using the Pluggable Annotation Processing API (JSR 269).

The compiler is a command-line tool but can also be invoked using the Java Compiler API (JSR 199).

Source Code

The javac compiler source code is available in the OpenJDK Mercurial repositories, at

For general information about the OpenJDK repositories, and how to clone them, see The OpenJDK Developer's Guide. For the compiler, you can download and build it as part of a complete JDK forest, or you can just download and build the langtools repository to build a standalone version of the compiler.

Note that the code for the native launcher for javac is shared with all the other JDK tools, and lives in the JDK repository. If you just download and build the langtools repository, you will get an executable jar file which you can invoke directly with the java command, or with a simple shell script that is provided. Windows users will need Cygwin or similar packages to run the shell script.


Issues are tracked in the JDK Bug System. Most compiler bugs are tracked in the tools component, javac subcomponent.




The following links are for resources about the compiler, provided by non-Oracle contributors. These resources may not be completely up to date.

Related Projects