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.
New look and feel for the ADF BC Wizard