SlideShare una empresa de Scribd logo
1 de 74
Descargar para leer sin conexión
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

Más contenido relacionado

Más 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
 

Más 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
 

Último

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 

Último (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 

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