There's the compile of Java source code into Java Byte Code (i.e. the transformation from *.java to *.class files). Then there's the compile of Java Byte Code into machine specific language (i.e. the JIT compilers present in the JVM).
So which form of compilation are you interested in? The compilation from source to byte code is normally incremented at the file level. The compilation from byte code to machine code is highly specific to the Virtual Machine that you are using and is dependent on the optimization techniques provided by the vendor.