Oracle ADF Overview

Prepared By
Karsten Schulz Terp-Nielsen @Oracle Denmark
Presented By
Bahaa Farouk @hp Egypt
Oracle ADF
Motivation – Challenges building J2EE apps

 Building J2EE applications can be complex.
 Development time can be extensive.
 Choosing and implementing appropriate design
  patterns can be overwhelming.
 “Do it yourself” applications often repeat existing
  application code.
 A large portion of “do it yourself” code is dedicated to
  common tasks.
 The more code you write, the greater the chance of
  errors.
 An application framework is needed.
Oracle ADF
Introduction

 Reduces the complexity of J2EE development by
  providing visual and declarative development
 Increases development productivity
    –   Less coding, more reuse
    –   Focus on the application, not the “plumbing”
 Provides a flexible and extensible environment by
  allowing multiple technology choices and
  development styles
 Encourages J2EE best practices by implementing
  standard J2EE design patterns
Oracle ADF
End-to-end J2EE Framework
 Implements standard J2EE best practices
 Model-View-Controller (MVC) design pattern

            Rich Clients              Web and Wireless Clients


                                               Controller


                                Model


                           Business Services



 Focus on the application, not the “plumbing”
 Consolidation and evolution of previous frameworks
Oracle ADF
Visual and Declarative Development

 End-to-end Application Development
    –   J2EE & Services
 Visual
    –   WYSIWYG editors
    –   UML modelers
    –   Structure pane
 Declarative
    –   Structure pane
    –   Property inspector
 Code View/Design View Synchronization
    –   No separate generation step - always synchronized
    –   Underlying code always accessible
Oracle ADF
J2EE Architecture (Simplified)

                     Enterprise
                     JavaBeans

                   ADF Business
                    Components


                    Web Services


                    Java Objects



   Clients       Business Services   Database
Oracle ADF
No Standard API for Client Binding

                      Enterprise
                      JavaBeans

                    ADF Business
                     Components
              ?                       JDBC
                     Web Services


                     Java Objects



    Clients       Business Services          Database
Oracle ADF
ADF Model

Data Controls
Data Binding
JSR-227: “A Standard Data Binding & Data
 Access Facility for J2EE”          Business
                                   Component
                                       Web
                                      Service

                                      TopLink
                       Model
                                       EJB

                                       Java
                                       Class
Oracle ADF
ADF Model Architecture

Data control: describes the values and
 actions defined by the business service
Bindings: define how UI
 components use the                Client
 values and actions in
 the data model                   Bindings

                              Data Control

                            Business Service
Oracle ADF
ADF Model Architecture

Decouples client and business service layers
Client code contains no references to the
 business service
   –   Better design practice
   –   Code is more maintainable
Architecture can be extended to add more
 types of business services
ADF Business Components

                            Simplifies and
                            optimizes
                            O/R mapping


                            Simplifies and
                            optimizes
                            binding of
                            View to logic


                            Deployed
                            either as a
                            Local Model or
                            as a remote
                            Session Facade


      Flexible Deployment
ADF BC High-level architecture

HTML, Java, and    Task-Based    Data Presentation    Business
 XML Interfaces    App Service    & Manipulation       Logic
        L
     XM            Application       View              Entity




                   Payment       SlowPaying          Customer
                  Plan Mgmt      Customers

                                                        Bill
                                    Late
                                  Payments
                                                     Payment
ADF BC Application

         View Objects    Entity Objects




              Top        Customer
           Customers
                                          Customer


            Pending
                           Order              Ord
            Orders                        Database


              Application Module
Start with
database tables
Entity objects encapsulate
business rules, logic,
defaults in a consistent
way for a table
View objects
encapsulate SQL
queries to project, join,
filter, order data for
external client interaction
Application module defines data
model of view object usages for a
complete application use case
UI works with the
application module as
backend business
service
As you build new
applications, underlying
components are reusable
ADF – Productivity With Choice
                         Rich Client                                Web / Wireless
                                                                                        JSF/ADF
                          Swing / JClient                   JSP         ADF UIX          FACES          View

                                                                      Struts/JSF                      Controller

                                                   ADF Bindings

                                                 ADF Data Control
                                                                                                       Model
 ADF Metadata Services




                          Java
                                         EJB            ADF Business                 Web              Business
                                       Session
                         Classes
                                        Beans
                                                         Components
                                                        Service Object
                                                                                   Services           Services

                                                                  ADF Business
                                    TopLink         EJB                                    Data
                          JDBC                                    Components
                                    Queries       Finders                                 Access
                                                                  Query Object



                                                                     ADF Business        Persistent
                           Java Classes       EJB Entity Beans                           Business
                                                                     Components
                                    TopLink Mapping                  Entity Object        Objects
ADF Faces
 Built on top of JSF APIs
 A large component set >100 different components
 Far more advanced and interesting components
    –   Partial-page rendering, etc.
 ADF model support out-of-the-box
 ADF Faces skins (Look and Feel)
ADF Databinding (JSR 227)
Open Source per January 2006
    –   http://www.oracle.com/technology/products/jdev/ht
        docs/faq_adffaces_apache.html
ADF Faces
ADF Faces
ADF Faces also includes many of the framework
 features most needed by JSF developers today:
   –   File upload support is integrated at a component
       level
   –   Client-side validation is automatically derived from
       Validators and Converters for an improved user
       experience
   –   A pageFlow scope makes it easier to pass values
       from one page to another
   –   A new hybrid state saving strategy gives developers
       the best of both client and server-side state saving
JSF Architecture                                     Renderer


with ADF                              UI Component              Expr. Language


 EL accesses “bindings” object
  to value bind UI components      JSF Page
                                               ADF “bindings” Object

 ADF “bindings” object is set
  through ADF Filter in web.xml                   ADF Binding
 Bindings object accesses ADF
                                                ADF DataControl
  Binding container, which then
  accesses DataControl
 Business Services provide        Business        Business        Business
  access to various data sources   Service 1       Service 2       Service 3



                                                                 XML
                                                    RDBMS              URL
                                                                             WS
Demonstration



  Develop a more complex Web Application
  based on ADF Faces
  1.   Create ADF Business Components model
  2.   Layout flow
  3.   Make Edit page
  4.   Optional: Make Create page

Oracle ADF Overview

  • 1.
    Oracle ADF Overview PreparedBy Karsten Schulz Terp-Nielsen @Oracle Denmark Presented By Bahaa Farouk @hp Egypt
  • 2.
    Oracle ADF Motivation –Challenges building J2EE apps  Building J2EE applications can be complex.  Development time can be extensive.  Choosing and implementing appropriate design patterns can be overwhelming.  “Do it yourself” applications often repeat existing application code.  A large portion of “do it yourself” code is dedicated to common tasks.  The more code you write, the greater the chance of errors.  An application framework is needed.
  • 3.
    Oracle ADF Introduction  Reducesthe complexity of J2EE development by providing visual and declarative development  Increases development productivity – Less coding, more reuse – Focus on the application, not the “plumbing”  Provides a flexible and extensible environment by allowing multiple technology choices and development styles  Encourages J2EE best practices by implementing standard J2EE design patterns
  • 4.
    Oracle ADF End-to-end J2EEFramework  Implements standard J2EE best practices  Model-View-Controller (MVC) design pattern Rich Clients Web and Wireless Clients Controller Model Business Services  Focus on the application, not the “plumbing”  Consolidation and evolution of previous frameworks
  • 5.
    Oracle ADF Visual andDeclarative Development  End-to-end Application Development – J2EE & Services  Visual – WYSIWYG editors – UML modelers – Structure pane  Declarative – Structure pane – Property inspector  Code View/Design View Synchronization – No separate generation step - always synchronized – Underlying code always accessible
  • 6.
    Oracle ADF J2EE Architecture(Simplified) Enterprise JavaBeans ADF Business Components Web Services Java Objects Clients Business Services Database
  • 7.
    Oracle ADF No StandardAPI for Client Binding Enterprise JavaBeans ADF Business Components ? JDBC Web Services Java Objects Clients Business Services Database
  • 8.
    Oracle ADF ADF Model DataControls Data Binding JSR-227: “A Standard Data Binding & Data Access Facility for J2EE” Business Component Web Service TopLink Model EJB Java Class
  • 9.
    Oracle ADF ADF ModelArchitecture Data control: describes the values and actions defined by the business service Bindings: define how UI components use the Client values and actions in the data model Bindings Data Control Business Service
  • 10.
    Oracle ADF ADF ModelArchitecture Decouples client and business service layers Client code contains no references to the business service – Better design practice – Code is more maintainable Architecture can be extended to add more types of business services
  • 11.
    ADF Business Components Simplifies and optimizes O/R mapping Simplifies and optimizes binding of View to logic Deployed either as a Local Model or as a remote Session Facade Flexible Deployment
  • 12.
    ADF BC High-levelarchitecture HTML, Java, and Task-Based Data Presentation Business XML Interfaces App Service & Manipulation Logic L XM Application View Entity Payment SlowPaying Customer Plan Mgmt Customers Bill Late Payments Payment
  • 13.
    ADF BC Application View Objects Entity Objects Top Customer Customers Customer Pending Order Ord Orders Database Application Module
  • 14.
  • 15.
    Entity objects encapsulate businessrules, logic, defaults in a consistent way for a table
  • 16.
    View objects encapsulate SQL queriesto project, join, filter, order data for external client interaction
  • 17.
    Application module definesdata model of view object usages for a complete application use case
  • 18.
    UI works withthe application module as backend business service
  • 19.
    As you buildnew applications, underlying components are reusable
  • 20.
    ADF – ProductivityWith Choice Rich Client Web / Wireless JSF/ADF Swing / JClient JSP ADF UIX FACES View Struts/JSF Controller ADF Bindings ADF Data Control Model ADF Metadata Services Java EJB ADF Business Web Business Session Classes Beans Components Service Object Services Services ADF Business TopLink EJB Data JDBC Components Queries Finders Access Query Object ADF Business Persistent Java Classes EJB Entity Beans Business Components TopLink Mapping Entity Object Objects
  • 21.
    ADF Faces  Builton top of JSF APIs  A large component set >100 different components  Far more advanced and interesting components – Partial-page rendering, etc.  ADF model support out-of-the-box  ADF Faces skins (Look and Feel) ADF Databinding (JSR 227) Open Source per January 2006 – http://www.oracle.com/technology/products/jdev/ht docs/faq_adffaces_apache.html
  • 22.
  • 23.
    ADF Faces ADF Facesalso includes many of the framework features most needed by JSF developers today: – File upload support is integrated at a component level – Client-side validation is automatically derived from Validators and Converters for an improved user experience – A pageFlow scope makes it easier to pass values from one page to another – A new hybrid state saving strategy gives developers the best of both client and server-side state saving
  • 24.
    JSF Architecture Renderer with ADF UI Component Expr. Language  EL accesses “bindings” object to value bind UI components JSF Page ADF “bindings” Object  ADF “bindings” object is set through ADF Filter in web.xml ADF Binding  Bindings object accesses ADF ADF DataControl Binding container, which then accesses DataControl  Business Services provide Business Business Business access to various data sources Service 1 Service 2 Service 3 XML RDBMS URL WS
  • 25.
    Demonstration Developa more complex Web Application based on ADF Faces 1. Create ADF Business Components model 2. Layout flow 3. Make Edit page 4. Optional: Make Create page

Editor's Notes

  • #23 The UIX components that you use to create your user interfaces can be broadly divided into three groups: Simple components Layout components Composite components Simple components define visible objects like text and images, and objects that map to standard HTML controls on a page. Examples include Button, Image, and Text components. Layout components do not map to visible objects but define the appearance, behavior, and position of other visible objects. Examples include TableLayout, PageLayout, and StackLayout components. Composite components define more complex visible objects that have greater interactive usage. Examples include Shuttle, HideShow, and Tree components.