My experience is that slow-compiling projects tend to have bloated header files. The C/C++ pre-processor needs to apply #define's and friends before it touches source files. Java compilers don't suffer from this problem because the Java spec doesn't have support for header files.