Page tree

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Primary Presentation

HighLevelModuleUsesView_PP.png

Visio file

Element Catalog

Consumer Website

The web-based user interface of the Adventure Builder is implemented in this module. The user interface lets the user browse the catalog of travel packages, place a new purchase order, and track the status of existing orders. This module creates the purchase orders based on user input and passes them to OpcApp for processing. It uses an implementation of the Model View Controller pattern called the Web Application Framework (waf). The model is implemented using Entity beans, the controller is implemented using servlets, and the view is a collection of JSPs and static HTML pages. Part of the client-facing code is implemented using the GWT framework.

A module decomposition refined view and a module uses refined view of OpcApp are available.

utils

This module contains utilities used by the Adventure Builder system.

dao

This module contains Data Access Object (DAO) utilities, such as a DAO factory. It does not contain the actual DAO classes that access the database--these classes are inside the ConsumerWebsite module.

logger

This module contains tracing and debugging utilities. The original name was tracer.

servicelocator

This module is an implementation of the ServiceLocator design pattern.

gwt

Google Web Toolkit (gwt) is an open source framework for development of rich internet applications based on Ajax.

waf

Waf stands for Web Application Framework. It is a Model View Controller framework similar to Struts. It allows you to specify in configuration files the web screens and action that are associated to user clicks on specific elements of the screen. The configuration file has the mapping of screens and actions to Java classes. The framework provides the engine to display the proper screens and invoke the proper actions.

Bank credit card service

This module represents an external service provided by a partner bank to validate credit card transactions.

Airline booking service

This module represents an external service provided by an airline partner company to book air travel.

Lodging booking service

This module represents an external service provided by a lodging partner company to book hotel rooms.

Activity booking service

This module represents an external service provided by an activity supplier company to book different activities.

Context Diagram

N/A

Variability Guide

See OPC Module Uses View - Variability Guide.
See Top Level SOA View - Variability Guide.
See Consumer Website Multi-tier View - Variability Guide.

Rationale

GWT

The GWT framework was chosen for the following reasons:

  • It is open source, which allows us to go under the hood and fix things when needed.
  • It provides a rich development environment with powerful trace/debug, IDE integration and build management.
  • It integrates well with any other frontend technologies since it does not use proprietary standards.
  • It offers powerful widget construction features.
  • There are several extension libraries of widget components available.
  • Code is written in Java (and translated to JavaScript during build), which is an OO language that is familiar to the majority of the team.
  • Code is compiled into Javascript, which is available on a very high percentage of browsers.
  • It has a reasonably large support community and is backed by a major player in the industry (Google).

The table below shows the comparative analysis of GWT and competing technologies based on the specific needs of our project.

Flex

GWT

OpenLaszlo

Silverlight

Development language

ActionScript + MXML (Based on ECMAScript 4)

Java + JavaScript

LZX / JavaScript

Any .net language + XAML

Development Environment

Eclipse Flex Builder

Eclipse

(?)

Visual Studio

Code-build-run turnaround*

Good (~3s for simple application)

Good (~4s for simple application)

Very slow (30s+ for recompiling a 'hello world' page)

(?)

Development efficiency

Good (declarative UI elements, data binding, visual designer)

Average (verbose procedural instantiation)

Good (declarative, data binding)

Good (same as Flex; Silverlight Blend compares to Flash MX)

Debugging tools

Eclipse debugger

Eclipse debugger

Integrated debugger (couldn't get it to work)

Visual Studio Debugger

Automated testing frameworks

Flex automation testing API

JUnit / Selenium

(?)

NUnit

Graphics / Animation

Powerful flash animation engine

Average, can be extended with scriptaculous, ext-js

Depends on rendering runtime (Flash/DHTML)

See Flex

Widget library

Very rich (due to maturity of technology)

Very rich (Javascript extension libraries)

Average (immature)

Same as flash (3rd party libraries)

Developer Community

Well established

Well established

(?)

Less than Flex but growing

Client execution performance*

Very good (native code)

Average (interpreted, except on Chrome)

Slightly slower than Flex (intermediate Laszlo layer)

Very good (native code)

Communication with server

AMF, REST, SOAP

GWT-RPC, REST, SOAP, JSON

(?)

(?)

Internationalization support

Average. Flex Runtime localization for latin charactersets. No native support for right to left languages.

GWT localization API provides out of the box solution.

Below average. Only accented European languages so far.

Poor, same as flex + lack of embeddable fonts.

Portability

Requires Flash player

Requires Javascript, no plugin needed on major browsers

Runtime agnostic, currently supports Flash and DHTML (future projects for Java ME, iPhone, Silverlight?)

Requires Silverlight plugin (not currently fully supported on Linux)

Mobile support

Large number of platforms (all Windows mobile, most Symbian, 50+ cell phones)

Very limited

Depends on runtime (Flex or GWT)

Supported for 1.0, Windows mobile and Nokia S60

*All performance tests were executed on the same hardware: Pentium M 1.7GHz, 2GB RAM, Win XP Pro SP2

Related Views

  • No labels