Oracle ADF architecture
Oracle ADF has a well-proven, extensible, and layered architecture, which improves the flexibility, maintainability, and scalability of an application.
What does that mean to you?
Some of the core benefits are as follows:
As an architect, you can pick up the best fitting technology from a wide range of lists while building each of the layers. For example, ADF supports a variety of ways to build business services, which include EJB or (JPA), web services, simple Java objects, and ADF Business Components (ADF BC). On the client tier, applications can choose from Java Swing, core Java Server Faces (JSF), ADF Faces, or ADF, Mobile UI. Oracle ADF along with JDeveloper IDE, offers consistent development experience across different technologies.
If the use case demands, your ADF application can be easily enhanced later to use other technologies from Oracle Fusion Middleware Stack, such as Service Oriented Architecture (SOA), WebCenter, and so on, with minimal integration effort.
Oracle ADF follows the Model-View-Controller (MVC) design paradigm. The layered architecture of the framework simplifies maintenance, decouples implementations from interfaces, and improves reusability of the components across applications. The layered architecture of the ADF application is really useful when you need to build a User Interface (UI) for various channels such as web, mobile, tablet, and desktop, reusing the existing business services.
It is time for us to give a glance at the architectural building blocks of ADF to study how are they put together to build high performing service-oriented applications.
View layer
The View layer contains the UI for the application ADF stack that supports the following view technologies, targeting various presentation channels such as the web browser, desktop, mobile, tablet PC, and Microsoft Excel:
ADF Faces: Rich web UI framework built on top of the Java Server Faces (JSF) technology
Apache MyFaces Trinidad: An open source JSF-based web framework (ADF Faces components are based on Trinidad components)
JSF: Core JSF web technology from the Java EE stack
ADF Mobile: ADF Mobile supports both mobile browser client and mobile native clients, which can run on smart phones and tablet PCs
Microsoft Excel: Provides Microsoft Excel frontend for your ADF business services
Controller layer
The Controller layer controls the flow of the application. ADF Controller is used for the ADF Faces application, which provides an improved navigation and state management model on top of JSF. The greatest advantage of ADF Controller over the navigation model offered by core JSF is that it improves the modularity of the system by splitting a single monolithic navigation model to multiple reusable navigation cases known as task flows. Task flows are declarative solutions. Developers typically do not need to write any code for defining navigation in applications. Apart from the support for modular application design, ADF task flows also offer a declarative transaction model and state management solutions.
Model layer
The Model layer binds the UI with business services, abstracting the implementation details. The model layer is functionally divided into two components—data control and data binding.
Data control: Data control acts as a proxy cum adaptor for your business services and decouples the view layer from the business service implementation
Data binding: Data binding abstracts the data access from data control and provides a generic interface for invoking common operations
The ADF model layer plays a very vital role in the entire technology stack. It is the model layer along with JDeveloper IDE that provides a visual and declarative UI development experience for the end user, irrespective of the technology used for building business services. The glue code used for binding the UI with the data model is plumbed by the model layer at runtime based on the binding metadata definition for the page.
Business services layer
The Business services layer provides access to data from various sources and handles the business logic as well. ADF comes with out-of-the-box binding support for the following technologies:
ADF BC
EJBs
Web services
Plain Old Java Objects (POJO)
Business Activity Monitoring (BAM)
Business Intelligence (BI)
You can choose any of these technologies for building the business services.
Note
The Fusion web application in this book refers to the enterprise web application built using ADF Faces for the view, ADF Model for data binding, ADF Page Flow for the controller, and ADF Business Components for business services.