Java EE is a standard, robust, scalable, and secure platform that forms the basis for many of today’s enterprise applications. Java EE provides a set of specifications for building multi-tier applications using the Java language.
In the past, there has been a direct correlation between the robust natures of an application and the complexity required to achieve it. However, with the advent of the Oracle ADF framework, we are able to provide the implementation of extremely rich Java EE applications, adhering to standard patterns and practices with greatly reduced efforts.
Additionally, the increased need for organizations to build composite applications that utilize Service Oriented Architecture (SOA) principles has forced developers to create applications that are extremely agile. Implementing these best practices in agile applications usually involves writing a significant amount of infrastructure code, adding another obstacle for developers building their first Java EE application.
What is ADF?
In computing, Oracle Application Development Framework (ADF) provides a commercial Java framework for building enterprise applications. It provides visual and declarative approaches to Java EE development. It supports rapid application development based on the ready-to-use design patterns, metadata-driven and visual tools.
Oracle Application Development Framework (Oracle ADF) is an innovative, yet mature Java EE development framework available from Oracle and directly supported and enabled by Oracle JDeveloper 11g (and above).
To understand ADF, it is necessary to go beyond its UI framework. Oracle ADF is “An end-to-end application framework that builds on Java Platform, Enterprise Edition standards and open-source technologies to simplify and accelerate implementing service-oriented applications”. The features of ADF are listed below:
- A solution to build UI (in no time, have various CRUDQ UI patterns/graph, customization, etc.).
- Has flexible architecture to support various UI – Middle ware Integration.
- Provides framework to implement business component or to integrate with other platform/technology/framework.
ADF becomes easy to learn once Framework Objective is understood. Understanding ADF is similar to learning Spring – it requires the understanding of architecture, core, different layers and then focusing on the feature you are interested in (e.g. specific component/feature Spring MVC, Batch, Security, Spring Social, Integration). Once you discover the power of ADF, you can do wonders within few days.
ADF vs. JSF: An overall comparison
|Paid Except ADF Essentials||Free of cost|
|A Neat AJAX Support within components itself||Depends on which implementation of JSF you are using - Richfaces and icefaces has ajax enabled components, while myfaces does not support AJAX within components|
|All in one IDE||To implement some functionalities like chart/AJAX, you may need to use third party Jars within Eclipse|
|Over 150+ ajax enabled components||30+ JSF components|
|Supports task flows, Meta data services||Does not support|
|Performance wise ADF may be little slow as compared to classical JSF application because of rich components.||Comparatively little faster than ADF|
|Supports Mobile application development||Does not support|
Saving development time with ADF
From my personal experience, I can say that to develop simple CRUD functionality with sorting etc. normal developer may take 1 day to complete the screen in JSF, Jsp technologies, whereas in ADF, the same CRUD application can be developed within 15-30 minutes. If you want to create Rich UI in myfaces JSF/Jsp which has charts, googlemap, etc then you would need to have the knowledge of ajax enabled java script libraries. There are over 150+ Ajax enabled components provided by ADF which drastically reduces your development efforts to create rich UI. Overall I can say that developing application in ADF will save around 35-40% of development time.
Use Oracle ADF when you want
Your application development to start from scratch in which you want to have rich UI, Charts, Google Maps, Task Flows, etc.
- To create UI layer only and integrate with existing service layer.
- To have composite layer as you are integrating with 2 or more applications (SOA scenario – can be 2 or more independent components) – Using ADF you can achieve Composite behavior at Application Module level (aggregate multiple View Object), ADF business component level or can have custom composite layer (in case application existing architecture uses Service Bus, composite web services).
- To have rich internet UI as well as advanced feature like – “UI Customization at Runtime” (Integrate with WebCenter), “MDS Integration”, “Security – ADF Security Authentication”, “Responding to Application Events”, “Customize the Application Look and Feel with Skins”, “Partial Page Rendering (PPR) on a JSF Page” etc.
- To Integrate SFDC Cloud/any other cloud application with your application, ADF fits very well.
- To integrate your application with Oracle EBS R12.
- To implement any Oracle Fusion customizations.
- To have Mobile Application functionality as well as consider future of the application (Mobile application developed in Oracle ADF can be deployed in iOS, Android and all other popular mobile service platforms).
When to Use (Recommendations):
- Fast Development: When you want to build application within no time - this case will be best suited for small projects where you want to build application quickly and look for end-to-end framework or build new UI and integrate existing service layer. The reason for saying this is once you understand ADF architecture/layers, you can focus on ADF feature you want to explore.
- Migration: To migrate existing applications choosing ADF as an option needs to be evaluated. ADF provides number of rich internet UI patterns and helps in rapid UI development, so migrating applications for UI scenario should be large (in terms of number of UI screens). In large applications, effort can be drastically minimized after identifying common usability pattern. As development scenario we can have 4 scenario stated above CRUDQ [Create, Read, Update and Search/Query]. For better usability (similar look and feel), Business Analyst/Usability Team can define similar look and feel. ADF has a lot of inbuilt usability pattern for CRUDQ, which can decrease development time drastically. Migration for small application just for UI might not be good idea (unless you have the requirement to extend application in near future).
- Rich Internet and Advanced Features: Rich Internet Feature, “UI Customization at Runtime” (Integrate with WebCenter), “MDS Integration”, “Security – ADF Security Authentication”, “Responding to Application Events”, “Customization of the Application Look and Feel with Skins”, “Partial Page Rendering (PPR) on a JSF Page”.
- Integration: Integrate your application into a SOA by firing events from your business components, invoke BPEL or create Human Work Flows.
We can also integrate ADF application with Oracle EBS, legacy system and third party DBs other than Oracle. With little programming efforts we can also integrate SFDC applications as well with ADF applications.
Oracle ADF License
Developing ADF application with ADF Essentials is free, you can also deploy application within any application server. But ADF Essentials provides limited components.
If you have Weblogic server license available, ADF comes along with Weblogic license.
If you want to deploy your application in open source application servers, you need to purchase license of ADF. For more information on ADF license visit the Oracle website.
Oracle ADF Architecture
Oracle ADF lets developers choose the technology they prefer to use while implementing each of the layers. The diagram below shows the various options available for developers when building Oracle ADF applications. 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.
Oracle ADF is based on the Model-View-Controller (MVC) design pattern. An MVC application is separated into:
- A model layer that handles interaction with data-sources and runs the business logic
- A view layer that handles the application user interface
- A controller that manages the application flow and acts as the interface between the model and the view layers
The Business Services layer - provides access to data from various sources and handles business logic.
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.
The Controller layer - provides a mechanism to control the flow of the Web application.
The View layer - provides the user interface of the application.
Read the blog: Get in the Mobile App Game with Oracle ADF
My name is Rohit Majithia and I am a Senior Consultant at Jade Global Software Pvt. Ltd.
My motivation for writing this article is simple: My experience with ADF. I have developed Java Web applications with a range of other frameworks and libraries. I have been a part of various debates about which tools, IDEs, frameworks and technologies to use in projects. I have seen the struggle of many Java developers to find their way through rapidly evolving Java frameworks and to become productive.
I have also worked in JSF and spring frameworks. From my experience I can say that ADF is the best among all the available frameworks even though it is a paid framework (except the ADF Essentials).
This article will explain in brief what ADF and its architecture is. In future articles I will discuss in detail when and why you should use ADF applications; and where ADF applications fit in.