Comparing Kick Ass Web Frameworks
-
Upload
matt-raible -
Category
Technology
-
view
18.883 -
download
1
description
Transcript of Comparing Kick Ass Web Frameworks
![Page 1: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/1.jpg)
© 2010, Raible Designs
COMPARING KICK-ASS WEB FRAMEWORKS
Matt Raiblehttp://raibledesigns.com
Images by Stuck in Customs - http://www.flickr.com/photos/stuckincustoms © 2010 Raible Designs
![Page 2: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/2.jpg)
INTRODUCTIONS
Have you heard of SOFEA?
Are you using GWT?
Experience with Rails?
What do you want to get from this session?
![Page 3: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/3.jpg)
Who is Matt Raible?
Blogger on raibledesigns.com
Founder of AppFuse
Father, Skier, Cyclist
Web Framework Connoisseur
![Page 4: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/4.jpg)
The Problem with Web Frameworks
SOFEA and SOUI
REST Backends
Rich Frontends
Conclusion
Q and A
SESSION AGENDA
![Page 5: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/5.jpg)
THE PROBLEM
![Page 6: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/6.jpg)
H O W D O Y O U C H O O S E ?
![Page 7: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/7.jpg)
ELIMINATE, DON’T INCLUDE
![Page 8: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/8.jpg)
![Page 9: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/9.jpg)
SOFEA & SOUI
SOFEA first introduced in Life above the Service Tier on 10/12/2007.
http://www.theserverside.com/news/thread.tss?thread_id=47213
SOUI introduced by Nolan Wright and Jeff Haynie in early November 2007.
http://www.infoq.com/news/2007/11/soui-death-of-mvc2
![Page 10: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/10.jpg)
SOFEA PRINCIPLES
Decouple the three orthogonal Presentation Tier processes of Application Download, Presentation Flow and Data Interchange. This is the foundational principle of SOFEA.
Explore various Application Download options to exploit usefully contrary trade-offs around client footprint, startup time, offline capability and a number of security-related parameters.
Presentation Flow must be driven by a client-side component and never by a server-side component.
Data Interchange between the Presentation Tier and the Service Tier must not become the weakest link in the end-to-end application chain of data integrity.
Model-View-Controller (MVC) is a good pattern to use to build the Presentation Tier.
![Page 11: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/11.jpg)
![Page 12: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/12.jpg)
RECOMMENDED FRAMEWORKS
DHTML/AJAX frameworks for Modern Browsers
Handcoded with third party JavaScript libraries
Google Web Toolkit
TIBCO General Interface Builder
XML Dialects for Advanced Browsers
XForms and XHTML 2.0
Mozilla XUL
Microsoft SilverLight/XAML
![Page 13: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/13.jpg)
RECOMMENDED FRAMEWORKS
Java frameworks
Java WebStart (with/without Spring Rich Client)
JavaFX
Adobe Flashbased frameworks
Adobe Flex
OpenLaszlo
![Page 14: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/14.jpg)
E P I P H A N Y A F T E R R E A D I N G A B O U T S O F E A
“I hope to develop with Flex, Grails, GWT or YUI + Struts 2 in the next 6 months.”http://raibledesigns.com/rd/entry/re_life_above_the_service
![Page 15: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/15.jpg)
REST
http://www.infoq.com/articles/rest-introduction
API
![Page 16: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/16.jpg)
RUBY ON RAILS
REST is enabled by default with Scaffolding
Scaffolding doesn’t support one-to-many UI
ActiveScaffold fixes one-to-many, supports REST and adds Ajax
![Page 17: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/17.jpg)
RAILS CONTROLLER
![Page 18: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/18.jpg)
RESTFUL RAILS
![Page 19: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/19.jpg)
GRAILS
Grails 1.x has REST support built-in
Scaffolding does not support REST by default
Adding REST support to Scaffolding
http://fbflex.wordpress.com/2008/05/15/rest-service-xml-output-in-grails-via-content-negotiation/
Scaffolding insufficiently supports one-to-many UI
One-to-many support possible if you modify templates
http://www.stainlesscode.com/site/comments/grails_one_to_many_scaffolding
![Page 20: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/20.jpg)
GRAILS CONTROLLER
![Page 21: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/21.jpg)
RESTFUL GRAILS
![Page 22: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/22.jpg)
RAILS VS. GRAILS
http://grails.org/Grails+vs+Rails+Benchmark
Grails: 40 requests per second, Rails: 32
![Page 23: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/23.jpg)
LANGUAGE PERFORMANCE
0
200
400
600
Java C++ JRuby Python Groovy PHP
Time (ms) per iteration
http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
![Page 24: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/24.jpg)
JOBS IN 2008
0
125
250
375
500
LinkedIn Monster Dice
Grails Rails
![Page 25: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/25.jpg)
JOBS IN 2009
0
125
250
375
500
LinkedIn Monster Dice
Grails Rails
![Page 26: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/26.jpg)
JOBS IN 2010
0
125
250
375
500
LinkedIn Monster Dice
Grails Rails
![Page 27: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/27.jpg)
MY NETWORK 2008
0
133
267
400
Located within 50 miles of Denver (80210)
Grails Rails
![Page 28: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/28.jpg)
MY NETWORK 2009
0
133
267
400
Located within 50 miles of Denver (80210)
Grails Rails
![Page 29: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/29.jpg)
MY NETWORK 2010
0
133
267
400
Located within 50 miles of Denver (80210)
Grails Rails
![Page 30: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/30.jpg)
FLEX + RAILS
Flex Scaffold
http://www.railslodge.com/plugins/717-flex-scaffold
Flex e-Genial Scaffold
http://rubyforge.org/projects/flexscaffold
WebORB for Ruby on Rails
http://www.themidnightcoders.com/weborb/rubyonrails/index.htm
<mx:HTTPService id=”...” url=”...” resultFormat=”...” HTTPMethod=”...” result=”...”/>
![Page 31: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/31.jpg)
GWT + GRAILS
GWT Pluginhttp://grails.org/GWT+PluginUses Server-side RPC
RequestBuilder and Overlay TypesProxyServlet handy for developmenthttp://raibledesigns.com/rd/entry/developing_and_testing_gwt_client
RestyGWT and Restlet
![Page 32: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/32.jpg)
G W T V S . F L E X S M A C K D O W N !
![Page 33: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/33.jpg)
TEXTLeft-to-right languages
unsupported in Flex
![Page 34: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/34.jpg)
DRAWINGFlex can draw
![Page 35: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/35.jpg)
PRINTINGFlex has issues printing
from the browser
![Page 36: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/36.jpg)
DRAG N’ DROP
Flex has easy drag n’ drop support
![Page 37: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/37.jpg)
CSSGWT has CSS support, not
like Flex’s proprietary support
![Page 38: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/38.jpg)
VALIDATORS &
FORMATTERSFlex has effects, form layout, validators and
formatters
![Page 39: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/39.jpg)
JSON SUPPORTGWT supports JSON out-
of-the-box
![Page 40: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/40.jpg)
Flex works across all browsers
IE6 SUPPORT
![Page 41: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/41.jpg)
IPHONE SUPPORT
GWT works on the iPhone
![Page 42: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/42.jpg)
VIDEOFlash Video is the absolute number one video format
on the web
![Page 43: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/43.jpg)
PERFORMANCEMaking your app “pop”
![Page 44: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/44.jpg)
COMPONENTSTour de Flex
![Page 45: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/45.jpg)
TOOLSSpeed Tracer
IDEs
![Page 46: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/46.jpg)
PROGRAMMING MODEL
“GWT is nothing more than a JSP Tag Library”
-- Matt Raible
![Page 47: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/47.jpg)
FLEX
Pros:
Produces Flash UI
Funded by Adobe
Has many successful client stories
Supports REST easily
Cons
Not Search Engine Friendly
Doesn’t render HTML content well
Doesn’t print well by default
No Zero Turnaround w/o IDE
![Page 48: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/48.jpg)
GWT
Pros:
Write Java => Produces JavaScript
Easy to learn and develop with standard Java tools
Vibrant Community
Zero Turnaround in Development Mode
Cons:
You have to know Java
Slow to compile and test with GWTTestCase
More like a JSP Tag Library than a web framework
![Page 49: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/49.jpg)
FLEX VS. GWT
Ajax vs. Flex
http://anthonyfranco.wordpress.com/2007/06/22/flex-and-ajax-friends-or-foes
Use the Best Tool for the Job
Open Web: Ajax
Video and Rich Media: Flex
HTML Rendering: Ajax
Vector Graphics and Bitmap Manipulation: Flex
Accessibility: Flex
![Page 50: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/50.jpg)
FLEX VS. AJAX PERFORMANCE
http://www.jamesward.com/census
![Page 51: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/51.jpg)
JOBS IN 2008
0
150
300
450
600
LinkedIn Monster Dice
GWT Flex
![Page 52: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/52.jpg)
JOBS IN 2009
0
150
300
450
600
LinkedIn Monster Dice
GWT Flex
![Page 53: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/53.jpg)
JOBS IN 2010
0
150
300
450
600
LinkedIn Monster Dice
GWT Flex
![Page 54: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/54.jpg)
0
175
350
525
700
Located within 50 miles of Denver (80210)
GWT Flex
MY NETWORK 2008
![Page 55: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/55.jpg)
0
175
350
525
700
Located in or near Denver
GWT Flex
MY NETWORK 2009
![Page 56: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/56.jpg)
0
175
350
525
700
Located in or near Denver
GWT Flex
MY NETWORK 2010
![Page 57: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/57.jpg)
PRETTY GRAPHS
![Page 58: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/58.jpg)
PRETTY GRAPHS
![Page 59: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/59.jpg)
PRETTY GRAPHS
![Page 60: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/60.jpg)
PRETTY GRAPHS
![Page 61: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/61.jpg)
PRETTY GRAPHS
![Page 62: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/62.jpg)
PRETTY GRAPHS
![Page 63: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/63.jpg)
MAILING LIST TRAFFIC
October 2009
0 750 1500 2250 3000
Rails Grails GWT Flex
![Page 64: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/64.jpg)
MAILING LIST TRAFFIC
May 2010
0 750 1500 2250 3000
Rails Grails GWT Flex
![Page 65: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/65.jpg)
STACKOVERFLOW
0
3750
7500
11250
15000
GWTGrails
FlexRails
Tagged Questions (June 7, 2010)
![Page 66: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/66.jpg)
STACKOVERFLOW
0
22500
45000
67500
90000
JavaScriptPHP
JavaC#
Tagged Questions (June 7, 2010)
![Page 67: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/67.jpg)
GRAILS
http://grails.org
Apache 2.0 License
Active Community @
http://grails.org/Community
Recommended Books:
Getting Started with Grails
Grails: A Quick-Start Guide
Programming Groovy
![Page 68: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/68.jpg)
RUBY ON RAILS
http://rubyonrails.org
MIT License
Active Community @
http://rubyonrails.org/community
Recommended Books:
Agile Web Development with Rails
Rails for Java Developers
![Page 69: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/69.jpg)
ADOBE FLEX
http://www.adobe.com/products/flex
Flex SDK under Mozilla Public License
Active Community @ http://tech.groups.yahoo.com/group/flexcoders
Recommended Books:
Flexible Rails
Flex 3 in Action
Flex on Java
![Page 70: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/70.jpg)
GOOGLE WEB TOOLKIT
http://code.google.com/webtoolkit
Apache 2.0 License
Active Community @ http://groups.google.com/group/Google-Web-Toolkit
Recommended Books:
GWT in Action
GWT in Practice
Google Web Toolkit Solutions
![Page 71: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/71.jpg)
C O N C L U S I O NWhat if there is no “best” web framework?
![Page 72: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/72.jpg)
HOW TO CHOOSE?
Prioritize a list of features that are important to your application.
Pick 3-4 frameworks and do a 1-week spike with each, developing the same application.
Document and rank each framework against your list of features.
Calculate and choose!
![Page 73: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/73.jpg)
O N E S T O WAT C HGoogle Sitebricks and Play! framework
![Page 74: Comparing Kick Ass Web Frameworks](https://reader035.fdocuments.us/reader035/viewer/2022081505/555874ccd8b42a8d018b5269/html5/thumbnails/74.jpg)
QUESTIONS?
Contact Information
http://raibledesigns.comhttp://twitter.com/mraible
Download Presentation
http://slideshare.net/mraible