JDeveloper 11g and the future of ADF Business Components

With the Technical Preview of JDeveloper 11g out now for JavaOne 2007, we can take a closer look at several areas in the tool and see where they are headed. Of course the presentation for the Regional Directors for Oracle Fusion Middleware by Duncan Mills last Monday helps to further outline the direction.

ADF BC has been selected by Oracle as the underlying database access technology – "the core Object Relational Mapping framework" – for Oracle Fusion Applications. A stronger endorsement for a technology can hardly be imagined – as we are talking about thousands of developers from Oracle here. If anyone has any doubts about the future of ADF BC, this alone should be enough to quell them. Much more importantly though is the value of the functionality of the framework for many data oriented Java applications. While not the most pure OO object relational mapping technology in town, it gets a certain job done, in a very robust, performant and functionally rich way that is especially valuable for developers who are database and SQL savvy. ADF BC to a certain extent has the same pragmatic approach to the OO/R impedance mismatch that for example iBatis, Spring JDBC and Ruby on Rails also have. It may not be best for all Java applications, especially for those with a lot of middle tier OO business logic, but for many it certainly is a very viable approach.

As is the case for much of JDeveloper 11g, ADF BC further evolves along the dimensions of productivity, ease of development and . There is more declarative set up, more functionality and more support for typical web application constructs such as Query Forms and Lists of Values.One of the very visible changes in JDeveloper 11g is the use of modal popup windows , or rather the lack thereof. Editing an Entity Object or View Object is largely done with in line editing tabs, making for a nicer user experience as well as taking away the suggestion that ADF BC is just some sort of plugin for JDeveloper.

Some of new features for ADF BC in 11g:

Declarative sets of ViewCriteria that can be reused, switched at run time; this allows reuse of ViewObjects without complex programmatic runtime manipulation

Declarative definition of List of Values; we can add a List of Values definition to an attribute in a ViewObject, indicating that typically that attribute whenever included in for example and ADF Faces page should be implemented with a List Binding in a SelectOneâ€¦ component such as ListBox, Radio or Dropdownlist or through a List of values.

More validators, such as the Key Exists validator which is much more efficient than the List Validator for that purpose)

The ability to make validators dynamic by writing them in Groovy; Groovy based validators are evaluated at runtime and can make use for example of data in the MDS, allowing runtime configuration of validators external to the application. At this moment, the Groovy code is just a plain property without syntax checking, code completion or anything.

Declarative dependent calculation

Static ViewObjects for caching very stable data in the middle tier instead of constantly hitting the database. Static ViewObjects could be a good alternative for Property Files. Think data such as list of country codes and other domains that are easy to maintain in the database and change rarely

Effective date ranges

Declarative Outer Joins – reducing the need to use Expert Mode to fiddle with the query

Conditional validation to only apply a validation rule in specific circumstances

Some new ADF BC concepts

There are several new ADF BC options such as Property Sets, Business Intelligence Logical View (defined with Logical SQL for Oracle BI EE Answers and make the query results available in an ADF BC project and Default Data Model Components (at least I think it is new?) that creates default ViewObjects, ViewLinks and Application Modules based on selected Entity Objects and Associations.

The options in the New Gallery, Category ADF Business Components:

Quicker way to create a Database Connection:

Just a single page rather than a four step wizard. And the option to define the connection as part of the application, instead of as part of the IDE environment, making Connection definitions portable across machines – it would seem.

3 Comments

Steve, I’ll post my findings on the forum. Regarding your suggestion about generating the classes: Thanks! I think some familiarity with the “old” UI and impatience caused me to look at all the wrong places. (Oops…, there’s even a hint text that’s telling me exactly what to do…)

To generate the Java classes for any ADFBC component, open the view object in the editor, select the “Java” category at the left of the surface, then click the little (pencil) icon to edit the “Java Classes” section.

Had a first quick look on 11g today. The new features and enhanced userinterface are very promising.

Nevertheless, it is very clear the this is a (very early?) preview release.

A lot of options are disabled. For example: How to generate Java classes for an ADF BC View Object if you didn’t generate these on creation of the View Object? Option seems to be disabled… Stability (of the new userinterface?) certainly isn’t what it should be yet. For example: Manipulating the “Join Type” list box of View Object’s Entity Usages is tricky; sometimes the associated where clauses disappears spontaniously… My primary interest went to the new ADF Faces components, but due to issues like this, creating the model for my testcase was far more time consuming than I had hoped. 😉

But, overall: Very, very promising !!!

About Author

Lucas Jellema

Lucas Jellema, active in IT (and with Oracle) since 1994. Oracle ACE Director and Oracle Developer Champion. Solution architect and developer on diverse areas including SQL, JavaScript, Docker, Machine Learning, Java, SOA and microservices, events in various shapes and forms and many other things. Author of the Oracle Press books: Oracle SOA Suite 11g Handbook and Oracle SOA Suite 12c Handbook. Frequent presenter on community events and conferences such as JavaOne, Oracle Code and Oracle OpenWorld.