Here you can find an overview of compilers for the Java programming language. Compilers are software development tools which translate source code into some other format. With Java, source code gets translated either to bytecode (.class files) or native executables (e.g. .exe files under Windows). This site has two different pages for those two groups of compilers:
Note that just-in-time compilers (JIT compilers) do not belong on this page, although the compiler part in the name suggests that (JIT compilers have a page of their own). They are typically not standalone products but part of a Java virtual machine. During the execution of Java bytecode, they convert parts of that bytecode to native code so that these parts are executed faster. As a disadvantage, they often require more memory than simple interpreting virtual machines because both bytecode and the corresponding native code are in memory at the same time.
Also somewhat related to the topic of this page are translators that convert Java source code to source code of another programming language. See the corresponding section of the Open Directory for a list of such translators.
I also offer a page on Java class file optimizers and compression tools. It may be interesting for everyone who is using bytecode compilers and wants to reduce the size of those files.