SlideShare a Scribd company logo
1 of 27
Download to read offline
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

What's hot

Seminar.2008.Jsf.Seam
Seminar.2008.Jsf.SeamSeminar.2008.Jsf.Seam
Seminar.2008.Jsf.Seamroialdaag
 
Embedding Web UIs in your Eclipse application
Embedding Web UIs in your Eclipse applicationEmbedding Web UIs in your Eclipse application
Embedding Web UIs in your Eclipse applicationBoris Bokowski
 
How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassia...
How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassia...How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassia...
How the Atlassian Plugin SDK Cured Cancer and Reunited Soundgarden - Atlassia...Atlassian
 
UI innovation with SAP NetWeaver Gateway
UI innovation with SAP NetWeaver GatewayUI innovation with SAP NetWeaver Gateway
UI innovation with SAP NetWeaver GatewayJohn Moy
 
Enterprise Maven Repository BOF
Enterprise Maven Repository BOFEnterprise Maven Repository BOF
Enterprise Maven Repository BOFMax Andersen
 
Web Performance 101 - Gil Givati
Web Performance 101 - Gil GivatiWeb Performance 101 - Gil Givati
Web Performance 101 - Gil GivatiMika Josting
 
Java EE7 in action
Java EE7 in actionJava EE7 in action
Java EE7 in actionAnkara JUG
 
JBoss Enterprise Maven Repository
JBoss Enterprise Maven RepositoryJBoss Enterprise Maven Repository
JBoss Enterprise Maven RepositoryMax Andersen
 
Groovy Testing Sep2009
Groovy Testing Sep2009Groovy Testing Sep2009
Groovy Testing Sep2009Paul King
 
JBoss presentation 2003 11 for matrix
JBoss presentation 2003 11 for matrixJBoss presentation 2003 11 for matrix
JBoss presentation 2003 11 for matrixrunsignup
 
December 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationDecember 4 SDForum Java Sig Presentation
December 4 SDForum Java Sig PresentationJonathan Abrams
 
How to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioHow to be effective with JBoss Developer Studio
How to be effective with JBoss Developer StudioMax Andersen
 
Java Tutorial | Java Programming Tutorial | Java Basics | Java Training | Edu...
Java Tutorial | Java Programming Tutorial | Java Basics | Java Training | Edu...Java Tutorial | Java Programming Tutorial | Java Basics | Java Training | Edu...
Java Tutorial | Java Programming Tutorial | Java Basics | Java Training | Edu...Edureka!
 
Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Tycho - good, bad or ugly ?
Tycho - good, bad or ugly ?Max Andersen
 
Anatomy of an HTML 5 mobile web app
Anatomy of an HTML 5 mobile web app Anatomy of an HTML 5 mobile web app
Anatomy of an HTML 5 mobile web app Ivano Malavolta
 
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...
JavaOne 2012 CON 3961 Innovative Testing Techniques Using Bytecode Instrument...PaulThwaite
 
Hybrid application development
Hybrid application developmentHybrid application development
Hybrid application developmentEngin Hatay
 

What's hot (18)

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

Viewers also liked

5 collection framework
5 collection framework5 collection framework
5 collection frameworkMinal Maniar
 
Curious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks ComparisonCurious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks ComparisonHamed Hatami
 
Collection Framework in java
Collection Framework in javaCollection Framework in java
Collection Framework in javaCPD INDIA
 
PHP, Java EE & .NET Comparison
PHP, Java EE & .NET ComparisonPHP, Java EE & .NET Comparison
PHP, Java EE & .NET ComparisonHaim Michael
 
A Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual MachineA Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual MachineAbdelrahman Hosny
 
Comparison of Java Web Application Frameworks
Comparison of Java Web Application FrameworksComparison of Java Web Application Frameworks
Comparison of Java Web Application FrameworksAngelin R
 
Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Tuna Tore
 
Java 8 Streams and Rx Java Comparison
Java 8 Streams and Rx Java ComparisonJava 8 Streams and Rx Java Comparison
Java 8 Streams and Rx Java ComparisonJosé Paumard
 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVCDzmitry Naskou
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6Bert Ertman
 
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Matt Raible
 
Java Collection framework
Java Collection frameworkJava Collection framework
Java Collection frameworkankitgarg_er
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring SecurityDzmitry Naskou
 
Java EE and Spring Side-by-Side
Java EE and Spring Side-by-SideJava EE and Spring Side-by-Side
Java EE and Spring Side-by-SideReza Rahman
 

Viewers also liked (16)

5 collection framework
5 collection framework5 collection framework
5 collection framework
 
Curious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks ComparisonCurious Coders Java Web Frameworks Comparison
Curious Coders Java Web Frameworks Comparison
 
Java Framework comparison
Java Framework comparisonJava Framework comparison
Java Framework comparison
 
07 java collection
07 java collection07 java collection
07 java collection
 
Collection Framework in java
Collection Framework in javaCollection Framework in java
Collection Framework in java
 
PHP, Java EE & .NET Comparison
PHP, Java EE & .NET ComparisonPHP, Java EE & .NET Comparison
PHP, Java EE & .NET Comparison
 
A Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual MachineA Comparison of .NET Framework vs. Java Virtual Machine
A Comparison of .NET Framework vs. Java Virtual Machine
 
Comparison of Java Web Application Frameworks
Comparison of Java Web Application FrameworksComparison of Java Web Application Frameworks
Comparison of Java Web Application Frameworks
 
Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5Java Spring MVC Framework with AngularJS by Google and HTML5
Java Spring MVC Framework with AngularJS by Google and HTML5
 
Java 8 Streams and Rx Java Comparison
Java 8 Streams and Rx Java ComparisonJava 8 Streams and Rx Java Comparison
Java 8 Streams and Rx Java Comparison
 
Spring Framework - MVC
Spring Framework - MVCSpring Framework - MVC
Spring Framework - MVC
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6
 
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
Java Web Application Security with Java EE, Spring Security and Apache Shiro ...
 
Java Collection framework
Java Collection frameworkJava Collection framework
Java Collection framework
 
Spring Framework - Spring Security
Spring Framework - Spring SecuritySpring Framework - Spring Security
Spring Framework - Spring Security
 
Java EE and Spring Side-by-Side
Java EE and Spring Side-by-SideJava EE and Spring Side-by-Side
Java EE and Spring Side-by-Side
 

Similar to Comparing Java Web Frameworks for Speed, Simplicity and Features/TITLE

Whats Cool in Java E 6
Whats Cool in Java E 6Whats Cool in Java E 6
Whats Cool in Java E 6Arun Gupta
 
Playframework + Twitter Bootstrap
Playframework + Twitter BootstrapPlayframework + Twitter Bootstrap
Playframework + Twitter BootstrapKevingo Tsai
 
Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Arun Gupta
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?jbandi
 
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Arun Gupta
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureArun Gupta
 
Glass Fish Slides Fy2009 2
Glass Fish Slides Fy2009 2Glass Fish Slides Fy2009 2
Glass Fish Slides Fy2009 2Abhishek Gupta
 
Glass Fish Slides Fy2009 2
Glass Fish Slides Fy2009 2Glass Fish Slides Fy2009 2
Glass Fish Slides Fy2009 2Abhishek Gupta
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureArun Gupta
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SEdogangoko
 
GlassFish OSGi Server
GlassFish OSGi ServerGlassFish OSGi Server
GlassFish OSGi ServerArtur Alves
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureArun Gupta
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewJosh Padnick
 
Java EE 6 : Paving The Path For The Future
Java EE 6 : Paving The Path For The FutureJava EE 6 : Paving The Path For The Future
Java EE 6 : Paving The Path For The FutureIndicThreads
 
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010Arun Gupta
 
Java EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexusJava EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexusArun Gupta
 

Similar to Comparing Java Web Frameworks for Speed, Simplicity and Features/TITLE (20)

Whats Cool in Java E 6
Whats Cool in Java E 6Whats Cool in Java E 6
Whats Cool in Java E 6
 
Playframework + Twitter Bootstrap
Playframework + Twitter BootstrapPlayframework + Twitter Bootstrap
Playframework + Twitter Bootstrap
 
Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010Powering the Next Generation Services with Java Platform - Spark IT 2010
Powering the Next Generation Services with Java Platform - Spark IT 2010
 
Kann JavaScript elegant sein?
Kann JavaScript elegant sein?Kann JavaScript elegant sein?
Kann JavaScript elegant sein?
 
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010Java EE 6 & GlassFish v3: Paving the path for the future - Spark IT 2010
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
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for future
 
Jspx Jdc2010
Jspx Jdc2010Jspx Jdc2010
Jspx Jdc2010
 
Glass Fish Slides Fy2009 2
Glass Fish Slides Fy2009 2Glass Fish Slides Fy2009 2
Glass Fish Slides Fy2009 2
 
Glass Fish Slides Fy2009 2
Glass Fish Slides Fy2009 2Glass Fish Slides Fy2009 2
Glass Fish Slides Fy2009 2
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for future
 
New Features of Java7 SE
New Features of Java7 SENew Features of Java7 SE
New Features of Java7 SE
 
Frameworks in java
Frameworks in javaFrameworks in java
Frameworks in java
 
GlassFish OSGi Server
GlassFish OSGi ServerGlassFish OSGi Server
GlassFish OSGi Server
 
Java EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for futureJava EE 6 and GlassFish v3: Paving the path for future
Java EE 6 and GlassFish v3: Paving the path for future
 
Glass Fishv3 March2010
Glass Fishv3 March2010Glass Fishv3 March2010
Glass Fishv3 March2010
 
Play Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level OverviewPlay Framework: Intro & High-Level Overview
Play Framework: Intro & High-Level Overview
 
Java EE 6 : Paving The Path For The Future
Java EE 6 : Paving The Path For The FutureJava EE 6 : Paving The Path For The Future
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 at Vancouver JUG, Jan 26, 2010Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
Java EE 6 & GlassFish v3 at Vancouver JUG, Jan 26, 2010
 
Java EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexusJava EE 6 & GlassFish v3 @ DevNexus
Java EE 6 & GlassFish v3 @ DevNexus
 
Java J2EE Training in Chennai, Tambaram
Java J2EE  Training in Chennai, TambaramJava J2EE  Training in Chennai, Tambaram
Java J2EE Training in Chennai, Tambaram
 

More from Challenge:Future

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

More from Challenge:Future (20)

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

Comparing Java Web Frameworks for Speed, Simplicity and Features/TITLE

  • 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