iMake is a platform independent make processor written entirely in Java for creating scalable enterprise solutions. Using iMake, developers can easily create and maintain libraries, executables, and object files from source files. iMake lets developers automate site and program maintenance using makefiles which describe how the files depend on each other and how to update a file when the files it depends on change. iMake is particularly useful for projects that have many files, since only those files that have changed are regenerated, achieving this by looking at the date and time that each dependant file before performing a operations. iMake features include platform independence, a make facility, macro processor, user inference and target definitions, multiple targets, conditional compilation, recursive expression evaluator, command-line definitions, extensible search path, includes, and other functionality found in professional make processors.