2. AUDIENCE PARTICIPATION
THANK YOU ICF IRONWORKS... ROUND II
THANK YOU STACKEXCHANGE!
C.H.A.O.S.* HAT TIP TO ‘MXYZPLK’ ON
RPG.STACKEXCHANGE.COM
MIX-EE-YEZ-PIT-LIK
KEL-TIP-ZIX-UM
* CHEERFUL HAPPY ADVOCATES OF STACKEXCHANGE
3. AUDIENCE PARTICIPATION
THANK YOU ICF IRONWORKS... ROUND II
THANK YOU STACKEXCHANGE!
C.H.A.O.S.* HAT TIP TO ‘MXYZPLK’ ON
RPG.STACKEXCHANGE.COM
MIX-EE-YEZ-PIT-LIK
KEL-TIP-ZIX-UM
* CHEERFUL HAPPY ADVOCATES OF STACKEXCHANGE
4. AUDIENCE PARTICIPATION
THANK YOU ICF IRONWORKS... ROUND II
THANK YOU STACKEXCHANGE!
C.H.A.O.S.* HAT TIP TO ‘MXYZPLK’ ON
RPG.STACKEXCHANGE.COM
MIX-EE-YEZ-PIT-LIK
KEL-TIP-ZIX-UM
* CHEERFUL HAPPY ADVOCATES OF STACKEXCHANGE
5. ABOUT THE PRESENTER
TIMOTHY STONE
A SCJP WEB TIER ARCHITECT AND UX/UI ADVOCATE
STRIPES COMMITTER
GNUPG/PGP FINGERPRINT
0248 FAD3 D6BE 008C 27C8 7A72 7249 DE33 22A5 2C82
RPG ADVOCATE
REFEREES WFRP... OK, PLAYS PATHFINDER TOO
(AND LOOKING FOR A GROUP)
GOOGLE PROFILE
JAVAFUELED@GMAIL.COM
6. THE PITCH
STRIPES IS A PRESENTATION FRAMEWORK FOR BUILDING WEB
APPLICATIONS USING THE LATEST JAVA TECHNOLOGIES.
STRIPES GOALS
MAKE DEVELOPING WEB APPLICATIONS IN JAVA EASY...???
PROVIDE SIMPLE YET POWERFUL SOLUTIONS TO COMMON
PROBLEMS
MAKE THE STRIPES RAMP UP TIME FOR A NEW DEVELOPER
LESS THAN 30 MINUTES
MAKE IT REALLY EASY TO EXTEND STRIPES, WITHOUT MAKING
YOU CONFIGURE EVERY LAST THING
7. THE BASE HIT
ZERO EXTERNAL CONFIGURATION PER PAGE/ACTION (ACTIONBEANS ARE AUTO-
DISCOVERED, AND CONFIGURED USING ANNOTATIONS)
POWERFUL BINDING ENGINE THAT WILL BUILD COMPLEX OBJECT WEBS OUT OF THE
REQUEST PARAMETERS
EASY TO USE (AND LOCALIZED) VALIDATION AND TYPE CONVERSION SYSTEM
LOCALIZATION SYSTEM THAT WORKS EVEN WHEN YOU USE DIRECT JSP ⇢ JSP LINKS
ABILITY TO RE-USE ACTIONBEANS AS VIEW HELPERS
EASY TO USE INDEXED PROPERTY SUPPORT
BUILT IN SUPPORT FOR MULTIPLE EVENTS PER FORM
TRANSPARENT FILE UPLOAD CAPABILITIES
SUPPORT FOR INCREMENTAL DEVELOPMENT (E.G. YOU CAN BUILD AND TEST YOUR JSP
BEFORE EVEN THINKING ABOUT YOUR ACTIONBEAN)
8. MY INTRODUCTION
CONTEXT GOES A LONG WAY, SO ...
START WITH 10 YEAR OLD LEGACY CREDIT CARD
APPLICATION PLATFORM
STRUTS 1.0.2, NO JSTL, WEBLOGIC 10.X
STRUTS 2?
SPRING MVC + WEBFLOW?
OTHERS?
9. LEGACY PLATFORM
10 YEARS OF CRUFT
LAZY ENGINEERS PUSHING BUSINESS LOGIC TO FRONT
SIGNIFICANT SCRIPTING
HEAVY JSP-BY-WAY-OF-PERL-LIKE ENGINEERING
THE CODE IS THE DOCUMENTATION (WEAK JAVADOC)
STRUTS 1.0.2
10. GOALS
REMOVE THE CRUFT, DECODE, INTERVIEW, DOCUMENT
PUT BUSINESS IN CONTROL AND REDUCE ERRORS
UPDATE PLATFORM FRONT TO BACK
ELIMINATE SCRIPTING AND ENFORCE MVC PATTERNS
SIMPLIFY DEVELOPMENT — FULL IDE DEV LIFECYCLE
SOLVE THE PROBLEM OF ON-BOARDING
JUNIOR DEVELOPERS
11. HttpSession IS NOT A BAG OF HOLDING
MAKE CODE REVIEWS PART OF GOVERNANCE
CRUCIBLE+FISHEYE
WHY ARE WE PROCESSING THE VIEW THROUGH
INCLUSION FILTERS AGAIN?
CAMPAIGNS HAVE EXPIRATION DATES. WHAT HAPPENS
ON EXPIRATION? WHAT REGULATIONS ARE APPLICABLE
ON EXPIRATION?
JAVADOC, DESIGN DOCUMENTS, BUSINESS PROCESSES
REMOVE THE CRUFT, DECODE, INTERVIEW, DOCUMENT
12. GOALS
REMOVE THE CRUFT, DECODE, INTERVIEW, DOCUMENT
PUT BUSINESS IN CONTROL
REDUCE ERRORS
UPDATE PLATFORM FRONT TO BACK
ELIMINATE SCRIPTING AND ENFORCE MVC PATTERNS
SIMPLIFY DEVELOPMENT — FULL IDE DEV LIFECYCLE
SOLVE THE PROBLEM OF ON-BOARDING
JUNIOR DEVELOPERS
13. BUSINESS KNOWS THE DURATION OF A CAMPAIGN
AND THE EXPIRATION DATE
BUSINESS KNOWS HOW A CAMPAIGN EXPIRES, THE
REGULATION, AND THE REPLACEMENT CAMPAIGN
BUSINESS ALREADY HAS BOTH THE REPOSITORY AND
THE CHANGE CONTROL IN PRODUCTION
REMOVE DEVELOPMENT FROM CAMPAIGN DATA
MANAGEMENT
PUT BUSINESS IN CONTROL
14. GOALS
REMOVE THE CRUFT, DECODE, INTERVIEW, DOCUMENT
PUT BUSINESS IN CONTROL
REDUCE ERRORS
UPDATE PLATFORM FRONT TO BACK
ELIMINATE SCRIPTING AND ENFORCE MVC PATTERNS
SIMPLIFY DEVELOPMENT — FULL IDE DEV LIFECYCLE
SOLVE THE PROBLEM OF ON-BOARDING
JUNIOR DEVELOPERS
15. THE BUSINESS TOOLS ALREADY HAVE ALL THE
CAMPAIGN DATA, STOP REKEYING IT
REDUCE ERRORS
16. GOALS
REMOVE THE CRUFT, DECODE, INTERVIEW, DOCUMENT
PUT BUSINESS IN CONTROL
REDUCE ERRORS
UPDATE PLATFORM FRONT TO BACK
ELIMINATE SCRIPTING AND ENFORCE MVC PATTERNS
SIMPLIFY DEVELOPMENT — FULL IDE DEV LIFECYCLE
SOLVE THE PROBLEM OF ON-BOARDING
JUNIOR DEVELOPERS
17. UI 10 YEARS OLD
SERVICES. SERVICES. SERVICES.
GRADUATE DATA
UPDATE PLATFORM FRONT TO BACK
18. GOALS
REMOVE THE CRUFT, DECODE, INTERVIEW, DOCUMENT
PUT BUSINESS IN CONTROL
REDUCE ERRORS
UPDATE PLATFORM FRONT TO BACK
ELIMINATE SCRIPTING AND ENFORCE MVC PATTERNS
SIMPLIFY DEVELOPMENT — FULL IDE DEV LIFECYCLE
SOLVE THE PROBLEM OF ON-BOARDING
JUNIOR DEVELOPERS
19. WHEN ONE SEES A JSP LIKE THIS:
<%@ page import=”...”%>
<%
Enumeration e = request.getParameters();
while(e.hasMoreElements()) {
//put parameters on session
}
...
...
...
// 200 lines later
%>
IT’S TIME TO READ THE JSP SPECIFICATION.
PAYING CLOSE ATTENTION TO 3.3.3:
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
ELIMINATE SCRIPTING AND ENFORCE MVC PATTERNS
20. GOALS
REMOVE THE CRUFT, DECODE, INTERVIEW, DOCUMENT
PUT BUSINESS IN CONTROL
REDUCE ERRORS
UPDATE PLATFORM FRONT TO BACK
ELIMINATE SCRIPTING AND ENFORCE MVC PATTERNS
SIMPLIFY DEVELOPMENT — FULL IDE DEV LIFECYCLE
SOLVE THE PROBLEM OF ON-BOARDING
JUNIOR DEVELOPERS
21. EVER TRIED TO RUN WEBLOGIC 10.X LOCALLY? ON WIN
XP? 4GB... NO, 3GB RAM?
EVER ASKED A JUNIOR DEVELOPER TO DO IT?
EVER ASKED A JUNIOR DEVELOPER SETUP MAVEN
RUNNING, DEPLOY TO WEBLOGIC, DEBUG A JSP... OH,
BUT NOT BEFORE INSTALLING ECLIPSE?
SIMPLIFY DEVELOPMENT — FULL IDE DEV LIFECYCLE
22. GOALS
REMOVE THE CRUFT, DECODE, INTERVIEW, DOCUMENT
PUT BUSINESS IN CONTROL
REDUCE ERRORS
UPDATE PLATFORM FRONT TO BACK
ELIMINATE SCRIPTING AND ENFORCE MVC PATTERNS
SIMPLIFY DEVELOPMENT — FULL IDE DEV LIFECYCLE
SOLVE THE PROBLEM OF ON-BOARDING
JUNIOR DEVELOPERS
23. HOW DO WE GET TO “FULL IDE DEV CYCLE”?
CALL IT “PRESS THE GREEN BUTTON” OR “PRESS
PLAY” DEVELOPMENT
SOLVE THE PROBLEM OF ON-BOARDING JUNIOR DEVELOPERS
24. GOALS
REMOVE THE CRUFT, DECODE, INTERVIEW, DOCUMENT
PUT BUSINESS IN CONTROL
REDUCE ERRORS
UPDATE PLATFORM FRONT TO BACK
ELIMINATE SCRIPTING AND ENFORCE MVC PATTERNS
SIMPLIFY DEVELOPMENT — FULL IDE DEV LIFECYCLE
SOLVE THE PROBLEM OF ON-BOARDING
JUNIOR DEVELOPERS
25. EVALUATIONS
APPLY GOALS TO SOLUTIONS IN EVALUATION
NO ONE SELLS MVC FRAMEWORKS, ONLY SUPPORT
MEET THE CHALLENGERS:
STRUTS
SPRING MVC
STRIPES
26. STRUTS EVALUATION
LEGACY ON STRUTS 1.0.2
STRUTS 1.2
MODERATE REENGINEERING; perform DEPRECATED
STRUTS 1.3
SIGNIFICANT REENGINEERING, NIGH REWRITE; execute
STRUTS 2
FULL REWRITE
PROS: DEVELOPER AVAILABILITY
CONS: VERSION CEILING WITHOUT FULL REWRITE
27. SPRING MVC EVALUATION
PROS
SUBJECTIVELY SPEAKING: BETTER THAN STRUTS 2
DEVELOPER AVAILABILITY
STACK INTEGRATION
CONS
SOME CONVENTION, MOSTLY CONFIGURATION
FULL REWRITE
28. COMMON PAIN POINTS
NO ESCAPING FULL REWRITE
FRAMEWORKS MAY ADD NEW TECHNOLOGIES TO LEARN
ENGINEER CENTRIC
CONFIGURATION VERSUS CONVENTION
30. LEGACY TO NEXT GEN
STRIPES VS. ET. AL... STRIPES PREVAILS. HOW? WHY?
THE STRIPES PROTOTYPE TEAM DELIVERED COMPLETE
FEATURES TWO WEEKS BEFORE STRUTS AND SPRING
STRUTS AND SPRING TEAMS COULD NOT DEMONSTRATE
KEY PATCH AND DEPLOYMENT REQUIREMENTS
STRIPES SOLVED SIMPLY WHERE STRUTS AND SPRING
REQUIRED NEW LEARNING AND OPERATIONAL CHANGE
ENGINEERS CAN DIG TO EXPLOIT, BUT GETS OUT OF THE
WAY FOR EVERYONE ELSE
31. LEGACY TO NEXT GEN
MAVENIZE APPLICATION END-TO-END
ALL SERVICES
ALL CONTENT
...EVERYTHING
WE’LL SEE SOME OF CONTENT AND LOGIC TONIGHT
32. STRIPES... AND JAVA WEB
DEVELOPMENT IS FUN AGAIN*
COVERED
ACTION BEANS AND AUTO CONFIGURATION
EVENT HANDLING
LAYOUTS
VALIDATION
GET-AFTER-POST
NOT COVERED
SPRING BEANS, HIBERNATE (STRIPERSIST), ETC.
INTERCEPTORS AND STRIPES REQUEST LIFECYCLE
WIZARDS
* FREDDY DAOUD, AUTHOR
33. STRIPES MAVEN QUICKSTART
NETBEANS BUG 208146
NOT IN MAVEN CENTRAL... YET. BUT SOON.
BASIC ACTIONBEAN
WEB.XML
SO? WONDER WHERE STRUTS 2 GOT THE IDEA?
ACTION BEANS AND AUTO CONFIGURATION
34. STRIPES EVENTS ARE VIEW RESOLUTIONS
EASILY ENFORCES THE PRE-ACTION PATTERN IN MVC
BASIC ACTIONBEAN
ADVANCED ACTIONBEAN
RESOLUTION VARIETY
FORWARD, REDIRECT, JAVASCRIPT, STREAMING,
ERROR... EXTENDABLE
EVENT HANDLING
35. STRIPES LAYOUT TAG LIBRARY
SIMPLE AND ROBUST
DYNAMIC
WEBLOGIC 10.X ISSUE AND WORKAROUND
SIMPLE EXAMPLE
COMPLEX EXAMPLE
LAYOUTS
36. STRIPES VALIDATION GETS OUT OF THE WAY
ZERO, NADA, NO EXTERNAL CONFIGURATION
FULLY ANNOTATED IN ACTIONBEANS
NIGH INSTANT SERVER SIDE VALIDATION; EASILY COUPLED WITH CLIENT SIDE VALIDATION
DYNAMIC AND EXTENSIBLE
COMPLEX VALIDATION THROUGH
TYPE CONVERTERS
FORMATTERS
SIMPLE EXAMPLE
BASIC FIELD VALIDATION
COMPLEX EXAMPLE
OBJECT VALIDATION AND VALIDATION METHODS
VALIDATION
37. WHAT IS THIS... GET-AFTER-POST?
WHY?
HOW STRIPES MAKES IT EASY
GET-AFTER-POST
38. RESOURCES
IRC.FREENODE.NET#STRIPES
USER AND DEVELOPER MAILING LISTS
WWW.STRIPESFRAMEWORK.ORG
STRIPES...AND JAVA WEB DEVELOPMENT IS FUN AGAIN
BY FREDERIC DAOUD (PRAGPROG PRESS)
THE SOURCE IS ... ACTUALLY READABLE!
39. RESOURCES
IRC.FREENODE.NET#STRIPES
USER AND DEVELOPER MAILING LISTS
WWW.STRIPESFRAMEWORK.ORG
STRIPES...AND JAVA WEB DEVELOPMENT IS FUN AGAIN
BY FREDERIC DAOUD (PRAGPROG PRESS)
THE SOURCE IS ... ACTUALLY READABLE!