ADF is a metadata-driven framework. Everything that is defined declaratively is stored in XML files, rather than in compiled classes. You can handle these XML documents at run time. Optionally, you can customize run-time behavior by adding Java code for business components and the user interface, but the basic functionality of the application is contained in the metadata files.
Metadata enables back-end business services to be bound to the user interface in a uniform manner, regardless of the underlying technology. You can also define business rules declaratively by using metadata for business services.