1. A method for deferring software implementation, the method comprising: creating one or more source code files having a plurality of software components provided therein; annotating a selected set of the software components with metadata defining one or more criteria, thereby creating one or more annotated source code files; compiling, using a processor of a computing system, the annotated source code files to create one or more intermediate code files; and loading one or more of the selected set of software components from the intermediate code files based on the criteria defined by the metadata in the software components, wherein the criteria includes a condition that is expressed within the metadata itself and that is evaluated based on a hardware configuration of the computing system to determine whether each of the annotated software components is loaded during load time.