2. Agenda
Firstly What is Java ?
Application Developer Framework (ADF) intro.
Java Server Faces (JSF) intro.
Short on ADF Faces.
Using JSF/ADF Faces in a development .
Q/A.
3. Who am I ?
Mohamed Shahpoup has my B.Sc. from FCI Mansoura Majored
in computer science ,
Java Developer, Linux Admin, and JDeveloper/Java Instructor,
that is besides my career as an java developer and freelancer. I
have delivered large number of projects to many reputational
companies like Vodafone, Etisalat, Nawras, AsiaCell, and Some
international ministries. I worked as Java Instructor in many
training centers since 2008.
4. Who are you ?
Java Developer
Oracle Developer
Software Developer
None of the above
All of the above
5. 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.
6. 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
7. 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 ServicesBusiness Services
Web and Wireless ClientsWeb and Wireless ClientsRich ClientsRich Clients
ModelModel
ControllerController
8. Oracle ADF
Visual and Declarative Development
End-to-end Application Development
– J2EE & Services
Visual
– Visual editors
– UML modelers
Declarative
– Structure pane
– Property inspector
Code View/Design View Synchronization
– No separate generation step - always synchronized
– Underlying code always accessible
10. No Standard API for Client Binding
Enterprise
JavaBeans
ADF Business
Components
Web Services
Business ServicesClients
Java Objects
Database
JDBC?
11. ADF Model
Data Controls
Data Binding
JSR-227: “A Standard Data Binding & Data
Access Facility for J2EE”
Web
Service
TopLink
EJB
Java
Class
Business
Component
ModelModel
12. ADF Model Architecture
Data control: describes the values and actions
defined by the business service
ClientClient
BindingsBindings
Data ControlData Control
Business ServiceBusiness Service
Bindings: define how UI
components use the
values and actions in
the data model
13. 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
14. 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 / JClientADFMetadataServices 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
ADFMetadataServices
15. 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
17. 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
19. 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
20. 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
22. 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
23. 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
25. Oracle Web-Logic Server
Oracle WebLogic Server is Oracle's preferred
platform to provide both a standard Java EE
environment and an environment specifically
tailored to Oracle Fusion Middleware providing:
Complete Java EE 5 compatibility
Complete Java SE 6 compatibility
Web Services support
Integration with Oracle's Fusion Middleware tools
26. Oracle Fusion MiddleWare
Oracle Fusion Middleware (OFM, also known as Fusion Middleware)
consists of several software products from Oracle Corporation. OFM
spans multiple services, including
Java EE and developer tools, integration services, business intelligence,
collaboration, and content management. OFM depends on open
standards such as BPEL, SOAP, XML and JMS.
Oracle Fusion Middleware provides software for the development,
deployment, and management of service-oriented architecture (SOA). It
includes what Oracle calls "hot-pluggable" architecture, designed to
facilitate integration with existing applications and systems from other
software vendors such as IBM, Microsoft.
Before we start looking at components I think it is worthwhile to elaborate on "Why another framework?". When it comes to the architecture of JavaServer Faces it is not a new thing. For example Apache's Tapestry or Oracle's ADF UIX has been around for quite some time and proven to be very successful. The best thing that Faces brings that other similar technologies do not have is the backing of a standard specification (JSR-127).
This picture shows JSF architecture in a somewhat simplified manner. Just like any other MVC-based architecture, JSF architecture has its own Front controller called FacesServlet. The role of this controller is basically a gatekeeper.
As we will learn later on, a JSF view is made of a tree of UI components. These UI components can be associated with backend model objects called backing beans. These backing beans handle application logic (or sometimes called business logic) handling. When a page has to be rendered to a particular client type, whether the client type is a HTML browser running on a desktop or WML browser running on a wireless phone, a particular renderer is used for displaying the data maintained in the UI components. In other words, a same UI component is used for displaying information on different client types using different protocols.
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.