Oracle Application Development Framework (ADF) and Oracle Forms Developers

I want to share my first impression of ADF and I am sure everyone with Oracle Forms background will feel same. I have been working in oracle Forms and Reports for more than five years. I have development experience in Oracle Developer 6i/9i/10g and Forms, Reports 11g. After reading Oracle’s Statement of Direction for Forms and reports, I decided to learn ADF for web-based application development. I started ADF with basic knowledge of Java, CSS, HTML and JavaScript. I also had a little experience with PHP.

I studied ADF with oracle JDeveloper 11g. Remember there is significant difference between JDeveloper 11g and its previous releases. I started with online learning material from Oracle website along with a book titled “Oracle JDeveloper 11g Handbook, A Guide to Oracle Fusion Web Development”. This book is well arranged and guides through complete process of building a ADF web application.

ADF is a Framework provided by Oracle to develop applications based on JEE standard. You do not need to worry how you maintain JEE standard, as applications built using ADF automatically imply this standard. When you develop an ADF web application in JDeveloper, application is divided into four layers,

1. Business Service Layer

2. Model Layer

3. View Layer

4. Controller Layer

1- Business Service Layer


Business services layer defines database objects like table in XML document. Java classes use these XML definitions to create runtime objects which correspond to database tables and other objects. You can ask Framework to create these classes at design time. These classes can then be used to incorporate business rules. No code is required to create Business Service Layer in the form of XML documents, everything is Wizard based.

You can add validation rules in Business Service layer. All this can be done declaratively. You can also provide UI hints in this layer, for example, you can defines Labels for UI fields.

2- Model Layer

Business Service Layer provides different types of services. If you want to call these services directly, you would need different API for different services. Model layer provides Data Controls that provide a mechanism to call all these services in a consistent way. So Business services are accessed in UI through Model layer. This can be done simply by a dragging a Data Control to UI page.

3- View Layer

View layer of ADF is the user interface. User Interface in ADF is developed in JavaServer Faces (JSF). ADF has provided a comprehensive library of ADF Faces components. This library contains extremely rich UI controls. ADF Faces provide much much more than what Oracle Form Builder provide to develop user interface. ADF Faces also provides a set of components in Data Visualization Tools tag library. These components include Graph, Gauges, Maps and much more to develop a rich user interface.

Most important feature of these controls is use of Ajax technology. This allows submitting a fragment of the UI to server, while user can interact with other page components. This provides a user interface similar to desktop applications with plain HTML.

Business rules like validation can also be written in this layer.

4- Controller Layer

In typical web application, when user clicks navigation button, logic is hard coded behind click event to navigate to required page. In ADF when a user clicks a button or link to navigate to another page, calling page raises a navigation event like “gohome“. Now it is responsibility of Controller Layer to determine that which page will be called. Hence all navigation logic is defined declaratively in Controller layer. In future, if there is requirement to change page navigation, this can be done in Controller layer without disturbing view layer.

The style of development in ADF is rapid. Pages can be developed on the fly like oracle Forms builder. Application built in ADF is more powerful, more reusable, more rich and reliable than application developed in Forms Builder. But no doubt ADF is much more complex than Forms Builder and architecture is totally different. In Forms Builder we have only view layer and data is directory access from Database unlike ADF where Business Service layer and Model layer perform this task. With ADF, Much more effort is required to achieve same level of expertise you have using Forms Builder.

If we talk about Reports development, then ADF and JDeveloper do not do much in this area. Read-only JSF output serves as basic reporting requirement. But for Advance reporting you have to rely on some other tools like Oracle BI Publisher (As mentioned in “Oracle JDeveloper 11g Handbook, A Guide to Oracle Fusion Web Development” book).

At the moment it is not clear that what will be the future of ADF and JDeveloper. At the moment ADF is not more popular than oracle Forms Builder. Also as an IDE, JDeveloper is not as much popular among core JEE developer as NetBeans and Eclipse are. Oracle Fusion Applications (Oracle Next Release for Packaged application) is said to be developed using ADF and JDeveloper. Oracle Fusion Applications are expected to release soon. Things may change after that release.

3 thoughts on “Oracle Application Development Framework (ADF) and Oracle Forms Developers”

  1. Hi,

    I’m on a client’s site at the moment and am using Oracle 10g Forms (v10. and the issue that I’m facing is that they would like to warn a user (if the user tries to put in a new url and presses return) that there are unsaved changes on the Form. I’ve seen an example of handling this using ADF however as I have developed the application in Forms I guess it’s not possible? Is there anything that can be done?


    Kind regards,


  2. Hi Tom,

    You must have seen websites that warn and stop users when they move away from page (Gmail has this implementation). This is done using JavaScript. In ADF, it is easy to inject some JavaScript code in application. Forms latest version Forms 11g provides good support for JavaScript. Please check following link.

    I am not sure about the level of support available for JavaScript in Forms 10g.

Leave a Reply

Your email address will not be published. Required fields are marked *