A recent Gartner report has mentioned that Oracle ADF has been plagued by frequent crashes, but that these have been addressed in Oracle Fusion Middleware 12c . I find it alarming that these stability issues have only been addressed recently. This is alarming taking into consideration that Oracle ADF has been in development close to 10 years (The core of Oracle ADF is based on JSR 227 which the Java Community Process voted on already in 2003) . In this post I will share my reasoning as to why I am still not overly optimistic about Oracle ADF.
Oracle ADF is an implementation of JSR 227. JSR 227 is an attempt at providing standard binding between any frontend and any type of service. Data controls can be created for instance for JDBC, EJB and Web Services . JSR 227 ignores the difference between transactional vs. non-transactional resources and data sources vs. services. In comments on JSR 227 these differences has been highlighted with SAP warning that JSR 227 could violate the integrity of JEE .
The Java Community is betting against Oracle ADF
According to Shay Shmeltzer (group manager for Oracle JDeveloper ) Oracle has withdrawn JSR 227 “since the other members of the Java community process didn’t show interested in pursuing this approach further.”  With the initial vote for the JSR, IBM and BEA have raised concerns around the complexity of JSR 227 and stated that they consider the scope to be too broad . In recent writing Paul Dorsey (from BEA), describes Oracle ADF as highly complex and as a high risk endeavor  .
Lack of Skills
Edwin Biemond, an Oracle ACE and Java Developer of the year 2009 by Oracle Magazine , states that there is a general lack of skills in Oracle ADF. His sentiment is supported by other developers on the forum .
The learning curve for Oracle ADF is very steep. Becoming productive (not expert!) in Oracle ADF takes 3-6 months assuming the person is a skilled Java Web developer  . The implications for this are:
- Any Oracle ADF project shorter than 6 months will be disproportionately expensive due to the ramp-up time required by the team.
- Any Oracle ADF project shorter than 6 months carries an even higher risk due to the team not being allowed the time to gain the needed knowledge on Oracle ADF.
- An Oracle ADF project has to be staffed with senior web developers.
Lack of in-depth documentation
The declarative nature of Oracle ADF causes Oracle ADF developer guides to describe “the how” and not “the why”. According to Frank Nimphius (Principle Product Manager for Application Development Tools at Oracle Corporation ) Oracle does not plan on providing in-depth documentation but rather they plan on compiling a list of topics which will then be sourced out to the community . Since knowledge regarding the intricacies of Oracle ADF resides within Oracle, this is an approach that is doomed to failure. Indeed, the success of Open Source tools like Spring, Hibernate and JBoss is intimately linked to the availability of in-depth documentation supplied by their designers. In absence of in-depth documentation, Oracle ADF developers are forced to trawl through the source code of Oracle ADF . Source code is a rather poor substitute for proper documentation since in the absence of a design context; the intent of the source code is obfuscated.
Substantial increase in availability of Oracle ADF skills and resources is highly unlikely
Progress on JSR 227 has been rather slow. The initial JCP vote on JSR 227 has taken place 7 July 2003 with a first draft only being available by 11 December 2008. No further progress has been made on this JSR and it has been withdrawn . If one compares progress of JSR 227 to for instance the JSF JSR, the initial vote took place on 29 May 2001 with a Final Release available by 11 March 2004 .
This means that Oracle ADF has been in the making for at least 9 years. If it has been impossible in the last 9 years to provide in-depth Oracle ADF documentation and to grow the skills base around Oracle ADF, it is rather unlikely that it will miraculously change in the near future (2 years).
The risk of an Oracle ADF project is disproportionately high due to its complexity, the lack of in-depth documentation and the absence of skills. This is unlikely to change in the near future.
 M. Driver, “Oracle Application Development Framework: Past, Present and Future,” Gartner, 2012.
 “JSR 227 Status,” 8 May 2011. [Online]. Available: http://groups.google.com/group/adf-methodology/browse_thread/thread/ca3e8c6776e3e2ef. [Accessed 4 August 2011].
 Java Community Process, “JSR-000227 A Standard Data Binding & Data Access Facility for J2EETM Platform,” Java Community Process, 2008. [Online]. Available: http://jcp.org/aboutJava/communityprocess/edr/jsr227/index.html. [Accessed 2 Sept 2012].
 S. Shmeltzer, “Shay Shmeltzer,” [Online]. Available: http://shayshmeltzer.sys-con.com/. [Accessed 1Sept 2012].
 J. 2. Status, Google Groups: ADF Enterprise Methodology Group, [Online]. Available: https://groups.google.com/forum/?fromgroups=#!topic/adf-methodology/yj6MZ3bj4u8. [Accessed 1 Sept 2012].
 P. Dorsey, “How Will You Build Your Next System?,” DULCIAN, Inc, 2012. [Online]. Available: http://www.dulcian.com/papers/IOUG/2012/2012_IOUG_Dorsey_BuildNextSystem.pdf. [Accessed 2 Sept 2012].
 E. Biemond, “About Me,” [Online]. Available: http://biemond.blogspot.com/p/about-me.html. [Accessed 2 Sept 2012].
 E. Biemond, “Less xml in ADF and move forward to Java EE 6 in 12c,” Google Groups: ADF Enterprise Methodology Group, 2 Jan 2012. [Online]. Available: https://groups.google.com/forum/?fromgroups=#!topic/adf-methodology/_fDyNUsXUmo. [Accessed 2 Sept 2012].
 S. Davelaar, “How to become an Oracle ADF expert in one week (or in 1 day if you don’t have so much time),” JHeadstart Blog, 13 Sept 2011. [Online]. Available: https://blogs.oracle.com/jheadstart/entry/how_to_become_an_oracle. [Accessed 2 Sept 2012].
 F. Nimphius, “Frank Nimphius,” Sys-Con Media, [Online]. Available: http://franknimphius.sys-con.com/. [Accessed 2 Sept 2012].
 “ADF’s Learning Curve,” Google Groups: ADF Enterprise Methodology Group, 30 Jan 2009. [Online].Available: https://groups.google.com/forum/#!msg/adf-methodology/KPt0Hf2yudo/TrEW70qkAT4J. [Accessed 2 Sept 2012].
 D. Mills, “The GroundBlog by Duncan Mills: Facelets and PanelDashboard Gotchya,” Oracle, 20 Jul 2012. [Online]. Available: https://blogs.oracle.com/groundside/entry/facelets_and_paneldashboard_gotchya. [Accessed 2
 Java Community Process, “JSR 127: JavaServer Faces,” Java Community Process, 2004. [Online]. Available: http://www.jcp.org/en/jsr/detail?id=127. [Accessed 2 Sept 2012].
 J. Kotamraju, Web Services for Java EE, version 1.3, Sun Microsystems, 2009.
 Oracle Corporation, “Oracle ACE Program – FAQ,” Oracle Corporation, 16 Jun 2011. [Online]. Available: http://www.oracle.com/technetwork/community/oracle-ace-faq-100746.html. [Accessed 2 Sept 2012].
Well written and well “sited” argument. I’ve not used ADF myself, so I’ll definately do double due diligence when it does come my way. I’m keen to see what other ADF users have to say, particularly those that like and even promote use of ADF.
Interesting read – I like the thorough referencing. However, it’s a very one-sided “why it won’t work” text that doesn’t really help someone make a decision.
It would be more useful to either include some ADF positives or to compare ADF with other approaches that do not have the weaknesses you point out.
Full disclosure: I’m and Oracle ACE Director and ADF enthusiast
Thank you very much for your comment. Yes, you are correct in that my post is very one sided. I have made no attempt at all to represent the “other side”. However, I do think that Oracle and your own writing is doing a brilliant job of representing the “other side”! 🙂
Thanks for the full disclosure.
Nice article, and there is some truth in most of your points. Although I’m sure there’s a solution for almost all of your concerns 🙂
One thing I’d like to touch, though, is the steep learning curve. In my opinion, there is none. I wrote my first ADF Application in about 2 months (it wasn’t a full blown highly complex website, though, but it was a company site with some extended functionality in regards to registering for events etc.) right after I left school (so I wasn’t a skilled programmer at all).
In my opinion, ADF is very intuitive, but it is a different way of working than the ‘standard’ Spring-Hibernate approach. I like both worlds 🙂
Anyhow, I hope your valid points will be taken into consideration. Criticism should lead to better tools/software, especially if the criticism is profound and well-argumented.
Thanks for your thoughts.
Getting our initial POC done has not been overly difficult and it resulted in me giving the recommendation for using Oracle ADF. It was only when we started development in full force that we became
aware of the brittleness of the ADF environment; much of which I have touched on in my post.
To give credit where credit is due: I believe Oracle ADF have a number of snazzy components. However, the tight dependency of these components on ADFm results in them only being usable in the context of JSR 227. The reliance on JSR 227 render them (I am sorry to say this) close to useless in any JEE application other than WebLogic Application Server. Since I have enjoyed using Trinidad, which to some extend served as a precursor to ADF, I perceive this as a real pity!
I see you are ADF specialist. Keep in touch and let me know how it is working out for you!
Agree that the ADF 11g components are Oracle-only. Oracle proposed that their way of doing things became a standard (JSR-227), but since everybody else already had their own way, it shouldn’t be a surprise that JSR-227 went nowhere.
However, your objection that ADF is useless outside WebLogic is no longer accurate: Today you CAN run all the snazzy 11g components on GlassFish and other JEE app servers using the free ADF Essentials product. http://www.oracle.com/technetwork/developer-tools/adf/overview/adfessentials-1719844.html
The Oracle ADF Essentials FAQ at http://www.oracle.com/technetwork/developer-tools/adf/overview/adfessentialsfaq-1837249.pdf states:
“Deploying Oracle ADF Essentials applications is supported on Oracle WebLogic 11g, GlassFish 3.1, and WebSphere 7. However, from a licensing perspective there are no limitations on deploying on other Java EE server.”
http://technology.amis.nl/2012/12/02/deploy-adf-essentials-app-on-tomcat-6-x/ gives details on how to set it up on Tomcat.
What I will like to know is: “Will Oracle ADF (or Oracle ADF Essentials) have acceptable performance in the absence of Oracle Coherence?”.
Yes, definitely. Many (probably most) Oracle ADF applications do not use Oracle Coherence at all.
Coherence is an extra-cost option that you can benefit from if you are running a clustered environment and keep a lot of session state (because it will help replicate HTTP state across nodes). That one usecase can be handled without changing the application – all other uses of Coherence requires custom programming that an ADF application is unlikely to contain.
Do you think there is a future for ADF?
I’m an Oracle Developer trying to make the transition into Java/Web. I’ve tried ADF and hated it and more recently tried Spring and really liked it. ADF has been out for years now and even so there is still very little demand for ADF developers. It suggests that adoption of ADF has been very slow.
Your points on the learning curve and the lack of in-depth documentation particularly resonate with me. Oracle has this huge base of Forms developers that it wants to convert to Java developers and ADF is supposed to do that. With ADF you do get started very quickly doing plain vanilla CRUD forms. However, when you want to go beyond that and do something more with it, it is very hard unless you already have a prior background with web development.
That was exactly our experience as well. Even with a team of senior Java Web developers we struggled with Oracle ADF. What I find most alarming is that Oracle ADF tries to abstract away the complexities of JEE by adding the even more complex JSR 227.
To answer your question:
Oracle has a huge push behind ADF since they are using it internally for building their Fusion Applications. Over the years they most likely have poured too much funds into Oracle ADF to abandon it. Thus, Oracle ADF is likely to survive.
However, obstacles still exist before the Java community will prefer Oracle ADF to other frameworks: high complexity, lack of in-depth documentation and JDeveloper are foremost.
Thus, in my opinion, I think there is a future for Oracle ADF within Oracle Coorporation. However, unless Oracle can address the concerns mentioned, I don’t think Oracle ADF will become mainstream.
I think your missing the point. Everyone knows that the purpose of road construction is not for the improvement and service of the public, but for campaign donations. In the same way ADF is probably the worst choice one could make for implementing any type of B2B or B2C application, but it is fantastic for large budgets and allows my consulting co to keep me employed at a very high rate for a very long time. That is the ideal role for ADF.
More seriously, It is very clear that the de facto standards in front end development have left ADF in the dark ages and left them wondering which way is up – as far as I can tell. I would be embarrassed (and rightly so) if I even considered using a table to render a page; yet they shamelessly use tables at every turn and sometimes tables within tables. I mean, second only to don’t take candy from strangers is don’t use tables. Didn’t their mothers every teach them that?
I think their Achilles heal is probably that they are so big and therefore slow in responding to the market. It’s not rocket science to figure out how to write well performing responsive clean code that can be easily skinned, but apparently they are unable.
Well, I think Oracle ADF has a long learning curve (6+ month) BUT after you learned the framework you can develop application quikly because it has a complete MVC to work with Oracle and a extensive object library that allows to connect objects with data easily (just droping). We are developing a complex medical application with ADF and the framework is filling the requirements and the last version(22.214.171.124) is very stable.
Myself I come from a J2EE background, working with a bunch of Java web frameworks: Struts, Webwork, Spring Web, Tapestry , JBoss Seam.
I can confirm that ADF looks effective at first glance, but then you hit a wall.
J2EE developers main problem with ADF -myself included- are thinking stateless. Except JBoss Seam, all other Java frameworks I know are using a Stateless Business layer.
On the other hand, people coming from an Oracle Forms background are not used of thinking in Objects.
But once you’ve learn it, is more productive than any other framework I have ever used, expecially because of the statefull business layer.
I agree that there is little documentation expaining in-dept ADF runtime behaviour. Still, at the end of the day, you are just running a set of servlets firing JDBC calls. You should not be fooled by the design-time elements, an ADF application is just a Java Enterprise application at runtime.
I have around 4 years experience on Oracle ADF(oracle certified ADF implementation specialist) apart from JSF,hibernate,spring.I am agree with the author that me too don’t have the full confidence on oracle ADF. For a large scale application its really a different ball game.
Oracle ADF is comprised of ADF faces,ADF taskflow(controller) and ADF BC. You can use ADF faces and adf taskflow with your java or spring services but then you can’t use some of the cool adf faces components like (af:inputListofValues) as easily as it can be with ADF BC. Moreover Oracle doesn’t provide you any documentation on how to use ADF faces with your java back end services.In that scenario recent primefaces release is much better option. ADF taskflow is a really cool feature. ADF BC is hard to understand for newbie and for any complex application the amount of customized code you required to write its better to use ORM solutions like hibernate in that scenario.
The problem of oracle ADF is ADF BC. Oracle should support other back end technologies( not just saying that it supported but if you use ADF BC you will get allADF features) with extensive documentation and examples.
Agree that ADF BC is not for everybody, but Oracle does support other back end technologies for ADF. With Eclipse and Oracle Enterprise Pack for Eclipse you can use JPA entities and connect to an EJB Session Facade from ADF Faces and get all the strength of ADF Faces and Task Flows without ABF BC.
Have a look at the tutorial at http://www.oracle.com/webfolder/technetwork/eclipse/adf/gettingStarted/Tutorial/ADFwithOEPE_2.html and please comment back if this is what you were looking for.
Thank you for pointing me out the tutorial.I will definitely try this out.
My comment was some ADF faces component like af:inputListOfvalues, af:query, af:calendar,af:treeTable are easy to configure with ADF BC but not with other back end.I will try to configure these with the help of the tutorial you pointed out.
In real world we may not have ADF BC as back end service always but use ADF faces and controller layer.We need to use ADF more like a JSF component library(e,g af:table with java arraylist) then.That time its hard to configure above stated components.And oracle doesn’t provide any documentation or example on that front as far as i know.(it may be the business decision to promote ADF BC).Apart from that ADF is really easy to use once you accustomed with the technology.
Henriette, as I can see you are suppressing some people messages, while letting the other go. Not exactly what an ‘independent’ analyst would do.
While working with Oracle ADF I often felt frustrated by the lack of examples for other backends; and, as you rightly point out, other backends are not always well supported by Oracle ADF. Personally I think this is a function of Oracle trying to provide a roadmap for Oracle Forms applications. Though this may make business sense from an Oracle perspective, this is not overly helpful for the JEE developers. I cannot agree more that extensive examples and documentation are exactly what is needed!
I do agree that ADF has a very large learning curve, I created over 70 videos on the subject — most tutorials are painfully packed with details, my videos are simpler, one-subject details. However, it took me that many videos to go over just the basics.
I come from an Oracle Forms background. I skipped JEE entirely, and just started on ADF. The point about ADF that is missed, is that it is integrated into the Oracle Suite and BPM, so it can work seemlessly with composite applications. Try to do that with JEE with the flip of a button.
I do think that Oracle has a challenge with ADF — the learning curve is immense — but it does EVERYTHING a programmer could possibly need (especially if you are using the SOA Suite) by drag and drop and declarations. My bet is that alot of JEE programmers are feeling intimidated by it.
The ADF community (especially the forums) are very active, and you can find many answers to all the issues encountered.
I think there are three points about ADF:
— Their digging into declarative fashion (no java code) to achieve simplicity leads ADF to complexity. (if they keep all things done by Java, it will be easier since the people who develop with ADF are already skilled programmers.
— When you read examples and samples about complicated cases, oracle community always guide you to Frank Nimphius. Sometimes you think, that you should think in the same ways as Frank think or the life will be so hard!!!!.
— While you are striving searching for solutions in google, sometimes you doubt that oracle intended to make this product so complex in order to convince the others: either to not programming and just purchase oracle ready made applications, or to convince everybody to pay more and more money oracle courses since it is very hard, that ADF can be self trained.
In the past I have worked in foxpro, cobol, vb, oracle forms, c#, and all that self trained.