8. The Servlet API
• The introduction in March 1998
• Enabled Java developers to write server-side code for
delivering dynamic Web content
• Java response to CGI
9. JavaServer Pages
•
•
•
•
•
Released in 1999 by Sun Microsystems
High-level abstraction of Java servlets
Java response to PHP
Adds tags and expression language
Works inside JSP container, which handles all JSP page
view requests.
10. Apache Struts
•
•
•
•
•
Introduced by Apache Foundation in 2000
Implementation of the Model-View-Controller paradigm
Enabled actions to support navigation
Templates in JSP, XML, Velocity
Struts 2 with AJAX and plugins support
11. Spring MVC
•
•
•
•
•
Released under Apache 2.0 license in 2003
Spring response to Struts framework
Tightly coupled to the Spring IOC container
Defines strategy interfaces for the responsibilities
Supports portlet development
12. The Birth of JSF
• Created as JSR #127
• Designed by Sun, Oracle, IBM and BEA in May 2001
• J2EE framework for building Web applications
13. The JSF Design Goals
• Create a standard UI component framework
• Define a set of lightweight Java classes for UI
components, component state, and input events
• Provide a set of common UI components
• Provide a JavaBeans model for dispatching events from
client-side UI controls to server-side application behavior
14. The JSF Design Goals
• Define APIs for input validation, including client-side
validation
• Specify a model for internationalization and localization
• Automatic support of all available client configuration
data, such as the browser version
• Support Web Accessibility Initiative (WAI)
15. History of JSF
• Simple things should be simple. Complex things
should be possible.
Alan Kay
16. JSF 1.0
• Initial release in March 2004
• Core and performance improvement
• Supports Servlet 2.3 and JSP 1.2
17. JSF 1.1
• Bugfix release in May 2004
• Performance issues
• Based on J2EE 1.3
18. JSF 1.2
•
•
•
•
•
Release in May 2006
Fully detached from JSP as view technology
Unified expression language support
Lack of Ajax out-of-box support
Core part of J2EE 5
19. JSF 2.0
Release in June 2009
JSP replaced by facelets as view technology
Full Ajax support similar to Ajax4jsf
Annotations and convention-over-configuration
invention
• New conversation scope
•
•
•
•
30. •
•
•
•
•
•
•
•
A full set of AJAX enabled components
Client-side validation
Advanced queuing
Push component upgrades including
JavaMessaging Service (JMS) integrations
Component Development Kit (CDK).
Comprehensive documentation covering
development best practices, and component
details.
Detailed and automated testing facilities for
components, actions, listeners, and pages.
Broad cross-browser support
33. Rich components
• Self-contained and advanced UI components
• Extension of standard JSF components
• Pluggable customization though Ajax support
34. A Historical Perspective
• Created as Telamon project in 2005 by Alexander
Smirnov
• Released in 2006 as part of Exadel Visual
Component Platform
• Split into open-source Ajax4jsf and commercial
RichFaces in 2006
• Made open-source in 2007 as Jboss Ajax4jsf and
Jboss RichFaces
• Merged as single RichFaces product in September
2007
35. Alexander Smirnov
• Architect of the Jboss Richfaces project
• Java Server Faces expert group member
• Jboss GateIn portal developer
64. •
•
•
•
•
•
High level of understanding
Limited community support
Lack of books and comprehensive documentation
Multiple resource-consuming dependencies
Performance overhead
Migration issues between RF3 and RF4
65. Love bug story
• I am migrating from RF 3.3.1 to 4.0. I'm experiencing
an issue with the tooltip component. Specifying
"bottom-left" for the direction attribute results in the
following error:
• javax.el.ELException: Cannot convert bottom-left of
type class java.lang.String to class
org.richfaces.component.Positioning
• Was this attribute implemented in 4.0? Am I doing
something wrong?
66. Love bug story
• Just in case someone else has the same issue, I've
figured it out. In RF 4, 'bottom-right' positioning is no
longer valid. You have to use 'bottomRight'. I am
completely shocked that none of these changes have
made it to their online documentation. I have wasted
time trying to figure out what was happening with this
component. I cannot believe users are expected to go
to the API JavaDocs and look through each class for
possible attribute values.
•
• If any RichFaces guys read this, please either update the
online documentation or remove it. There are way too
many components in there with information that has not
been updated and is just plain wrong