Karsten Schulz
Senior Principal Consultant Oracle Denmark
Web Application Development Using
ADF Faces
Agenda
Application Developer Framework (ADF) introduction
Java Server Faces (JSF) introduction
Short on ADF Faces
Using JSF/ADF Faces in a development case
Q/A
Challenges Faced when
Building J2EE Applications
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 Application
Development Framework
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
Focus on the application, not the “plumbing”
Consolidation and evolution of previous frameworks
Business Services Business Services
Web and Wireless Clients Web and Wireless Clients Rich Clients
Rich Clients
Model Model
Controller Controller
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
J2EE Architecture (Simplified)
Enterprise JavaBeans ADF Business
Components
Web Services
Business Services Clients
Java Objects
Database
No Standard API for Client Binding
Enterprise JavaBeans ADF Business
Components
Web Services
Business Services Clients
Java Objects
Database
?
JDBCADF Model
Data Controls
Data Binding
JSR-227: “A Standard Data Binding & Data Access Facility for J2EE”
ServiceWeb
TopLink EJB ClassJava Business Component
Model Model
ADF Model Architecture
Data control: describes the values and actions defined by the business service
Client Client Bindings Bindings Data Control Data Control Business Service Business Service
Bindings: define how UI components use the
values and actions in the data model
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
Drag-and-Drop Binding
Data Control Palette
– Expose any business service
– Available to any client
ADF – Productivity With Choice
ADF UIX
ADF Bindings ADF Data Control
ADF Business Components Service Object
ADF Business Components Query Object
ADF Business Components Entity Object Swing / JClient
ADF Metadata Services
View Controller
Model Business
Services
Swing / JClient JSP ADF UIX JSF/ADF
FACES
Rich Client Web / Wireless
Struts/JSF
ADF Bindings ADF Data Control
Java Classes
EJB Session
Beans
Web Services ADF Business
Components Service Object
JDBC EJB
Finders TopLink
Queries
ADF Business Components Query Object
Data Access
ADF Business Components Entity Object Java Classes EJB Entity Beans
TopLink Mapping
Persistent Business
Objects
ADF Metadata Services
JavaServer Faces (JSF)
Overview
Developed through Java Community Process as JSR 127
Nickname : Faces
Goal: Simplify creation of Java Server GUIs
Started: May 2001
First relase: March 2004
Oracle is a primary contributor
JavaServer Faces (JSF)
Overview - Why JSF?
So what’s all the fuss about?
What makes JSF so compelling?
Why are IBM, Sun and Oracle devoting serious resources to JSF?
Why another framework?
JavaServer Faces (JSF)
Overview - Here is why!
JSF brings backing of a standard
specification – JSR 127
JavaServer Faces (JSF)
Overview
JSF is a natural evolution of J2EE Web development
Servlet API
JavaServer Pages
Custom Tag Libraries
JSTL
Too low level…
Easier but…scriptlets Not standard…
Again, too low level…
JavaServer Faces
Finally, a comprehensive, standard API for J2EE
Web applications!
JavaServer Faces
JSF Architecture
HTML render kit
Front ControllerFront Controller
WML render kit
WML render kit
Backend Backend
CodeCode
JSF Architecture
UIComponent is rendered through Renderer class
Expression Language Value Binding is used to access
managed bean also know as a
"backing bean"
Managed bean accesses J2EE persistence layer
Renderer
UI Component Expr. Language
Managed bean JSF Page
RDBMS
J2EE Persistence Layer / JDBC
JavaServer Faces (JSF)
Oracle 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
JavaServer Faces (JSF)
Oracle ADF Faces
JavaServer Faces (JSF)
Oracle 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 with ADF
EL accesses “bindings” object to value bind UI components
ADF “bindings” object is set through ADF Filter in web.xml
Bindings object accesses ADF Binding container, which then accesses DataControl
Business Services provide
access to various data sources
ADF “bindings” Object
ADF Binding
Renderer
UI Component Expr. Language
JSF Page
RDBMS
ADF DataControl
Business Service 1
Business Service 2
Business Service 3
XML URL WS
JavaServer Faces (JSF)
Oracle ADF Faces – Extend the JSF life cycle
Happens through a registered phase- listener