SlideShare a Scribd company logo
CHOOSING A JAVA WEB FRAMEWORK:
A COMPARISON

Richard Pack, Lead User Interface Architect

TS-6457
•Learn how to choose a Java™ technology-based
Web Framework
•Enable you to:
   Categorize and understand what type of UI you’re building

   Understand the features and nomenclature of Model View Controller (MVC)

   Weigh the trade-offs




                                                       2008 JavaOneSM Conference | java.sun.com/javaone |   2
Agenda

 Introduction
 Current Web Frameworks
 The Traditional Criteria
 What are the problems that users are facing?
 What are your needs?
 The Advanced Criteria
 The Frameworks
 Summary and Conclusions
 Questions



                                          2008 JavaOneSM Conference | java.sun.com/javaone |   3
Current Frameworks
 Action Framework   DWR             JSPWidget   OpenEmcee                    SwingWeb

 Anvil              Echo            Jucas       OpenXava                     Tapestry

 Aranea             Expresso        JWAA        OXF                          TeaServlet

 Aurora             fleXive         JWarp       Pustefix                     ThinWire

 Baritus            Folium          jWic        Restlet                      Trimpath Junction

 Barracuda          GWT             jZeno       RIFE                         Turbine

 Bento

 Bishop             Helma
                            Over 100 Frameworks
                    Groovy/Grails   jZonic

                                    Macaw
                                                RSF

                                                Seam
                                                                             Verge

                                                                             VRaptor

 Canyamo            Jacquard        Makumba     Shocks                       Warfare

 Cassandra          Jaffa           Maverick    Smile                        WebOnSwing

 Chiba              Japple          Melati      SOFIA                        WebWork

 Chrysalis          JATO            Mentawai    Spring MVC                   Wicket

 Click              JFormular       Millstone   Strecks                      wingS

 Cocoon             JOSSO           MyFaces     Stripes                      Xoplon

 Dinamica           JPublish        Nacho       Struts                       ZK

 Dovetail           JSF             Niggle      Struts 2                     ztemplates
                                                           2008 JavaOneSM Conference | java.sun.com/javaone |   4
The Criteria
The traditional set
  The Hello World test
  • What does it take to write Hello World?
  Performance
  • Filter or servlet?
  View decoration style
  • Does it use Templates or JavaServer™ Pages (JSP™) software/Taglibs, Java technology
    control of blocks?
  Speed of Deployment
  • What does it take to ship it?
  Speed of Development - 3 Parts
  • New - what is the learning curve?
  • Existing - how much time does it take to add simple features?
  • Agile - is changing features easy?


                                                               2008 JavaOneSM Conference | java.sun.com/javaone |   5
The Criteria
The traditional set - continued

    Validation
     • Does it have lots of build-in validators?
    Internationalization / Multilingualization
     • What style of properties? Varying scopes?
    Documentation
    Bookmark-ability
    Scalability




                                                   2008 JavaOneSM Conference | java.sun.com/javaone |   6
So why is this important
 Difficult for the stakeholders to     Configuration becomes difficult to
 understand and use                    manage when the app grows
 End up writing lots of non-reusable   No way to run a debugger in the
 code                                  templates
 No unified Ajax transport             Ability for the view to be used as
 Direct persistence to Request,        the controller
 Session or Context                    JSP software/JSTL becomes a
 Limited Documentation                 nightmare to read when the page
                                       grows
 Writing boilerplate code
                                       Templates may have a steep
 No unified event model                learning curve
 Difficult for traditional web         Speed of deployment
 designers



                                                  2008 JavaOneSM Conference | java.sun.com/javaone |   7
What are my needs?

 Am I building an application?
 How big is my application?
 What is my usage scenario?
 Is this likely to change?
 • You are building for the future.
 Do I really need a 3-tier architecture?
 What is the size and competencies of my team?




                                             2008 JavaOneSM Conference | java.sun.com/javaone |   8
Sweet Spots

 Not a one size fits all game
  • Some requirements may have diverging implementations which
     creates trade-offs
 Different frameworks for different usage scenarios
 •   View (Read) only. Ex - storefront, blog, online bank, corporate website
 •   Write only
 •   Both view and write
 •   Highly Interactive




                                                          2008 JavaOneSM Conference | java.sun.com/javaone |   9
The Criteria
The advanced set
 AJAX support                              Client/Server JavaScript™
  • Integrated or after the fact           programming language
  • Does it rely on external tools          • Is there tight coupling between the
                                               languages
 View language
  • Java programming language, EL, OGNL,   Does another part of the company
     Multiple                              use the framework?
 Community                                 Do your developers have
  • Active, continual development
                                           experience with it?
 Maturity                                  Client event driven? Aka Does it
 Pull based or Push based                  support Services?
 3-tier support - EJB/Spring and           Does it have an Archetype
 hibernate
 Friendly URLs: URL mapping




                                                           2008 JavaOneSM Conference | java.sun.com/javaone | 10
Groovy/Grails
                                      <!-- template code -->
 Usage type: View / Write             <div id="table"
                                      class="hidden">
  • Extension to the Java             <%=dojoTable(id:'Defs',
    programming language               title:l.ClassicDefsTable,
                                      url:urlFor(action:'defData'),s
 Pros:                                chema:defSchema, numRows:15)
  • Hot-deploy                        %>
  • Simple configuration              </div>
  • Closures                          //Groovy
  • Integrates Spring and Hibernate   static String dojoTable(Binding
                                      scriptBinding, params)
 Cons:
  • Slow compared to native           def id = "${params.id}"
    frameworks
                                      def res = new StringBuffer("""
                                      <script type="text/javascript">
                                       dojo.require("dojo.topic");


                                              2008 JavaOneSM Conference | java.sun.com/javaone | 11
Groovy/Grails


  AJAX support?                      No

  View Language            Java, Groovy

  Push or Pull                     Push

  Maturity                       Young

  Community            Small, but growing

  3 Tier F/W support                Yes

  Friendly URLs             Not built in


                        2008 JavaOneSM Conference | java.sun.com/javaone | 12
Google Web Toolkit (GWT)

 Usage Type: View / Write
  • Modified Java programming language support
 Pros:
  • Simplicity, Swing/SWT Like
  • Lots of built in components
  • Strong binding between Java and Javascript programming languages
  • Project Archetype
 Cons:
  • Hard to control css classes
  • Built in components are fairly basic (Solved with GWT-Ext)
  • Currently no support for Java 5/Java 6 programming language



                                                2008 JavaOneSM Conference | java.sun.com/javaone | 13
Google Web Toolkit (GWT)
public class Mail implements EntryPoint, ... {

    public void onModuleLoad() {
        topPanel.add(menuBar);
        rightPanel.add(list);
        mainPanel.add(table);

       Window.enableScrolling(false);
       Window.setMargin("0px");

       DockPanel outer = new DockPanel();
       outer.add(topPanel, DockPanel.NORTH);
       outer.add(leftPanel, DockPanel.EAST);
       outer.add(mainPanel, DockPanel.CENTER);

       History.addHistoryListener(this);

       RootPanel.get().add(outer);
                                        2008 JavaOneSM Conference | java.sun.com/javaone | 14
Google Web Toolkit (GWT)


  AJAX support?                           Yes

  View Language               Java generated

  Push or Pull                           Pull

  Maturity                             Young

  Community                             Small

  3 Tier F/W support                      No

  Friendly URLs            Yes, with some work



                             2008 JavaOneSM Conference | java.sun.com/javaone | 15
Struts 2

 Usage Type: View / Write, Highly Interactive
 Pros:
  • First class AJAX support
  • Spring container integration
  • POJOs as controllers, doesn’t require inheritance
  • FreeMarker and Velocity support
 Cons:
  • Still uses LOTS of XML configuration
  • Still leaves the flow mapping to XML




                                                  2008 JavaOneSM Conference | java.sun.com/javaone | 16
Struts 2
    public class LoginAction implements Preparable {

        public LoginAction(LoginService service) {
            this.service = service;
        }

        public String execute() {
            return Action.SUCCESS;
        }

        public String login() {
            service.login(un, pw);
            return execute();
        }

<s:textfield id="userName" label="UserName" name="login.firstName"/>
<s:textfield id="password" label="Password" name="login.lastName"/>
<s:submit theme="ajax" targets="login" notifyTopics="/login"/>

                                              2008 JavaOneSM Conference | java.sun.com/javaone | 17
Struts 2


  AJAX support?                    Yes

  View Language             JSP, OGNL

  Push or Pull                    Push

  Maturity                      Young

  Community                   Medium

  3 Tier F/W support               Yes

  Friendly URLs            Not built in



                       2008 JavaOneSM Conference | java.sun.com/javaone | 18
Tapestry

  Usage type: View / Write, Highly Interactive
  Pros:
   • Uses annotated HTML templates
   • Hot-deploy (Version 5)
   • Simple configuration
   • First class AJAX support, and lots of it
  Cons:
   • Documentation doesn’t use real world problems
   • No API backwards compatibility between major versions



                                               2008 JavaOneSM Conference | java.sun.com/javaone | 19
Tapestry
 <!-- template code -->
 <div jwcid="@hyperic:MessagePanel" message="message"/>
 <input jwcid="@hyperic:InputField" fieldValue="userName"
  fieldTitle="message:userNameTitle" fieldLabel="message:userName"/>
          <a jwcid="@hyperic:Button"
 listener="listener:signinButtonListener"
  label="message:signInButton" enableKeyListener="true" />
 //Java Controller
 public abstract class SignIn extends BasePage {

     @Persist()
     public abstract String getUserName();
     public abstract void setUserName(String userName);

 public ILink signinButtonListener(IRequestCycle cycle) {
   //button click listener
   ...
 }
                                              2008 JavaOneSM Conference | java.sun.com/javaone | 20
Tapestry


  AJAX support?              Extensive

  View Language            OGNL, Prop

  Push or Pull                     Pull

  Maturity                     Mature

  Community              Large, Active

  3 Tier F/W support               Yes

  Friendly URLs                    Yes



                       2008 JavaOneSM Conference | java.sun.com/javaone | 21
Wicket

 Usage Type: Highly Interactive
 Pros:
  • Annotated HTML Templates
  • Excellent documentation
  • Components can be extended
  • Everything is done in Java programming language
 Cons:
  • Everything is done in Java programming language




                                                2008 JavaOneSM Conference | java.sun.com/javaone | 22
Wicket
 //Definition
 public class Login extends WebPage {
     public Login(){
         add(loginPanel);
     }
     public void onSubmit(){
        login();
        setResponsePage(new HomePage());
     }
 }

<wicket:panel><div wicket:id="login">
     <div><span wicket:id="username"></span></div>
     <div><span wicket:id="password"></span></div>
</div></wicket:panel>
// Usage
add(new LoginPanel("login", login);

<span wicket:id="login"/>
                                           2008 JavaOneSM Conference | java.sun.com/javaone | 23
Wicket


  AJAX support?              Extensive

  View Language                  OGNL

  Push or Pull                     Pull

  Maturity                   Moderate

  Community            Medium, Active

  3 Tier F/W support               Yes

  Friendly URLs                    Yes



                       2008 JavaOneSM Conference | java.sun.com/javaone | 24
Summary

 Not all frameworks are equal
 Understand and outline your needs
 Find a few that look like they meet those needs
 Use the criteria and evaluate
 Don’t take my word for it, try a “Hello World” of your own




                                           2008 JavaOneSM Conference | java.sun.com/javaone | 25
For More Information

 These slides
  • www.hyperic.org/conferences/slides
 Java Framework “Sweet Spots”
  • www.virtuas.com/files/JavaWebFrameworkSweetSpots.pdf
 The Frameworks
  • grails.codehaus.org/
  • code.google.com/webtoolkit/
  • struts.apache.org/
  • tapestry.apache.org
  • wicket.apache.org




                                             2008 JavaOneSM Conference | java.sun.com/javaone | 26
CHOOSING A JAVA WEB FRAMEWORK: A
COMPARISON
Richard Pack


TS-6457




                                   2008 JavaOneSM Conference | java.sun.com/javaone | 27

More Related Content

PDF
Flex Continuous Quality Builds Flex & (Ant || Maven)
PDF
Introduction To J Boss Seam
PDF
Java EE 6 and GlassFish portfolio
PDF
Java Edge.2007.What.Is.New.In.Jsf.2
PDF
Joomladay Es 2009 - Nooku Framework
PDF
Comparing JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket
KEY
Virgo Project Creation Review
PDF
Java Generics: a deep dive
Flex Continuous Quality Builds Flex & (Ant || Maven)
Introduction To J Boss Seam
Java EE 6 and GlassFish portfolio
Java Edge.2007.What.Is.New.In.Jsf.2
Joomladay Es 2009 - Nooku Framework
Comparing JSF, Spring MVC, Stripes, Struts 2, Tapestry and Wicket
Virgo Project Creation Review
Java Generics: a deep dive

What's hot (18)

PDF
Seminar.2008.Jsf.Seam
KEY
Embedding Web UIs in your Eclipse application
PDF
How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassia...
PDF
UI innovation with SAP NetWeaver Gateway
PDF
Enterprise Maven Repository BOF
PPTX
S109 cics-java
PDF
Web Performance 101 - Gil Givati
PPT
Java EE7 in action
PDF
JBoss Enterprise Maven Repository
PDF
Groovy Testing Sep2009
PPT
JBoss presentation 2003 11 for matrix
PPT
December 4 SDForum Java Sig Presentation
KEY
How to be effective with JBoss Developer Studio
PDF
Java Tutorial | Java Programming Tutorial | Java Basics | Java Training | Edu...
KEY
Tycho - good, bad or ugly ?
PDF
Anatomy of an HTML 5 mobile web app
PDF
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...
PDF
Hybrid application development
Seminar.2008.Jsf.Seam
Embedding Web UIs in your Eclipse application
How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassia...
UI innovation with SAP NetWeaver Gateway
Enterprise Maven Repository BOF
S109 cics-java
Web Performance 101 - Gil Givati
Java EE7 in action
JBoss Enterprise Maven Repository
Groovy Testing Sep2009
JBoss presentation 2003 11 for matrix
December 4 SDForum Java Sig Presentation
How to be effective with JBoss Developer Studio
Java Tutorial | Java Programming Tutorial | Java Basics | Java Training | Edu...
Tycho - good, bad or ugly ?
Anatomy of an HTML 5 mobile web app
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...
Hybrid application development
Ad

Viewers also liked (16)

PDF
5 collection framework
PDF
Curious Coders Java Web Frameworks Comparison
PDF
Java Framework comparison
PDF
07 java collection
PPT
Collection Framework in java
PDF
PHP, Java EE & .NET Comparison
PPTX
A Comparison of .NET Framework vs. Java Virtual Machine
PPTX
Comparison of Java Web Application Frameworks
ODP
Java Spring MVC Framework with AngularJS by Google and HTML5
PDF
Java 8 Streams and Rx Java Comparison
PDF
Spring Framework - MVC
PDF
JavaOne 2011: Migrating Spring Applications to Java EE 6
PDF
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
PDF
Java Collection framework
PDF
Spring Framework - Spring Security
PPT
Java EE and Spring Side-by-Side
5 collection framework
Curious Coders Java Web Frameworks Comparison
Java Framework comparison
07 java collection
Collection Framework in java
PHP, Java EE & .NET Comparison
A Comparison of .NET Framework vs. Java Virtual Machine
Comparison of Java Web Application Frameworks
Java Spring MVC Framework with AngularJS by Google and HTML5
Java 8 Streams and Rx Java Comparison
Spring Framework - MVC
JavaOne 2011: Migrating Spring Applications to Java EE 6
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Collection framework
Spring Framework - Spring Security
Java EE and Spring Side-by-Side
Ad

Similar to [Challenge:Future] Chocoholic (20)

PDF
Whats Cool in Java E 6
PPTX
Playframework + Twitter Bootstrap
PDF
Powering the Next Generation Services with Java Platform - Spark IT 2010
PDF
Kann JavaScript elegant sein?
PDF
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
PDF
Java EE 6 and GlassFish v3: Paving the path for future
PDF
Jspx Jdc2010
ODP
Glass Fish Slides Fy2009 2
ODP
Glass Fish Slides Fy2009 2
PDF
Java EE 6 and GlassFish v3: Paving the path for future
PDF
New Features of Java7 SE
PPTX
Frameworks in java
PDF
GlassFish OSGi Server
PDF
Java EE 6 and GlassFish v3: Paving the path for future
PDF
Glass Fishv3 March2010
PDF
Play Framework: Intro & High-Level Overview
PDF
Java EE 6 : Paving The Path For The Future
PDF
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
PDF
Java EE 6 & GlassFish v3 @ DevNexus
DOCX
Java J2EE Training in Chennai, Tambaram
Whats Cool in Java E 6
Playframework + Twitter Bootstrap
Powering the Next Generation Services with Java Platform - Spark IT 2010
Kann JavaScript elegant sein?
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 and GlassFish v3: Paving the path for future
Jspx Jdc2010
Glass Fish Slides Fy2009 2
Glass Fish Slides Fy2009 2
Java EE 6 and GlassFish v3: Paving the path for future
New Features of Java7 SE
Frameworks in java
GlassFish OSGi Server
Java EE 6 and GlassFish v3: Paving the path for future
Glass Fishv3 March2010
Play Framework: Intro & High-Level Overview
Java EE 6 : Paving The Path For The Future
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Java EE 6 & GlassFish v3 @ DevNexus
Java J2EE Training in Chennai, Tambaram

More from Challenge:Future (20)

PPTX
[Challenge:Future] Think twice before quitting
DOCX
[Challenge:Future] Raft Guide Job
PPT
[Challenge:Future] " The Secret of Happiness."
DOCX
[Challenge:Future] What is life?
PPTX
[Challenge:Future] The Power of Happiness
PPTX
[Challenge:Future] Do not delay it!
PPT
[Challenge:Future] Always rely only on yourself
PDF
[Challenge:Future] Hard work, Dedication & Patience!
PPT
[Challenge:Future] I give you this medal as a sign
PPTX
[Challenge:Future] Guard Your Soul
PPTX
[Challenge:Future] My Career Tip for 2015
PPTX
[Challenge:Future] box of choices
PPT
[Challenge:Future] The magic world of Homo Ludens
PPTX
[Challenge:Future] Break the Borders
PPTX
[Challenge:Future] Passion
PPTX
[Challenge:Future] BE YOURSELF
PPTX
[Challenge:Future] Lifelong Learning
PPTX
[Challenge:Future] Smile And Accept the Challange
PPTX
[Challenge:Future] HELP YOURSELF AND LIVE
PPTX
[Challenge:Future] Faith in humanity
[Challenge:Future] Think twice before quitting
[Challenge:Future] Raft Guide Job
[Challenge:Future] " The Secret of Happiness."
[Challenge:Future] What is life?
[Challenge:Future] The Power of Happiness
[Challenge:Future] Do not delay it!
[Challenge:Future] Always rely only on yourself
[Challenge:Future] Hard work, Dedication & Patience!
[Challenge:Future] I give you this medal as a sign
[Challenge:Future] Guard Your Soul
[Challenge:Future] My Career Tip for 2015
[Challenge:Future] box of choices
[Challenge:Future] The magic world of Homo Ludens
[Challenge:Future] Break the Borders
[Challenge:Future] Passion
[Challenge:Future] BE YOURSELF
[Challenge:Future] Lifelong Learning
[Challenge:Future] Smile And Accept the Challange
[Challenge:Future] HELP YOURSELF AND LIVE
[Challenge:Future] Faith in humanity

[Challenge:Future] Chocoholic

  • 1. CHOOSING A JAVA WEB FRAMEWORK: A COMPARISON Richard Pack, Lead User Interface Architect TS-6457
  • 2. •Learn how to choose a Java™ technology-based Web Framework •Enable you to: Categorize and understand what type of UI you’re building Understand the features and nomenclature of Model View Controller (MVC) Weigh the trade-offs 2008 JavaOneSM Conference | java.sun.com/javaone | 2
  • 3. Agenda Introduction Current Web Frameworks The Traditional Criteria What are the problems that users are facing? What are your needs? The Advanced Criteria The Frameworks Summary and Conclusions Questions 2008 JavaOneSM Conference | java.sun.com/javaone | 3
  • 4. Current Frameworks Action Framework DWR JSPWidget OpenEmcee SwingWeb Anvil Echo Jucas OpenXava Tapestry Aranea Expresso JWAA OXF TeaServlet Aurora fleXive JWarp Pustefix ThinWire Baritus Folium jWic Restlet Trimpath Junction Barracuda GWT jZeno RIFE Turbine Bento Bishop Helma Over 100 Frameworks Groovy/Grails jZonic Macaw RSF Seam Verge VRaptor Canyamo Jacquard Makumba Shocks Warfare Cassandra Jaffa Maverick Smile WebOnSwing Chiba Japple Melati SOFIA WebWork Chrysalis JATO Mentawai Spring MVC Wicket Click JFormular Millstone Strecks wingS Cocoon JOSSO MyFaces Stripes Xoplon Dinamica JPublish Nacho Struts ZK Dovetail JSF Niggle Struts 2 ztemplates 2008 JavaOneSM Conference | java.sun.com/javaone | 4
  • 5. The Criteria The traditional set The Hello World test • What does it take to write Hello World? Performance • Filter or servlet? View decoration style • Does it use Templates or JavaServer™ Pages (JSP™) software/Taglibs, Java technology control of blocks? Speed of Deployment • What does it take to ship it? Speed of Development - 3 Parts • New - what is the learning curve? • Existing - how much time does it take to add simple features? • Agile - is changing features easy? 2008 JavaOneSM Conference | java.sun.com/javaone | 5
  • 6. The Criteria The traditional set - continued Validation • Does it have lots of build-in validators? Internationalization / Multilingualization • What style of properties? Varying scopes? Documentation Bookmark-ability Scalability 2008 JavaOneSM Conference | java.sun.com/javaone | 6
  • 7. So why is this important Difficult for the stakeholders to Configuration becomes difficult to understand and use manage when the app grows End up writing lots of non-reusable No way to run a debugger in the code templates No unified Ajax transport Ability for the view to be used as Direct persistence to Request, the controller Session or Context JSP software/JSTL becomes a Limited Documentation nightmare to read when the page grows Writing boilerplate code Templates may have a steep No unified event model learning curve Difficult for traditional web Speed of deployment designers 2008 JavaOneSM Conference | java.sun.com/javaone | 7
  • 8. What are my needs? Am I building an application? How big is my application? What is my usage scenario? Is this likely to change? • You are building for the future. Do I really need a 3-tier architecture? What is the size and competencies of my team? 2008 JavaOneSM Conference | java.sun.com/javaone | 8
  • 9. Sweet Spots Not a one size fits all game • Some requirements may have diverging implementations which creates trade-offs Different frameworks for different usage scenarios • View (Read) only. Ex - storefront, blog, online bank, corporate website • Write only • Both view and write • Highly Interactive 2008 JavaOneSM Conference | java.sun.com/javaone | 9
  • 10. The Criteria The advanced set AJAX support Client/Server JavaScript™ • Integrated or after the fact programming language • Does it rely on external tools • Is there tight coupling between the languages View language • Java programming language, EL, OGNL, Does another part of the company Multiple use the framework? Community Do your developers have • Active, continual development experience with it? Maturity Client event driven? Aka Does it Pull based or Push based support Services? 3-tier support - EJB/Spring and Does it have an Archetype hibernate Friendly URLs: URL mapping 2008 JavaOneSM Conference | java.sun.com/javaone | 10
  • 11. Groovy/Grails <!-- template code --> Usage type: View / Write <div id="table" class="hidden"> • Extension to the Java <%=dojoTable(id:'Defs', programming language title:l.ClassicDefsTable, url:urlFor(action:'defData'),s Pros: chema:defSchema, numRows:15) • Hot-deploy %> • Simple configuration </div> • Closures //Groovy • Integrates Spring and Hibernate static String dojoTable(Binding scriptBinding, params) Cons: • Slow compared to native def id = "${params.id}" frameworks def res = new StringBuffer(""" <script type="text/javascript"> dojo.require("dojo.topic"); 2008 JavaOneSM Conference | java.sun.com/javaone | 11
  • 12. Groovy/Grails AJAX support? No View Language Java, Groovy Push or Pull Push Maturity Young Community Small, but growing 3 Tier F/W support Yes Friendly URLs Not built in 2008 JavaOneSM Conference | java.sun.com/javaone | 12
  • 13. Google Web Toolkit (GWT) Usage Type: View / Write • Modified Java programming language support Pros: • Simplicity, Swing/SWT Like • Lots of built in components • Strong binding between Java and Javascript programming languages • Project Archetype Cons: • Hard to control css classes • Built in components are fairly basic (Solved with GWT-Ext) • Currently no support for Java 5/Java 6 programming language 2008 JavaOneSM Conference | java.sun.com/javaone | 13
  • 14. Google Web Toolkit (GWT) public class Mail implements EntryPoint, ... { public void onModuleLoad() { topPanel.add(menuBar); rightPanel.add(list); mainPanel.add(table); Window.enableScrolling(false); Window.setMargin("0px"); DockPanel outer = new DockPanel(); outer.add(topPanel, DockPanel.NORTH); outer.add(leftPanel, DockPanel.EAST); outer.add(mainPanel, DockPanel.CENTER); History.addHistoryListener(this); RootPanel.get().add(outer); 2008 JavaOneSM Conference | java.sun.com/javaone | 14
  • 15. Google Web Toolkit (GWT) AJAX support? Yes View Language Java generated Push or Pull Pull Maturity Young Community Small 3 Tier F/W support No Friendly URLs Yes, with some work 2008 JavaOneSM Conference | java.sun.com/javaone | 15
  • 16. Struts 2 Usage Type: View / Write, Highly Interactive Pros: • First class AJAX support • Spring container integration • POJOs as controllers, doesn’t require inheritance • FreeMarker and Velocity support Cons: • Still uses LOTS of XML configuration • Still leaves the flow mapping to XML 2008 JavaOneSM Conference | java.sun.com/javaone | 16
  • 17. Struts 2 public class LoginAction implements Preparable { public LoginAction(LoginService service) { this.service = service; } public String execute() { return Action.SUCCESS; } public String login() { service.login(un, pw); return execute(); } <s:textfield id="userName" label="UserName" name="login.firstName"/> <s:textfield id="password" label="Password" name="login.lastName"/> <s:submit theme="ajax" targets="login" notifyTopics="/login"/> 2008 JavaOneSM Conference | java.sun.com/javaone | 17
  • 18. Struts 2 AJAX support? Yes View Language JSP, OGNL Push or Pull Push Maturity Young Community Medium 3 Tier F/W support Yes Friendly URLs Not built in 2008 JavaOneSM Conference | java.sun.com/javaone | 18
  • 19. Tapestry Usage type: View / Write, Highly Interactive Pros: • Uses annotated HTML templates • Hot-deploy (Version 5) • Simple configuration • First class AJAX support, and lots of it Cons: • Documentation doesn’t use real world problems • No API backwards compatibility between major versions 2008 JavaOneSM Conference | java.sun.com/javaone | 19
  • 20. Tapestry <!-- template code --> <div jwcid="@hyperic:MessagePanel" message="message"/> <input jwcid="@hyperic:InputField" fieldValue="userName" fieldTitle="message:userNameTitle" fieldLabel="message:userName"/> <a jwcid="@hyperic:Button" listener="listener:signinButtonListener" label="message:signInButton" enableKeyListener="true" /> //Java Controller public abstract class SignIn extends BasePage { @Persist() public abstract String getUserName(); public abstract void setUserName(String userName); public ILink signinButtonListener(IRequestCycle cycle) { //button click listener ... } 2008 JavaOneSM Conference | java.sun.com/javaone | 20
  • 21. Tapestry AJAX support? Extensive View Language OGNL, Prop Push or Pull Pull Maturity Mature Community Large, Active 3 Tier F/W support Yes Friendly URLs Yes 2008 JavaOneSM Conference | java.sun.com/javaone | 21
  • 22. Wicket Usage Type: Highly Interactive Pros: • Annotated HTML Templates • Excellent documentation • Components can be extended • Everything is done in Java programming language Cons: • Everything is done in Java programming language 2008 JavaOneSM Conference | java.sun.com/javaone | 22
  • 23. Wicket //Definition public class Login extends WebPage { public Login(){ add(loginPanel); } public void onSubmit(){ login(); setResponsePage(new HomePage()); } } <wicket:panel><div wicket:id="login"> <div><span wicket:id="username"></span></div> <div><span wicket:id="password"></span></div> </div></wicket:panel> // Usage add(new LoginPanel("login", login); <span wicket:id="login"/> 2008 JavaOneSM Conference | java.sun.com/javaone | 23
  • 24. Wicket AJAX support? Extensive View Language OGNL Push or Pull Pull Maturity Moderate Community Medium, Active 3 Tier F/W support Yes Friendly URLs Yes 2008 JavaOneSM Conference | java.sun.com/javaone | 24
  • 25. Summary Not all frameworks are equal Understand and outline your needs Find a few that look like they meet those needs Use the criteria and evaluate Don’t take my word for it, try a “Hello World” of your own 2008 JavaOneSM Conference | java.sun.com/javaone | 25
  • 26. For More Information These slides • www.hyperic.org/conferences/slides Java Framework “Sweet Spots” • www.virtuas.com/files/JavaWebFrameworkSweetSpots.pdf The Frameworks • grails.codehaus.org/ • code.google.com/webtoolkit/ • struts.apache.org/ • tapestry.apache.org • wicket.apache.org 2008 JavaOneSM Conference | java.sun.com/javaone | 26
  • 27. CHOOSING A JAVA WEB FRAMEWORK: A COMPARISON Richard Pack TS-6457 2008 JavaOneSM Conference | java.sun.com/javaone | 27