Oracle ADF is an end-to-end Java EE framework that simplifies application development by providing out of the box infrastructure services and a visual and declarative development experience.
What is Oracle ADF
Oracle Application Development Framework (Oracle ADF) is an end-to-end application framework that builds on Java EE standards and open-source technologies to simplify and accelerate implementing enterprise applications. Oracle ADF is suitable for enterprise developers who want to create applications that search, display, create, modify, and validate data using web, mobile, and desktop interfaces.
You can use the whole Oracle ADF framework to create an application, or you can use parts of the framework in combination with other technologies. Throughout this guide, applications that contain any ADF technologies are generally referred to as ADF applications. Web applications that incorporate ADF technologies throughout the business service, model, controller, and view layers are referred to as Fusion web applications.
Oracle ADF Key Concepts
Oracle ADF is based on the following concepts:
Rich component sets for web, mobile, and desktop clients
Declarative and reusable business logic and validation
Declarative data binding
Separation of UI-related and data-related elements (MVC architecture)
Enhanced page flow functionality, including modular and reusable task flows
Declarative security on ADF resources
Customer level and developer level customization through metadata
Oracle ADF Key Components
This section provides a synopsis of the central high-level components in the ADF stack, including some of the underlying technologies such as JavaServer Faces (JSF) as well as other business and data services that are commonly part of an application. See Figure 1-1 for a visual depiction of the overall architecture, including the model, view, and controller (MVC) components.
ADF Model
ADF Model is a central part of Oracle ADF, enabling you to create ADF applications based on different types of business services. ADF Model implements data controls and data bindings. Data controls abstract the implementation technology of a business service by using standard metadata interfaces to describe the service's operations and data collections, including information about the properties, methods, and types involved. In Oracle JDeveloper, developers can view that information as icons that they can easily drag and drop onto a page. When the developer drags the representation of the service onto the page, Oracle JDeveloper automatically creates the bindings from the page to the services. At runtime, the ADF Model layer reads the information describing the application's data controls and data bindings from appropriate XML files and implements the two-way connection between the user interface and the application's business service.
Oracle ADF provides ready-to-use data control implementations for common business service technologies, such as the following:
ADF Business Components
Enterprise JavaBeans (EJB) session beans and JPA Persistence API entities
JavaBeans components
Web services (SOAP and REST)
ADF Business Components
ADF Business Components are prebuilt application objects that are based on Java EE design patterns and best practices and which simplify the development and maintenance of complex, high-performance, and database-centric services.
When building service-oriented Java EE applications, developers implement the core business logic as one or more business services. These back-end services provide clients with a way to query, insert, update, and delete business data as required while enforcing appropriate business rules such as input validators. Using ADF Business Components, you can develop such services declaratively using wizards and visual editors in JDeveloper to generate the required metadata.
When you create an ADF Business Components application module, the services that it encapsulates are exposed through ADF Model as data controls, which you can then use to create databound components on web pages and other user interfaces. For the most common use cases, you can thus create a complete application without writing any Java code.
ADF Controller
In the controller layer of MVC applications, ADF Controller provides an enhanced navigation and state management model on top of JSF's controller layer. Using JDeveloper, you can declaratively create task flows that can manage application control between different types of activities, such as pages, methods on managed beans, declarative case statements, or calls to other task flows. In addition, you can create bounded task flows, which are reusable task flow segments that can be called from an overall task flow.
ADF Faces
ADF Faces provides the view layer for ADF applications. ADF Faces is a complete view framework that consists of over 150 Ajax-enabled JavaServer Faces (JSF) components, all built on top of the JSF standard. ADF Faces also can be used as a standalone component set that works with other non-ADF controller and model technologies.
ADF Mobile Browser
ADF Mobile browser enables you to create application views that are optimized for browsers on small devices.
ADF Desktop Integration
ADF Desktop Integration enables developers to extend Fusion web applications so that end users can work with them using Microsoft Excel workbooks as a client.
ADF Swing
ADF Swing is a framework for developing databound Java clients that use ADF Model to access business services. You can use ADF Swing to work with a number of business services on the back end, including ADF Business Components, Enterprise JavaBeans components, and web services. This guide does not cover ADF Swing. For more information on ADF Swing, see Developing Swing Applications with Oracle Application Development Framework.
ADF Security
The ADF Security framework uses and extends the Oracle Platform Security Services (OPSS) architecture to simplify the securing of ADF applications and enables fine-grained access control for ADF resources such as bounded task flows.
Oracle Metadata Services
The Oracle Metadata Services (MDS) framework allows you to create applications that your customers can further customize for their users or customers and which the end users can also customize without touching the source code or affecting the ability of the application to be patched or updated.
To know more check the official page