Oracle Database Administration, Oracle Developer Suite, Oracle JDeveloper, Oracle BI Publisher, Oracle Forms/Reports,Oracle SQL Developer

ADF Frequently Asked Questions

Concepts and Architecture

What is ADF?

Oracle ADF is an end-to-end development framework, built on top of the Enterprise Java platform, offering unparalleled productivity to application developers. The framework provides integrated infrastructure solutions for the various layers of the application and an easy way to develop on top of them.
ADF includes a set of over a 150 standards-based Java Server Faces (JSF) components with built-in Ajax functionality. Oracle ADF simplifies Java EE development by minimizing the need to write code that implements the application's infrastructure allowing the developers to focus on the features of the actual application. Oracle ADF provides these infrastructure implementations as part of the framework.
To recognize a set of runtime services is not enough, Oracle ADF is also focused on the development experience to provide a visual and declarative approach to Java EE development through the Oracle JDeveloper 11g development tool.

What is the ADF Architecture?

The Oracle ADF is based on the Model-View-Controller (MVC) design Pattern. The following figure shows the bigger picture for ADF :

The architecture has four layers:
1. The Business Services layer - provides access to data from various sources and handles business logic.
2. The Model layer - provides an abstraction layer on top of the Business Services layer, enabling the View and Controller layers to work with different implementations of Business Services in a consistent way.
3. The Controller layer - provides a mechanism to control the flow of the Web application.
4. The View layer - provides the user interface of the application.
It's worth noting though that ADF is actually much bigger than the above diagram depicts - it allows you to use other technologies as well, if needed. For example you can use EJB/JPA for persistence, Web Services as sources of data etc.

What is the MVC Architecture? How?

 An MVC application is separated into:
1) A Model layer that handles interaction with data-sources and runs the business logic,
2) A View layer that handles the application user interface.
3) A Controller that manages the application flow and acts as the interface between the Model and the View layers.

The Oracle ADF architecture is based on four layers:
1. The Business Services layer - provides access to data from various sources and handles business logic.
2. The Model layer - provides an abstraction layer on top of the Business Services layer, enabling the View and Controller layers to work with different implementations of Business Services in a consistent way.
3. The Controller layer - provides a mechanism to control the flow of the Web application.
4. The View layer - provides the user interface of the application.

Oracle ADF lets developers choose the technology they prefer to use when implementing each of the layers.  The glue that integrates the various components of Java EE applications and makes development so flexible is the Oracle ADF model layer. EJB, Web Services, JavaBeans, JPA/EclipseLink/TopLink objects and many others can all be used as Business Services for the Oracle ADF Model. View layers can include Web based interfaces implemented with JSF, Desktop Swing applications and MS Office front ends, as well as interfaces for mobile devices.

What are ADF UI Components? What is ADF Faces?

The ADF UI components are user-interface components with built-in functionality that  are configurable, reusable elements that provide user interfaces such as a simple button or a complex data table.
ADF Faces is a large set of over a 150 UI components built on top of the standard JSF APIs that leverage the latest technologies, including partial page rendering and Ajax, to provide a rich, interactive user interface.

What are ADF Business Services/Business Components?

ADF Business Services manages interaction with persistence data. The Business Services layer provides access to data from various sources and handles business logic.
The Business Services in Oracle ADF can be implemented in any of the following options: as simple Java classes, EJB, Web services, JPA objects, and Oracle ADF Business Components. In addition, data can be consumed directly from files (XML or CSV) as well as REST.
ADF Business Components are "building-blocks" that provide the most productive way to create, deploy, and maintain a business service. ADF Business Components dramatically simplifies the development, delivery, and customization of enterprise J2EE business applications by providing you with a set of intelligent software building-blocks that save development time by making many of the most typical development task declarative. They provide a foundation of Java classes that allow your business-tier application components to leverage the functionality provided in the following areas ,Simplifying Data Access , Enforcing Business Domain Validation and Business Logic, Supporting Sophisticated UIs with Multipage Units of Work, Implementing Best Practice, High-Performance Service-Oriented Architecture, and Streamlining Application Customization .

What are ADF Bindings?

The ADF binding layer can be considered as the interface between data and data access. It provides a standard interface to the data there by giving a consistent data access. The binding layer provides a consistent interface to the data regardless of where it comes from there by giving freedom to the end users to implement their UI's based on the binding layer.  Oracle ADF Model implements the two concepts that enable decoupling the user interface technology from the business service implementation: data controls and declarative 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 an application that uses business components, a data control is automatically created when you create an application module, and it contains all the functionality of the application module. Developers can then use the representation of the data control displayed in JDeveloper's Data Controls panel to create UI components that are automatically bound to the application module. At runtime, the ADF Model layer reads the information describing the data controls and bindings from appropriate XML files and implements the two-way connection between the user interface and the business service.
Declarative bindings abstract the details of accessing data from data collections in a data control and of invoking its operations. There are three basic kinds of declarative binding objects:

Iterator bindings: Simplify the building of user interfaces that allow scrolling and paging through collections of data and drilling-down from summary to detail information.

Value bindings: Used by UI components that display data. Value bindings range from the most basic variety that work with a simple text field to more sophisticated list and tree bindings that support the additional needs of list, table, and tree UI controls.

Action bindings: Used by UI components like hyperlinks or buttons to invoke built-in or custom operations on data collections or a data control without writing code.

What is MDS? How does ADF use it?

Oracle Metadata Services (MDS) allows the end user to customize their Web application to tailor the UI to meet their individual needs and desires without programing changes to the base application.
Customization and personalization are dynamic structure and property changes to the metadata of application documents like views, bindings and task flow definition files. Modifications that, for example, are applied as customization to a page or a page fragment include the addition, removal or property changes of UI components.
An application that is customized with MDS consists of a base application and one or many customization layers that hold the modifications that are applied at runtime. A customization layer is defined by a set of metadata documents that are stored in a metadata store on the file system or the MDS database repository.
Oracle MDS  for Oracle Fusion web applications and all runtime changes of a component that are performed by the application user, such as reordering of table columns are transient and only last until the page is next refreshed.  To configure component changes to last longer, application developers need to enable change persistence in Oracle ADF Faces. Change persistence is a component level framework in ADF Faces that tracks UI changes by the application user or programmatically applied by the application developer in response to a user action. This allows these changes to persist for the duration of the application user session. Oracle MDS can then be used to further extend the change persistence behavior to persist changes across application restarts. This enhanced behavior is enabled through a simple options dialog shown in Figure 4. Under the covers, these options make changes to the web.xml and the adf-config.xml configuration files for the application.
To know more about building Customizable Oracle ADF Business Applications with Oracle MDS, see http://www.oracle.com/technetwork/developer-tools/jdev/adfmds-128339.pdf

What is Partial Page Rendering in ADF Faces?

AJAX (Asynchronous JavaScript and XML) is a web development technique for creating interactive web applications, where web pages appear more responsive by exchanging small amounts of data with the server behind the scenes, without the whole web page being rerendered. The effect is to improve a web page's interactivity, speed, and usability.

With ADF Faces, the feature that delivers the AJAX partial page render behavior is called partial page rendering (PPR). PPR allows certain components on a page to be rerendered without the need to rerender the entire page. For example, an output component can display what a user has chosen or entered in an input component, or a command link or button can cause another component on the page to be rerendered, without the whole page rerendering.
See Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework 11g Release 1 (11.1.1)  Chapter 7 Rerendering Partial Page Content{http://download.oracle.com/docs/cd/E14571_01/web.1111/b31973/af_ppr.htm#ADFUI386}

What is an Application Module?

An application module is an ADF Business Components component that encapsulates the business service methods and UI-aware data model for a logical unit of work related to an end-user task.

The application module is the "work unit" container that includes instances of the reusable view objects required for the use case in question, related through metadata to the underlying entity objects in your reusable business domain layer whose information the use case is presenting or modifying. 

What version of JavaServer Faces does ADF 11g require?

ADF 11.1.2 and later uses JSF version 2.0.  JDeveloper provides full support for developing user interfaces with JSF and facelets technology in accordance with the JSF 2.0 specification found at http://jcp.org/aboutJava/communityprocess/final/jsr314/index.html.
All other ADF 11g versions prior to 11.1.2 use JSF 1.2.

Development, Deployment and Runtime

Is there any guidance for Forms customer migrating to ADF?

Yes, the white paper Case Study: Redeveloping an Oracle Forms application using Oracle JDeveloper 11g and Oracle ADF 11g gives guidance on migrating a Forms application to ADF :
There is also a ODTUG Technical Journal Article:  Migrating Oracle Forms to Fusion: Myth or Magic Bullet?

Do I need to know Java to learn and work with ADF?

Yes, you need to have an understanding of  the basic concepts of Java. The JDeveloper declarative development approach  reduces the learning curve for developers familiar with 4GL-style tools. You can learn and build simple applications with ADF without an extensive knowledge of Java but more complex applications require knowledge of Java to take advantage of all the rich capabilities provided by ADF.

How flexible is ADF? Can I override code in ADF? 

Yes, ADF generate code can be overriden to customize and extend it for your needs without changing the core ADF source code.  However, if you wish, you can also requested ADF source code via Oracle support.

Can I request the source code for ADF?

Yes, supported customers can request a copy of the source code from Oracle Support. See Note 971256.1 How to Request the ADF Libraries Source Code .

How can Oracle JDeveloper enhance my ADF Development experience? 

Many of the other Java EE frameworks lack strong integrated support by development tools. Oracle JDeveloper provides visual aids and a declarative approach to minimize the need to write framework code, making it a perfect tool for building Oracle ADF-based applications. This declarative development approach also reduces the learning curve for developers familiar with 4GL-style tools.

Can I upgrade a 10.1.3 ADF application to 11g?

Yes, upgrade from 10.1.3 production releases to 11g is supported as a one way upgrade. Note that any usage of the ADF Faces JSF components (10.1.3) are automatically migrated to using the Apache MyFaces Trinidad components as part of this upgrade process. For more information on the migration process please consult this page on OTN. Once an application has been upgraded it can no longer be deployed to a Java Enterprise Edition 1.4 Application server such as Oracle Application Server 10.1.3.

If I upgrade my 10.1.3 ADF application to 11g will I get the new ADF Faces Rich Client components?

No, upgraded ADF applications undergo a like-for-like migration to the Apache MyFaces Trinidad components and retain the same functionality as the application in 10.1.3. Taking advantage of new ADF 11g features such as the Rich Client Components and ADF Task Flows requires a degree of redesign for the application to fully exploit the new capabilities that are present in this release.

Can I deploy my ADF 11g application to Oracle Application Server 10.1.3 (or earlier)?

No, Oracle AS 10.1.3 only supports version 1.4 of the Java Enterprise Edition standard. ADF 11g applications require a 1.5 compatible server such as Oracle WebLogic 10gR3. See the section on licensing for the implications of this if you are currently not licensed for a suite that includes WebLogic.
25. How do I install the ADF Runtime into a stand-alone WebLogic server?
Running the JDeveloper installer on the target application server will provide the option to install just the ADF runtime libraries into an existing WebLogic home. You can then configure your domain to use this library. For more information consult the install guide.
26. What Browsers are supported for running ADF Faces Rich Client 11g applications?
The list of supported browsers is here. Please consult the installation guide in the JDeveloper documentation set for the latest support information.

Where can I deploy & run my ADF Applications? 

ADF 11g applications require a Java Enterprise Edition 5 container The  Application severs supported and Certified to run ADF version 11 include weblogic 10.3.x  and IBM WebSphere 7 (Please see the certification matrix for exact versions)

Download and Additional Resources

Where can I download ADF?

The JDeveloper with ADF can be download from Oracle JDeveloper page on OTN: Latest JDeveloper/ADF version
A runtime version of ADF can be download from the Oracle Application Development Framework page on OTN: Downloads for Oracle ADF

What is a good place to start on learning ADF? 

The Oracle Application Development Framework page on OTN has links to ADF Insider Basics - Recorded Sessions, Online Demos, Step-by-Step Tutorials and Oracle ADF Insider Essentials.

Are there any code examples for ADF?

The Oracle JDeveloper  Code Samples page on OTN has many sample ADF applications.

Where can I find sample applications for ADF?

The Fusion Order Demo is a comprehensive integrated sample that showcases many of the key features of the ADF framework . Many other samples are also available from OTN.

How can I stay up-to-date with ADF news?

The best places to keep up to date with the latest news on ADF are :

·         Oracle Application Development Framework page on OTN. It also has links to recent blog entries for ADF and  points to Oracle ADF Books and Trainings

·         Like us on the  Oracle JDeveloper Facebook page

·         Follow us on Oracle JDeveloper Twitter

·         ADF blogs from Oracle Product Management etc :

o    Grant Ronald's Blog, Oracle ADF PM

o    Didier's Blog, Oracle ADF Support Blog

o    The GroundBlog, byDuncan Mills, OracleADF Product Management

o    ADF Code Corner, by Frank Nimphius, ADF PM

o    Dive into ADF, by Steve Muench Senior Architect, Oracle

o    ADF Adventures, Juan Camilo Ruiz, Oracle ADF PM

o    Oracle ADF Mobile, Oracle PM

o    ADF Unleashed, by the Oracle ADF Community

o    JDeveloper PMs Blog

o    ADF Redefined, Oracle Fusion Development

o    Oracle Fusion Middleware Security, by the Oracle A-Team

Where can I get help with ADF issues?

JDeveloper 11g comes with a large and comprehensive set of documentation covering both the development environment and the frameworks. Additionally the product includes a set of cue cards on the product help menu which will step you through features in an interactive manner.