SlideShare une entreprise Scribd logo
1  sur  74
Télécharger pour lire hors ligne
COMPARING KICK-ASS WEB
     FRAMEWORKS




                     Matt Raible
               http://raibledesigns.com


  Images by Stuck in Customs - http://www.flickr.com/photos/stuckincustoms
                                                                            © 2010, Raible Designs
                              © 2010 Raible Designs
INTRODUCTIONS

Have you heard of SOFEA?

Are you using GWT?

Experience with Rails?

What do you want to get
from this session?
Blogger on raibledesigns.com
                                             Father, Skier,
                                                Cyclist




Founder of AppFuse


                               Web Framework Connoisseur


  Who is Matt Raible?
SESSION AGENDA

The Problem with Web Frameworks

SOFEA and SOUI

REST Backends

Rich Frontends

Conclusion

Q and A
THE PROBLEM
HOW DO YOU CHOOSE?
ELIMINATE, DON’T
    INCLUDE
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
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.
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
RECOMMENDED
        FRAMEWORKS
Java frameworks

  Java WebStart (with/without Spring Rich Client)

  JavaFX

Adobe Flash­based frameworks

  Adobe Flex

  OpenLaszlo
EPIPHANY AFTER READING ABOUT SOFEA

“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
REST

http://www.infoq.com/
articles/rest-introduction




     API
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
RAILS CONTROLLER
RESTFUL RAILS
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
GRAILS CONTROLLER
RESTFUL GRAILS
RAILS VS. GRAILS
http://grails.org/Grails+vs+Rails+Benchmark

   Grails: 40 requests per second, Rails: 32
LANGUAGE
              PERFORMANCE
                                 Time (ms) per iteration

             600



             400



             200



                0
                       Java      C++     JRuby Python Groovy PHP

http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-
                                    jruby-groovy/
JOBS IN 2008
             Grails             Rails

500


375


250


125


  0
      LinkedIn        Monster           Dice
JOBS IN 2009
             Grails             Rails

500


375


250


125


  0
      LinkedIn        Monster           Dice
JOBS IN 2010
             Grails             Rails

500


375


250


125


  0
      LinkedIn        Monster           Dice
MY                  NETWORK
                  2008
               Grails         Rails

     400




     267




     133




       0
       Located within 50 miles of Denver (80210)
MY                  NETWORK
                  2009
               Grails         Rails

     400




     267




     133




       0
       Located within 50 miles of Denver (80210)
MY                  NETWORK
                  2010
               Grails         Rails

     400




     267




     133




       0
       Located within 50 miles of Denver (80210)
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=”...”/>
GWT + GRAILS

GWT Plugin
  http://grails.org/GWT+Plugin
  Uses Server-side RPC
RequestBuilder and Overlay Types
  ProxyServlet handy for development
  http://raibledesigns.com/rd/entry/
  developing_and_testing_gwt_client

RestyGWT and Restlet
GWT VS. FLEX SMACKDOWN!
TEXT
Left-to-right languages
 unsupported in Flex
DRAWING
 Flex can draw
PRINTING
Flex has issues printing
   from the browser
DRAG N’
    DROP
Flex has easy drag n’ drop
         support
CSS
GWT has CSS support, not
 like Flex’s proprietary
         support
VALIDATORS
     &
FORMATTERS
 Flex has effects, form
layout, validators and
      formatters
JSON SUPPORT
GWT supports JSON out-
      of-the-box
IE6 SUPPORT
 Flex works across all
       browsers
IPHONE
    SUPPORT
GWT works on the iPhone
VIDEO
Flash Video is the absolute
number one video format
        on the web
PERFORMANCE
Making your app “pop”
COMPONENTS
  Tour de Flex
TOOLS
Speed Tracer
   IDEs
PROGRAMMING
   MODEL
“GWT is nothing more
than a JSP Tag Library”

     -- Matt Raible
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
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
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
FLEX VS. AJAX
PERFORMANCE




 http://www.jamesward.com/census
JOBS IN 2008
             GWT             Flex

600


450


300


150


  0
      LinkedIn     Monster          Dice
JOBS IN 2009
             GWT             Flex

600


450


300


150


  0
      LinkedIn     Monster          Dice
JOBS IN 2010
             GWT             Flex

600


450


300


150


  0
      LinkedIn     Monster          Dice
MY                     NETWORK
                     2008
                   GWT            Flex


 700


 525


 350


 175


     0
         Located within 50 miles of Denver (80210)
MY             NETWORK
             2009
           GWT            Flex


 700


 525


 350


 175


     0
         Located in or near Denver
MY             NETWORK
             2010
           GWT            Flex


 700


 525


 350


 175


     0
         Located in or near Denver
PRETTY GRAPHS
PRETTY GRAPHS
PRETTY GRAPHS
PRETTY GRAPHS
PRETTY GRAPHS
PRETTY GRAPHS
MAILING LIST TRAFFIC
           Rails    Grails          GWT          Flex




October 2009




               0   750       1500         2250      3000
MAILING LIST TRAFFIC
       Rails    Grails          GWT          Flex




May 2010




           0   750       1500         2250      3000
STACKOVERFLOW
         Tagged Questions (June 7, 2010)



                                                15000


                                               11250


                                               7500


                                           3750


GWT                                        0
      Grails
                   Flex
                                  Rails
STACKOVERFLOW
              Tagged Questions (June 7, 2010)



                                                     90000


                                                    67500


                                                    45000


                                                22500


JavaScript                                      0
             PHP
                        Java
                                         C#
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
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
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
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
CONCLUSION
What if there is no “best” web framework?
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!
O N E S T O WAT C H
Google Sitebricks and Play! framework
QUESTIONS?

Contact Information

  http://raibledesigns.com
  http://twitter.com/mraible

Download Presentation

  http://slideshare.net/mraible

Contenu connexe

Plus de Matt Raible

Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Matt Raible
 
Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022Matt Raible
 
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...Matt Raible
 
Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021Matt Raible
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Matt Raible
 
Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021Matt Raible
 
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Matt Raible
 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...Matt Raible
 
Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021Matt Raible
 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Matt Raible
 
Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021Matt Raible
 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...Matt Raible
 
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Matt Raible
 
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Matt Raible
 
JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020Matt Raible
 
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Matt Raible
 
Security Patterns for Microservice Architectures - SpringOne 2020
Security Patterns for Microservice Architectures - SpringOne 2020Security Patterns for Microservice Architectures - SpringOne 2020
Security Patterns for Microservice Architectures - SpringOne 2020Matt Raible
 
Security Patterns for Microservice Architectures - ADTMag Microservices & API...
Security Patterns for Microservice Architectures - ADTMag Microservices & API...Security Patterns for Microservice Architectures - ADTMag Microservices & API...
Security Patterns for Microservice Architectures - ADTMag Microservices & API...Matt Raible
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...Matt Raible
 
Security Patterns for Microservice Architectures - London Java Community 2020
Security Patterns for Microservice Architectures - London Java Community 2020Security Patterns for Microservice Architectures - London Java Community 2020
Security Patterns for Microservice Architectures - London Java Community 2020Matt Raible
 

Plus de Matt Raible (20)

Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
Reactive Java Microservices with Spring Boot and JHipster - Spring I/O 2022
 
Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022Comparing Native Java REST API Frameworks - Devoxx France 2022
Comparing Native Java REST API Frameworks - Devoxx France 2022
 
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
Lock That Sh*t Down! Auth Security Patterns for Apps, APIs, and Infra - Devne...
 
Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021Native Java with Spring Boot and JHipster - Garden State JUG 2021
Native Java with Spring Boot and JHipster - Garden State JUG 2021
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
 
Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021Web App Security for Java Developers - PWX 2021
Web App Security for Java Developers - PWX 2021
 
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
Mobile App Development with Ionic, React Native, and JHipster - Connect.Tech ...
 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Joker...
 
Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021Web App Security for Java Developers - UberConf 2021
Web App Security for Java Developers - UberConf 2021
 
Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021Java REST API Framework Comparison - UberConf 2021
Java REST API Framework Comparison - UberConf 2021
 
Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021Native Java with Spring Boot and JHipster - SF JUG 2021
Native Java with Spring Boot and JHipster - SF JUG 2021
 
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
Lock That Shit Down! Auth Security Patterns for Apps, APIs, and Infra - Sprin...
 
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
Reactive Java Microservices with Spring Boot and JHipster - Denver JUG 2021
 
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021Get Hip with JHipster - Colorado Springs Open Source User Group 2021
Get Hip with JHipster - Colorado Springs Open Source User Group 2021
 
JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020JHipster and Okta - JHipster Virtual Meetup December 2020
JHipster and Okta - JHipster Virtual Meetup December 2020
 
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
Java REST API Comparison: Micronaut, Quarkus, and Spring Boot - jconf.dev 2020
 
Security Patterns for Microservice Architectures - SpringOne 2020
Security Patterns for Microservice Architectures - SpringOne 2020Security Patterns for Microservice Architectures - SpringOne 2020
Security Patterns for Microservice Architectures - SpringOne 2020
 
Security Patterns for Microservice Architectures - ADTMag Microservices & API...
Security Patterns for Microservice Architectures - ADTMag Microservices & API...Security Patterns for Microservice Architectures - ADTMag Microservices & API...
Security Patterns for Microservice Architectures - ADTMag Microservices & API...
 
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
Microservices for the Masses with Spring Boot, JHipster, and OAuth - South We...
 
Security Patterns for Microservice Architectures - London Java Community 2020
Security Patterns for Microservice Architectures - London Java Community 2020Security Patterns for Microservice Architectures - London Java Community 2020
Security Patterns for Microservice Architectures - London Java Community 2020
 

Dernier

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 

Dernier (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 

Comparing Kick Ass Web Frameworks

  • 1. COMPARING KICK-ASS WEB FRAMEWORKS Matt Raible http://raibledesigns.com Images by Stuck in Customs - http://www.flickr.com/photos/stuckincustoms © 2010, Raible Designs © 2010 Raible Designs
  • 2. INTRODUCTIONS Have you heard of SOFEA? Are you using GWT? Experience with Rails? What do you want to get from this session?
  • 3. Blogger on raibledesigns.com Father, Skier, Cyclist Founder of AppFuse Web Framework Connoisseur Who is Matt Raible?
  • 4. SESSION AGENDA The Problem with Web Frameworks SOFEA and SOUI REST Backends Rich Frontends Conclusion Q and A
  • 6. HOW DO YOU CHOOSE?
  • 8.
  • 9. 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
  • 10. 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.
  • 11.
  • 12. 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
  • 13. RECOMMENDED FRAMEWORKS Java frameworks Java WebStart (with/without Spring Rich Client) JavaFX Adobe Flash­based frameworks Adobe Flex OpenLaszlo
  • 14. EPIPHANY AFTER READING ABOUT SOFEA “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
  • 16. 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
  • 19. 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
  • 22. RAILS VS. GRAILS http://grails.org/Grails+vs+Rails+Benchmark Grails: 40 requests per second, Rails: 32
  • 23. LANGUAGE PERFORMANCE Time (ms) per iteration 600 400 200 0 Java C++ JRuby Python Groovy PHP http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython- jruby-groovy/
  • 24. JOBS IN 2008 Grails Rails 500 375 250 125 0 LinkedIn Monster Dice
  • 25. JOBS IN 2009 Grails Rails 500 375 250 125 0 LinkedIn Monster Dice
  • 26. JOBS IN 2010 Grails Rails 500 375 250 125 0 LinkedIn Monster Dice
  • 27. MY NETWORK 2008 Grails Rails 400 267 133 0 Located within 50 miles of Denver (80210)
  • 28. MY NETWORK 2009 Grails Rails 400 267 133 0 Located within 50 miles of Denver (80210)
  • 29. MY NETWORK 2010 Grails Rails 400 267 133 0 Located within 50 miles of Denver (80210)
  • 30. 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=”...”/>
  • 31. GWT + GRAILS GWT Plugin http://grails.org/GWT+Plugin Uses Server-side RPC RequestBuilder and Overlay Types ProxyServlet handy for development http://raibledesigns.com/rd/entry/ developing_and_testing_gwt_client RestyGWT and Restlet
  • 32. GWT VS. FLEX SMACKDOWN!
  • 35. PRINTING Flex has issues printing from the browser
  • 36. DRAG N’ DROP Flex has easy drag n’ drop support
  • 37. CSS GWT has CSS support, not like Flex’s proprietary support
  • 38. VALIDATORS & FORMATTERS Flex has effects, form layout, validators and formatters
  • 39. JSON SUPPORT GWT supports JSON out- of-the-box
  • 40. IE6 SUPPORT Flex works across all browsers
  • 41. IPHONE SUPPORT GWT works on the iPhone
  • 42. VIDEO Flash Video is the absolute number one video format on the web
  • 44. COMPONENTS Tour de Flex
  • 46. PROGRAMMING MODEL “GWT is nothing more than a JSP Tag Library” -- Matt Raible
  • 47. 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
  • 48. 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
  • 49. 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
  • 50. FLEX VS. AJAX PERFORMANCE http://www.jamesward.com/census
  • 51. JOBS IN 2008 GWT Flex 600 450 300 150 0 LinkedIn Monster Dice
  • 52. JOBS IN 2009 GWT Flex 600 450 300 150 0 LinkedIn Monster Dice
  • 53. JOBS IN 2010 GWT Flex 600 450 300 150 0 LinkedIn Monster Dice
  • 54. MY NETWORK 2008 GWT Flex 700 525 350 175 0 Located within 50 miles of Denver (80210)
  • 55. MY NETWORK 2009 GWT Flex 700 525 350 175 0 Located in or near Denver
  • 56. MY NETWORK 2010 GWT Flex 700 525 350 175 0 Located in or near Denver
  • 63. MAILING LIST TRAFFIC Rails Grails GWT Flex October 2009 0 750 1500 2250 3000
  • 64. MAILING LIST TRAFFIC Rails Grails GWT Flex May 2010 0 750 1500 2250 3000
  • 65. STACKOVERFLOW Tagged Questions (June 7, 2010) 15000 11250 7500 3750 GWT 0 Grails Flex Rails
  • 66. STACKOVERFLOW Tagged Questions (June 7, 2010) 90000 67500 45000 22500 JavaScript 0 PHP Java C#
  • 67. 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
  • 68. 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
  • 69. 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
  • 70. 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
  • 71. CONCLUSION What if there is no “best” web framework?
  • 72. 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!
  • 73. O N E S T O WAT C H Google Sitebricks and Play! framework
  • 74. QUESTIONS? Contact Information http://raibledesigns.com http://twitter.com/mraible Download Presentation http://slideshare.net/mraible