SlideShare ist ein Scribd-Unternehmen logo
1 von 47
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 | www.instantiations.com/eclipseworld2008
RAP vs GWT
Which AJAX technology is for you?
by Mark Russell
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Overview
• Introduction
Who we are
• Demo
Example apps, UI elements, Styles and Graphing
• Development
Architecture and Debugging
• Communication
Browser interaction and RPC
• Build and Deployment
Automation, process and server infrastructure
• Performance
Measuring and tuning hosted apps
• Unit Testing
Development and performance comparison
• Summary
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Introduction
•Mark Russell
 Co-architect of the Instantiations continuous
build and deployment system
 Build master with 14 years experience
developing large and small build systems for
large corporate systems and small open source
projects
 Developer on several Instantiations products
such as CodePro and RCPDeveloper
 Eclipse committer
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
• Founded in 1997, Headquarters in Portland, OR
• Market leading tools
 Automated Software Quality
 UI Construction and Testing Tools
• CodeGear division of Embarcadero
OEM’ed Swing Designer for JBuilder® 2008
• 8 years of extensive Eclipse experience
Active Eclipse Foundation member
and major contributor.
• Customer focused. Customer driven.
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Awards and Acknowledgements
“WindowBuilder delivers the kind of GUI building productivity
that we use to have before we converted to Java.”
Sally Rich
Checkfree Solutions
2006 - 2008
Private 100
Fastest Growing
Oregon
Companies
“RCP Developer is the first product to bring comprehensive
application construction, GUI testing and packaging of rich-
client applications to Eclipse RCP. We are delighted that
Instantiations is delivering this important technology to the
growing Eclipse ecosystem.”
Mike Milinkovich, Executive Director
Eclipse Foundation
#14 Fastest
Growing
Technology
Company
2006
“Since we started using WindowTester, tests that took 2–3 weeks
to write previously can now be done in 2–3 days.”
Steve Tocco
Director of Quality Assurance, BEA
“Because our software is used to drive key business
decisions, it's critical that we deliver high-quality software,
and implementing CodePro AnalytiX has allowed us to
automate the process of enforcing programming standards
and best practices.”
Rich Main, Director,
Java Development Environments, SAS
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Strategic Product Lines
Automated Software Quality Tools for Code
Analysis, Measurement and Improvement
Automated testing of Java GUIs
for SWT and Swing
WYSIWYG development of Java GUIs
for SWT, Swing and GWT Finalist
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Similarities
• Rich browser based UI based on AJAX
• Developers write Java code (not JavaScript)
… but that’s where the similarities end
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Demo – RAP application in action
Looks and feels like an Eclipse application embedded in a browser
Main “window” can be
dragged within browser
Pull down menus
Panels are resizable
within main window
Popup “windows”
restricted to browser
content area
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
RAP – UI Components
Most SWT widgets have RWT* counterparts, except:
• StyledText (under investigation)
• FormText
• GC (often used with custom widgets… under investigation)
Much of JFace is implemented such as tables, content and label
providers, actions, contributions, wizard framework, many dialogs,
layouts, colors, fonts, etc.
Also
• Drag and drop (planned)
• Custom Widgets are possible
*RWT = RAP Widget Toolkit
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
RAP – Styles
• Now supports CSS files (June 2008)
* {
backgound-color: white;
}
Button[PUSH], Button[TOGGLE] {
border: 2px solid blue;
color: rgb( 17, 23, 103 );
background-color: #f9f9f9;
}
Button[PUSH]:hover, Button[TOGGLE]:hover {
background-color: white;
}
http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.rap.help/help/html/intro.html > RAP Developer Guide > Advanced Topics > RWT Theming
(CSS in the future)
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
RAP – Supported Browsers
Wrappers the Qooxdoo JavaScript library, supporting
the same set of browsers…
• Microsoft IE 5.5 + ( decent performance with 7.0 + )
• Firefox 1.0 +
• Opera 8 +
• Any Gecko-based browser with Gecko 1.7 +
• Safari 2.0 (limited support)
• Safari 3.0
http://qooxdoo.org/documentation/0.7/requirements
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Demo – GWT / Ext GWT application in action
Main “window” fixed
within browser
Pull down menus
Panels are resizable
within main window
Popup “windows”
restricted to browser
content area
MyGWT  Ext GWT
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
GWT – UI Components
GWT
• CheckBox and several types of buttons
• Several types of text based fields including SuggestBox
• List, Table, Tree, TabBar, Hyperlink
• MenuBar, DialogBox and various panels
• Custom widgets are possible
• Call “raw” JavaScript using JavaScript Native Interface (JSNI)
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
GWT – API
http://roberthanson.blogspot.com/2006/07/birds-eye-view-of-gwt-api.html
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Ext GWT – UI Components
Ext GWT
• New layouts, tables, trees, windows, lists, menus, toolbars
• Windows, dialogs, draggable, resizable, effects such as fade in fade out
• Very integrated look and feel
http://extjs.com/products/gxt/ MyGWT  Ext GWT
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
GWT – Styles
• Style based on standard CSS style sheets
• Standard CSS provided for consistent look and feel
• Can modify global styles for your app
• Can extend or override on individual widget styles
.mail-item-detail {
background-color: #E8EAEC;
border-bottom: 1px solid silver;
}
.mail-item-detail h1 {
font-weight: bold;
font-size: 14px;
padding: 5 0 2 5px;
}
.mail-item-detail h2 {
font-size: 12px;
font-weight: normal;
padding: 0 5 0 5px;
}
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
GWT – Supported Browsers
“most recent versions of Internet Explorer, Firefox, and
Safari. (Opera, too, most of the time.)”
Ext GWT (based on Ext JS – http://extjs.com/)
• Internet Explorer 6+
• Firefox 1.5+ (PC, Mac)
• Safari 2+
• Opera 9+ (PC, Mac) Ext GWT and Ext JS dual license license:
1) Open Source GNU GPL license v3 (free)
2) Commercial license ($$$)
http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.Fundamentals.html#JavaRuntimeSupport
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
History Management
GWT provides functionality for
programmatically adding state to
the browser's back button history.
RAP does not currently have any
framework for providing “browser back button” support.
Qooxdoo offers functionality for browser back and browser history
but RAP currently does not use those features.
This is an important feature missing from RAP… or is it?
http://google-web-toolkit.googlecode.com/svn/javadoc/1.4/com/google/gwt/user/client/History.html
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Development
How do you develop applications with these frameworks?
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
RAP – Architecture
• Very similar to developing an RCP application
• Can use UI development tools such as WindowBuilder Pro
RAP
RCP
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
RAP – Architecture
RAP
RCP
• Java code executed
entirely on the server
• Static JavaScript library
deployed to client
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
One launch configuration for client and server
Port 8090 – makes it easy to serve up both RAP and GWT
RAP – Debugging
Internal Browser
External Browser
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
GWT – Architecture
Write Java code, some portion of which is compiled into JavaScript
Not all of the underlying
Java runtime library functionality
can be translated to JavaScript
• syntax of Java regular expressions is similar, but not identical
• long are mapped onto JavaScript double-precision floating point values
• does not support subsequent dynamic loading of classes
• does not support object finalization during garbage collection
Can use UI development tools such as GWT Designer
http://www.tml.tkk.fi/
Opinnot/T-111.5360/2007/
XForms/Overview.html
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
GWT – Debugging
Launch server
then GWT client in hosted mode.
Click “Compile/Browse”
to launch in browser.
OSGi Server
Hosted
Browser
http/xml
http/xml
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Communication
How do these frameworks communicate with the server?
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
RAP – Communication
Layout Page
Display Page
Process Actions
Render Changes
Page Request
Browser Server
http://...
mouse and key events
mouse and key events
Lookup Data
Server-side representation
of browser page
update events
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
GWT – Communication
Lookup Page
Display Page
Process Actions
Render Changes
Page Request
Browser Server
http://...
Lookup Data
XMLHttpRequest
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
RAP and GWT – Communication
RAP
• Easy… no extra work… all communication is handled for you
GWT
• More flexible…
 Optionally cache information on the client
 Optionally pre-fetch information in background
• … but more work
so what more is required for GWT ?
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Build and Deployment
How are apps built with these frameworks deployed?
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Build Automation
Scripted build process
• Ant
• Maven2
• Roll your own
Automation is a must
• Manual process tends to be error prone over time
• Scripted build process is very repeatable
Consider Continuous Integration
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
RAP – Plug-in Deployment
Target Servers
• Easily deployed as OSGi bundles with included http service
• Deployed to traditional J2EE Application server using the “Servlet Bridge”
• Cannot be deployed to a plain web server
Plug-in based Build and Deploy Process
• All plug-ins should be contained in a feature
 Make the PDE build process easier
• Run PDE build to generate bundles
 Reformat code to PDE format
 Call PDE build
 Unzip and reformat the PDE build result
• Upload build result to application server
• Run deployment scripts on application server
http://www.eclipse.org/equinox/server/http_in_container.php
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
GWT – Plug-in Deployment
Target Servers
• Can be deployed to an OSGi based server using plug-ins
• Can be deployed to a more traditional J2EE Application server as WAR file
• Easily deploy simple apps (e.g. financial calculator… no RPC) to plain web server
Plug-in based Build and Deploy Process
• Switch GWT library jar file (gwt-user.jar ----> gwt-servlet.jar)
• Call the GWT compiler to compile Java to JavaScript
 Generated JavaScript placed into a plug-in
• Run PDE build to generate bundles
 Reformat code to PDE format
 Call PDE build
 Unzip and reformat the PDE build result
• Upload build result to application server
• Run deployment scripts on application server
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
GWT – Traditional J2EE Server
Target Servers
• Can be deployed to an OSGi based server using plug-ins
• Can be deployed to a more traditional J2EE Application server as WAR file
• Easily deploy simple apps (e.g. financial calculator… no RPC) to plain web server
Traditional J2EE based Build and Deploy Process
• Switch GWT library jar file (gwt-user.jar ----> gwt-servlet.jar)
• Call the GWT compiler to compile client-side Java to JavaScript
 Generated JavaScript placed into a plug-in
• Call javac to compile server-side Java code
• Create WAR file containing client-side JavaScript and server-side Java
• Upload build result to application server
• Run deployment scripts on application server
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Build and Deploy Summary
Build
• Automation is a must
• Consider Continuous Integration
Deployment
• Easier to deploy RAP than GWT
to an OSGi based server.
• May be easier to deploy GWT than RAP
to a more traditional application server.
• Construct build scripts such that apps can be deployed
both on the local machine and on the server
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Performance
How fast are apps built with these frameworks?
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Performance – Image Bundling
Look at the whole stack, don’t just look at the application
Faster to load one bigger file than many smaller files
GWT provides functionality to combine multiple small images into a single large
image for efficient transport to the browser
This is planned for RAP. Something comparable to image-bundles is just finding its
way into Qooxdoo 0.8, and the RAP team will investigate once that is in place.
Incorporating this functionality in RAP would reduce the time to load a page.
http://www.screaming-penguin.com/docs/gwt-1.4.10/doc/html/com.google.gwt.doc.DeveloperGuide.UserInterface.ImageBundles.DefiningAndUsingImageBundle.html
MyImageBundle imageBundle
= (MyImageBundle) GWT.create(MyImageBundle.class)
imageBundle.printerIcon().createImage();
imageBundle.notesIcon().createImage();
imageBundle.editIcon().createImage();
imageBundle.graphIcon().createImage();
…
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Performance – Communication
In general, RAP pushes more work off the client onto
the server, thus communicating more information and
more frequently with the server.
Layout Page
Display Page
Process Actions
Render Changes
Page Request
Browser Server
mouse and key events
mouse and key events
Lookup Data
Lookup Page
Display Page
Process Actions
Render Changes
Page Request
Browser Server
Lookup Data
XMLHttpRequest
RAP GWT
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Performance – Virtual Tables
RAP passes only the information
necessary to display the visible
rows in the table
In our GWT app, the entire table
content is loaded the first time
it is needed and cached on the
client. We could have loaded
only what we needed to reduce
the refresh time.
Bottom line:
GWT is more flexible and
potentially faster, but by how
much and at what cost
(complexity) to the developer?
RAP
GWT
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Performance – RAP in Eclipse.org
EPP working on a RAP wizard Eclipse downloads
Load test executed against desktop computer with
• Core2Duo 2.8 GHz
• Ubuntu
• JVM
 max of 512 MB of heap space
 concurrent marksweep garbage collector (-UseConcMarkSweepGC)
• Tomcat 6
• Jmeter 3.2
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Performance – RAP in Eclipse.org
• Throughput of 100 requests/second
• Average response time of 14 milliseconds
• Standard deviation of 60 - 80 milliseconds
(due to periodic garbage collection)
• 250 MB of heap needed for 1000 concurrent sessions
Overhead = 250K / session
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Unit Testing
Both RAP and GWT are based on Java, so…
• JUnit can be used to test the server-side code
• But how to test the client-side?
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
RAP – Unit Testing
• Non-UI code can be tested using standard JUnit
• UI code can be tested using JUnit (new June 2008)
public class RapJUnitTest extends RAPTestCase {
public void testOpenView() {
try {
IWorkbenchPage page = getPage();
page.showView( "org.eclipse.rap.demo.DemoTreeViewPartI" );
} catch( PartInitException e ) {
e.printStackTrace();
}
assertEquals( 1, getPage().getViewReferences().length );
getPage().hideView( getPage().getViewReferences()[ 0 ] );
assertEquals( 0, getPage().getViewReferences().length );
}
private IWorkbenchPage getPage() {
IWorkbench workbench = PlatformUI.getWorkbench();
IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
return window.getActivePage();
}
}
RAP includes a special RAPTestCase base class
that provides JUnit integration
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
GWT – Unit Testing
public class FooTest extends GWTTestCase {
// Specifies a module to use when running this test case.
public String getModuleName() {
return "com.example.foo.Foo";
}
public void testStuff() {
myService.doSomething(arguments, new AsyncCallback() {
public void onSuccess(Object result) {
finishTest();
}
public void onFailure(Throwable caught) {
… test failed …
}
});
// Set a delay period significantly longer than the event is expected to take.
delayTestFinish(500);
}
}
http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.JUnitIntegration.html
GWT includes a special GWTTestCase base class
that provides JUnit integration
Must specify GWT module
Optional support for asychronous test finish
and specification of maximum execution time
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
AJAX Security Issues
There are many AJAX security issues and people much more qualified to talk about
security than us.
Attack vectors include:
• cross-site scripting (XSS)
• manipulating client-side logic
• defeating logic protection techniques
• function hijacking (client-side code being changed)
• JavaScript Object Notation (JSON) hijacking
• denial of service attacks
• hacking Google Gears
Bottom line: Server should not implicitly trust any information inbound from a client
Article: http://www.adtmag.com/article.aspx?id=21773
Video of security talk at GWT Conference:
• http://www.ongwt.com/post/2008/01/06/GWT-Conference-:-GWT-Security
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
More Information
• RAP
 http://www.eclipse.org/rap/
 http://www.eclipse.org/rap/demos.php
• GWT
 http://code.google.com/webtoolkit/
 http://code.google.com/webtoolkit/examples/
 http://www.asquare.net/gwt/
 http://code.google.com/p/gwt-ext/ GWT Ext
 http://extjs.com/products/gxt/ Ext GWT (was MyGWT)
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Enter to Win
 Evaluate any of the WindowBuilder
family of products by 19 December 2008.
 Only attendees at this meeting may enter.
 Begin your product evaluation at
http://www.instantiations.com/eclipseusers-se
• To enter the drawing,
you’ll complete a form,
then download, install
and activate one of these
by 19 December.
Take a card as a reminder
RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0
Java Tools
for
Professional
Development Teams

Weitere ähnliche Inhalte

Was ist angesagt?

Programmable infrastructure with FlyScript
Programmable infrastructure with FlyScriptProgrammable infrastructure with FlyScript
Programmable infrastructure with FlyScriptRiverbed Technology
 
Running the-next-generation-of-cloud-native-applications-using-open-applicati...
Running the-next-generation-of-cloud-native-applications-using-open-applicati...Running the-next-generation-of-cloud-native-applications-using-open-applicati...
Running the-next-generation-of-cloud-native-applications-using-open-applicati...NaveedAhmad239
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecAdam Paxton
 
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...Francesco Corti
 
OpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerOpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerSmartBear
 
API SDK Development – Lessons Learned
API SDK Development – Lessons LearnedAPI SDK Development – Lessons Learned
API SDK Development – Lessons LearnedPronovix
 
Observe and command your fleets across any kubernetes with weave git ops
Observe and command your fleets across any kubernetes with weave git opsObserve and command your fleets across any kubernetes with weave git ops
Observe and command your fleets across any kubernetes with weave git opsWeaveworks
 
Platform 4.0 Meetup Launch Event
Platform 4.0 Meetup Launch EventPlatform 4.0 Meetup Launch Event
Platform 4.0 Meetup Launch EventFokke Zandbergen
 
OSGi on Android - Value Proposition
OSGi on Android - Value PropositionOSGi on Android - Value Proposition
OSGi on Android - Value PropositionJoachim Ritter
 
Disruptive Technology Trends - Cloud, Mobile, IoT and Beyond
Disruptive Technology Trends - Cloud, Mobile, IoT and BeyondDisruptive Technology Trends - Cloud, Mobile, IoT and Beyond
Disruptive Technology Trends - Cloud, Mobile, IoT and BeyondDr Ganesh Iyer
 
OSGi Community Event 2010 - App Store for the Connected Home Services
OSGi Community Event 2010 - App Store for the Connected Home ServicesOSGi Community Event 2010 - App Store for the Connected Home Services
OSGi Community Event 2010 - App Store for the Connected Home Servicesmfrancis
 
SAPUI5/OpenUI5 - Continuous Integration
SAPUI5/OpenUI5 - Continuous IntegrationSAPUI5/OpenUI5 - Continuous Integration
SAPUI5/OpenUI5 - Continuous IntegrationPeter Muessig
 
OpenAPI Spec at Google (Open API Initiative Meetup on 2016-09-15)
OpenAPI Spec at Google (Open API Initiative Meetup on 2016-09-15)OpenAPI Spec at Google (Open API Initiative Meetup on 2016-09-15)
OpenAPI Spec at Google (Open API Initiative Meetup on 2016-09-15)Open API Initiative (OAI)
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first classLibbySchulze
 
Continuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applicationsContinuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applicationsSunil Dalal
 
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinarMove Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinarEmbarcadero Technologies
 
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)My own sweet home!
 
Spring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the MassesSpring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the MassesVMware Tanzu
 
The Swagger Format becomes the Open API Specification: Standardizing descript...
The Swagger Format becomes the Open API Specification: Standardizing descript...The Swagger Format becomes the Open API Specification: Standardizing descript...
The Swagger Format becomes the Open API Specification: Standardizing descript...3scale
 

Was ist angesagt? (20)

Programmable infrastructure with FlyScript
Programmable infrastructure with FlyScriptProgrammable infrastructure with FlyScript
Programmable infrastructure with FlyScript
 
Running the-next-generation-of-cloud-native-applications-using-open-applicati...
Running the-next-generation-of-cloud-native-applications-using-open-applicati...Running the-next-generation-of-cloud-native-applications-using-open-applicati...
Running the-next-generation-of-cloud-native-applications-using-open-applicati...
 
Designing APIs with OpenAPI Spec
Designing APIs with OpenAPI SpecDesigning APIs with OpenAPI Spec
Designing APIs with OpenAPI Spec
 
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...
Alfresco DevCon 2018 - Embedding Pentaho dashboards into an Alfresco ADF appl...
 
OpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of SwaggerOpenAPI 3.0, And What It Means for the Future of Swagger
OpenAPI 3.0, And What It Means for the Future of Swagger
 
API SDK Development – Lessons Learned
API SDK Development – Lessons LearnedAPI SDK Development – Lessons Learned
API SDK Development – Lessons Learned
 
Observe and command your fleets across any kubernetes with weave git ops
Observe and command your fleets across any kubernetes with weave git opsObserve and command your fleets across any kubernetes with weave git ops
Observe and command your fleets across any kubernetes with weave git ops
 
Platform 4.0 Meetup Launch Event
Platform 4.0 Meetup Launch EventPlatform 4.0 Meetup Launch Event
Platform 4.0 Meetup Launch Event
 
OSGi on Android - Value Proposition
OSGi on Android - Value PropositionOSGi on Android - Value Proposition
OSGi on Android - Value Proposition
 
Disruptive Technology Trends - Cloud, Mobile, IoT and Beyond
Disruptive Technology Trends - Cloud, Mobile, IoT and BeyondDisruptive Technology Trends - Cloud, Mobile, IoT and Beyond
Disruptive Technology Trends - Cloud, Mobile, IoT and Beyond
 
OSGi Community Event 2010 - App Store for the Connected Home Services
OSGi Community Event 2010 - App Store for the Connected Home ServicesOSGi Community Event 2010 - App Store for the Connected Home Services
OSGi Community Event 2010 - App Store for the Connected Home Services
 
SAPUI5/OpenUI5 - Continuous Integration
SAPUI5/OpenUI5 - Continuous IntegrationSAPUI5/OpenUI5 - Continuous Integration
SAPUI5/OpenUI5 - Continuous Integration
 
OpenAPI Spec at Google (Open API Initiative Meetup on 2016-09-15)
OpenAPI Spec at Google (Open API Initiative Meetup on 2016-09-15)OpenAPI Spec at Google (Open API Initiative Meetup on 2016-09-15)
OpenAPI Spec at Google (Open API Initiative Meetup on 2016-09-15)
 
Why your APIs should fly first class
Why your APIs should fly first classWhy your APIs should fly first class
Why your APIs should fly first class
 
Continuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applicationsContinuous integration and delivery for java based web applications
Continuous integration and delivery for java based web applications
 
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinarMove Desktop Apps to the Cloud - RollApp & Embarcadero webinar
Move Desktop Apps to the Cloud - RollApp & Embarcadero webinar
 
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
 
Spring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the MassesSpring Tools 4: Bootiful Spring Tooling for the Masses
Spring Tools 4: Bootiful Spring Tooling for the Masses
 
SAP Web IDE
SAP Web IDESAP Web IDE
SAP Web IDE
 
The Swagger Format becomes the Open API Specification: Standardizing descript...
The Swagger Format becomes the Open API Specification: Standardizing descript...The Swagger Format becomes the Open API Specification: Standardizing descript...
The Swagger Format becomes the Open API Specification: Standardizing descript...
 

Ähnlich wie RAP vs GWT Which AJAX Technology is for you?

Java script anywhere. What Nombas was doing pre-acquisition.
Java script anywhere. What Nombas was doing pre-acquisition.Java script anywhere. What Nombas was doing pre-acquisition.
Java script anywhere. What Nombas was doing pre-acquisition.Brent Noorda
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
 
Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)Igalia
 
Asp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech SoftwareAsp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech SoftwareRitwik Das
 
Product Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical SkillsProduct Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical SkillsSandeep Adwankar
 
APIdays 2016 - The State of Web API Languages
APIdays 2016  - The State of Web API LanguagesAPIdays 2016  - The State of Web API Languages
APIdays 2016 - The State of Web API LanguagesRestlet
 
Geoscience and Microservices
Geoscience and Microservices Geoscience and Microservices
Geoscience and Microservices Matthew Gerring
 
GWT Training - Session 1/3
GWT Training - Session 1/3GWT Training - Session 1/3
GWT Training - Session 1/3Faiz Bashir
 
Introduction to SignalR
Introduction to SignalRIntroduction to SignalR
Introduction to SignalRAdam Mokan
 
full-stack web developer (6).pdf
full-stack web developer (6).pdffull-stack web developer (6).pdf
full-stack web developer (6).pdfShubhamSaini950258
 
A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)Ralf Sternberg
 
Development Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElementsDevelopment Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElementsRomin Irani
 
Arbortext and APP for Developers - APPWorld 2011
Arbortext and APP for Developers - APPWorld 2011Arbortext and APP for Developers - APPWorld 2011
Arbortext and APP for Developers - APPWorld 2011Gareth Oakes
 
IBM - Developing portlets using Script portlet in WP 8001
IBM - Developing portlets using Script portlet in WP 8001IBM - Developing portlets using Script portlet in WP 8001
IBM - Developing portlets using Script portlet in WP 8001Vinayak Tavargeri
 
Built Cross-Platform Application with .NET Core Development.pdf
Built Cross-Platform Application with .NET Core Development.pdfBuilt Cross-Platform Application with .NET Core Development.pdf
Built Cross-Platform Application with .NET Core Development.pdfI-Verve Inc
 
GWT training session 1
GWT training session 1GWT training session 1
GWT training session 1SNEHAL MASNE
 
Apache Flex: Overview
Apache Flex: OverviewApache Flex: Overview
Apache Flex: OverviewTarun Telang
 
RIA front-ends: Flex, GWT integration in Nuxeo
RIA front-ends: Flex, GWT integration in NuxeoRIA front-ends: Flex, GWT integration in Nuxeo
RIA front-ends: Flex, GWT integration in NuxeoNuxeo
 

Ähnlich wie RAP vs GWT Which AJAX Technology is for you? (20)

Java script anywhere. What Nombas was doing pre-acquisition.
Java script anywhere. What Nombas was doing pre-acquisition.Java script anywhere. What Nombas was doing pre-acquisition.
Java script anywhere. What Nombas was doing pre-acquisition.
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)Web Technologies in Automotive & Robotics (BlinkOn 10)
Web Technologies in Automotive & Robotics (BlinkOn 10)
 
Asp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech SoftwareAsp.NETZERO - A Workshop Presentation by Citytech Software
Asp.NETZERO - A Workshop Presentation by Citytech Software
 
Product Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical SkillsProduct Camp Silicon Valley 2018 - PM Technical Skills
Product Camp Silicon Valley 2018 - PM Technical Skills
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
APIdays 2016 - The State of Web API Languages
APIdays 2016  - The State of Web API LanguagesAPIdays 2016  - The State of Web API Languages
APIdays 2016 - The State of Web API Languages
 
Node.js Tools Ecosystem
Node.js Tools EcosystemNode.js Tools Ecosystem
Node.js Tools Ecosystem
 
Geoscience and Microservices
Geoscience and Microservices Geoscience and Microservices
Geoscience and Microservices
 
GWT Training - Session 1/3
GWT Training - Session 1/3GWT Training - Session 1/3
GWT Training - Session 1/3
 
Introduction to SignalR
Introduction to SignalRIntroduction to SignalR
Introduction to SignalR
 
full-stack web developer (6).pdf
full-stack web developer (6).pdffull-stack web developer (6).pdf
full-stack web developer (6).pdf
 
A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)
 
Development Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElementsDevelopment Workshop on ET1, Android and Motorola RhoElements
Development Workshop on ET1, Android and Motorola RhoElements
 
Arbortext and APP for Developers - APPWorld 2011
Arbortext and APP for Developers - APPWorld 2011Arbortext and APP for Developers - APPWorld 2011
Arbortext and APP for Developers - APPWorld 2011
 
IBM - Developing portlets using Script portlet in WP 8001
IBM - Developing portlets using Script portlet in WP 8001IBM - Developing portlets using Script portlet in WP 8001
IBM - Developing portlets using Script portlet in WP 8001
 
Built Cross-Platform Application with .NET Core Development.pdf
Built Cross-Platform Application with .NET Core Development.pdfBuilt Cross-Platform Application with .NET Core Development.pdf
Built Cross-Platform Application with .NET Core Development.pdf
 
GWT training session 1
GWT training session 1GWT training session 1
GWT training session 1
 
Apache Flex: Overview
Apache Flex: OverviewApache Flex: Overview
Apache Flex: Overview
 
RIA front-ends: Flex, GWT integration in Nuxeo
RIA front-ends: Flex, GWT integration in NuxeoRIA front-ends: Flex, GWT integration in Nuxeo
RIA front-ends: Flex, GWT integration in Nuxeo
 

Kürzlich hochgeladen

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Kürzlich hochgeladen (20)

"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

RAP vs GWT Which AJAX Technology is for you?

  • 1. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 | www.instantiations.com/eclipseworld2008 RAP vs GWT Which AJAX technology is for you? by Mark Russell
  • 2. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Overview • Introduction Who we are • Demo Example apps, UI elements, Styles and Graphing • Development Architecture and Debugging • Communication Browser interaction and RPC • Build and Deployment Automation, process and server infrastructure • Performance Measuring and tuning hosted apps • Unit Testing Development and performance comparison • Summary
  • 3. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Introduction •Mark Russell  Co-architect of the Instantiations continuous build and deployment system  Build master with 14 years experience developing large and small build systems for large corporate systems and small open source projects  Developer on several Instantiations products such as CodePro and RCPDeveloper  Eclipse committer
  • 4. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 • Founded in 1997, Headquarters in Portland, OR • Market leading tools  Automated Software Quality  UI Construction and Testing Tools • CodeGear division of Embarcadero OEM’ed Swing Designer for JBuilder® 2008 • 8 years of extensive Eclipse experience Active Eclipse Foundation member and major contributor. • Customer focused. Customer driven.
  • 5. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Awards and Acknowledgements “WindowBuilder delivers the kind of GUI building productivity that we use to have before we converted to Java.” Sally Rich Checkfree Solutions 2006 - 2008 Private 100 Fastest Growing Oregon Companies “RCP Developer is the first product to bring comprehensive application construction, GUI testing and packaging of rich- client applications to Eclipse RCP. We are delighted that Instantiations is delivering this important technology to the growing Eclipse ecosystem.” Mike Milinkovich, Executive Director Eclipse Foundation #14 Fastest Growing Technology Company 2006 “Since we started using WindowTester, tests that took 2–3 weeks to write previously can now be done in 2–3 days.” Steve Tocco Director of Quality Assurance, BEA “Because our software is used to drive key business decisions, it's critical that we deliver high-quality software, and implementing CodePro AnalytiX has allowed us to automate the process of enforcing programming standards and best practices.” Rich Main, Director, Java Development Environments, SAS
  • 6. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Strategic Product Lines Automated Software Quality Tools for Code Analysis, Measurement and Improvement Automated testing of Java GUIs for SWT and Swing WYSIWYG development of Java GUIs for SWT, Swing and GWT Finalist
  • 7. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Similarities • Rich browser based UI based on AJAX • Developers write Java code (not JavaScript) … but that’s where the similarities end
  • 8. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Demo – RAP application in action Looks and feels like an Eclipse application embedded in a browser Main “window” can be dragged within browser Pull down menus Panels are resizable within main window Popup “windows” restricted to browser content area
  • 9. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 RAP – UI Components Most SWT widgets have RWT* counterparts, except: • StyledText (under investigation) • FormText • GC (often used with custom widgets… under investigation) Much of JFace is implemented such as tables, content and label providers, actions, contributions, wizard framework, many dialogs, layouts, colors, fonts, etc. Also • Drag and drop (planned) • Custom Widgets are possible *RWT = RAP Widget Toolkit
  • 10. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 RAP – Styles • Now supports CSS files (June 2008) * { backgound-color: white; } Button[PUSH], Button[TOGGLE] { border: 2px solid blue; color: rgb( 17, 23, 103 ); background-color: #f9f9f9; } Button[PUSH]:hover, Button[TOGGLE]:hover { background-color: white; } http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.rap.help/help/html/intro.html > RAP Developer Guide > Advanced Topics > RWT Theming (CSS in the future)
  • 11. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 RAP – Supported Browsers Wrappers the Qooxdoo JavaScript library, supporting the same set of browsers… • Microsoft IE 5.5 + ( decent performance with 7.0 + ) • Firefox 1.0 + • Opera 8 + • Any Gecko-based browser with Gecko 1.7 + • Safari 2.0 (limited support) • Safari 3.0 http://qooxdoo.org/documentation/0.7/requirements
  • 12. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Demo – GWT / Ext GWT application in action Main “window” fixed within browser Pull down menus Panels are resizable within main window Popup “windows” restricted to browser content area MyGWT  Ext GWT
  • 13. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 GWT – UI Components GWT • CheckBox and several types of buttons • Several types of text based fields including SuggestBox • List, Table, Tree, TabBar, Hyperlink • MenuBar, DialogBox and various panels • Custom widgets are possible • Call “raw” JavaScript using JavaScript Native Interface (JSNI)
  • 14. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 GWT – API http://roberthanson.blogspot.com/2006/07/birds-eye-view-of-gwt-api.html
  • 15. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Ext GWT – UI Components Ext GWT • New layouts, tables, trees, windows, lists, menus, toolbars • Windows, dialogs, draggable, resizable, effects such as fade in fade out • Very integrated look and feel http://extjs.com/products/gxt/ MyGWT  Ext GWT
  • 16. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 GWT – Styles • Style based on standard CSS style sheets • Standard CSS provided for consistent look and feel • Can modify global styles for your app • Can extend or override on individual widget styles .mail-item-detail { background-color: #E8EAEC; border-bottom: 1px solid silver; } .mail-item-detail h1 { font-weight: bold; font-size: 14px; padding: 5 0 2 5px; } .mail-item-detail h2 { font-size: 12px; font-weight: normal; padding: 0 5 0 5px; }
  • 17. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 GWT – Supported Browsers “most recent versions of Internet Explorer, Firefox, and Safari. (Opera, too, most of the time.)” Ext GWT (based on Ext JS – http://extjs.com/) • Internet Explorer 6+ • Firefox 1.5+ (PC, Mac) • Safari 2+ • Opera 9+ (PC, Mac) Ext GWT and Ext JS dual license license: 1) Open Source GNU GPL license v3 (free) 2) Commercial license ($$$) http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.Fundamentals.html#JavaRuntimeSupport
  • 18. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 History Management GWT provides functionality for programmatically adding state to the browser's back button history. RAP does not currently have any framework for providing “browser back button” support. Qooxdoo offers functionality for browser back and browser history but RAP currently does not use those features. This is an important feature missing from RAP… or is it? http://google-web-toolkit.googlecode.com/svn/javadoc/1.4/com/google/gwt/user/client/History.html
  • 19. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Development How do you develop applications with these frameworks?
  • 20. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 RAP – Architecture • Very similar to developing an RCP application • Can use UI development tools such as WindowBuilder Pro RAP RCP
  • 21. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 RAP – Architecture RAP RCP • Java code executed entirely on the server • Static JavaScript library deployed to client
  • 22. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 One launch configuration for client and server Port 8090 – makes it easy to serve up both RAP and GWT RAP – Debugging Internal Browser External Browser
  • 23. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 GWT – Architecture Write Java code, some portion of which is compiled into JavaScript Not all of the underlying Java runtime library functionality can be translated to JavaScript • syntax of Java regular expressions is similar, but not identical • long are mapped onto JavaScript double-precision floating point values • does not support subsequent dynamic loading of classes • does not support object finalization during garbage collection Can use UI development tools such as GWT Designer http://www.tml.tkk.fi/ Opinnot/T-111.5360/2007/ XForms/Overview.html
  • 24. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 GWT – Debugging Launch server then GWT client in hosted mode. Click “Compile/Browse” to launch in browser. OSGi Server Hosted Browser http/xml http/xml
  • 25. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Communication How do these frameworks communicate with the server?
  • 26. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 RAP – Communication Layout Page Display Page Process Actions Render Changes Page Request Browser Server http://... mouse and key events mouse and key events Lookup Data Server-side representation of browser page update events
  • 27. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 GWT – Communication Lookup Page Display Page Process Actions Render Changes Page Request Browser Server http://... Lookup Data XMLHttpRequest
  • 28. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 RAP and GWT – Communication RAP • Easy… no extra work… all communication is handled for you GWT • More flexible…  Optionally cache information on the client  Optionally pre-fetch information in background • … but more work so what more is required for GWT ?
  • 29. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Build and Deployment How are apps built with these frameworks deployed?
  • 30. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Build Automation Scripted build process • Ant • Maven2 • Roll your own Automation is a must • Manual process tends to be error prone over time • Scripted build process is very repeatable Consider Continuous Integration
  • 31. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 RAP – Plug-in Deployment Target Servers • Easily deployed as OSGi bundles with included http service • Deployed to traditional J2EE Application server using the “Servlet Bridge” • Cannot be deployed to a plain web server Plug-in based Build and Deploy Process • All plug-ins should be contained in a feature  Make the PDE build process easier • Run PDE build to generate bundles  Reformat code to PDE format  Call PDE build  Unzip and reformat the PDE build result • Upload build result to application server • Run deployment scripts on application server http://www.eclipse.org/equinox/server/http_in_container.php
  • 32. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 GWT – Plug-in Deployment Target Servers • Can be deployed to an OSGi based server using plug-ins • Can be deployed to a more traditional J2EE Application server as WAR file • Easily deploy simple apps (e.g. financial calculator… no RPC) to plain web server Plug-in based Build and Deploy Process • Switch GWT library jar file (gwt-user.jar ----> gwt-servlet.jar) • Call the GWT compiler to compile Java to JavaScript  Generated JavaScript placed into a plug-in • Run PDE build to generate bundles  Reformat code to PDE format  Call PDE build  Unzip and reformat the PDE build result • Upload build result to application server • Run deployment scripts on application server
  • 33. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 GWT – Traditional J2EE Server Target Servers • Can be deployed to an OSGi based server using plug-ins • Can be deployed to a more traditional J2EE Application server as WAR file • Easily deploy simple apps (e.g. financial calculator… no RPC) to plain web server Traditional J2EE based Build and Deploy Process • Switch GWT library jar file (gwt-user.jar ----> gwt-servlet.jar) • Call the GWT compiler to compile client-side Java to JavaScript  Generated JavaScript placed into a plug-in • Call javac to compile server-side Java code • Create WAR file containing client-side JavaScript and server-side Java • Upload build result to application server • Run deployment scripts on application server
  • 34. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Build and Deploy Summary Build • Automation is a must • Consider Continuous Integration Deployment • Easier to deploy RAP than GWT to an OSGi based server. • May be easier to deploy GWT than RAP to a more traditional application server. • Construct build scripts such that apps can be deployed both on the local machine and on the server
  • 35. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Performance How fast are apps built with these frameworks?
  • 36. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Performance – Image Bundling Look at the whole stack, don’t just look at the application Faster to load one bigger file than many smaller files GWT provides functionality to combine multiple small images into a single large image for efficient transport to the browser This is planned for RAP. Something comparable to image-bundles is just finding its way into Qooxdoo 0.8, and the RAP team will investigate once that is in place. Incorporating this functionality in RAP would reduce the time to load a page. http://www.screaming-penguin.com/docs/gwt-1.4.10/doc/html/com.google.gwt.doc.DeveloperGuide.UserInterface.ImageBundles.DefiningAndUsingImageBundle.html MyImageBundle imageBundle = (MyImageBundle) GWT.create(MyImageBundle.class) imageBundle.printerIcon().createImage(); imageBundle.notesIcon().createImage(); imageBundle.editIcon().createImage(); imageBundle.graphIcon().createImage(); …
  • 37. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Performance – Communication In general, RAP pushes more work off the client onto the server, thus communicating more information and more frequently with the server. Layout Page Display Page Process Actions Render Changes Page Request Browser Server mouse and key events mouse and key events Lookup Data Lookup Page Display Page Process Actions Render Changes Page Request Browser Server Lookup Data XMLHttpRequest RAP GWT
  • 38. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Performance – Virtual Tables RAP passes only the information necessary to display the visible rows in the table In our GWT app, the entire table content is loaded the first time it is needed and cached on the client. We could have loaded only what we needed to reduce the refresh time. Bottom line: GWT is more flexible and potentially faster, but by how much and at what cost (complexity) to the developer? RAP GWT
  • 39. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Performance – RAP in Eclipse.org EPP working on a RAP wizard Eclipse downloads Load test executed against desktop computer with • Core2Duo 2.8 GHz • Ubuntu • JVM  max of 512 MB of heap space  concurrent marksweep garbage collector (-UseConcMarkSweepGC) • Tomcat 6 • Jmeter 3.2
  • 40. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Performance – RAP in Eclipse.org • Throughput of 100 requests/second • Average response time of 14 milliseconds • Standard deviation of 60 - 80 milliseconds (due to periodic garbage collection) • 250 MB of heap needed for 1000 concurrent sessions Overhead = 250K / session
  • 41. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Unit Testing Both RAP and GWT are based on Java, so… • JUnit can be used to test the server-side code • But how to test the client-side?
  • 42. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 RAP – Unit Testing • Non-UI code can be tested using standard JUnit • UI code can be tested using JUnit (new June 2008) public class RapJUnitTest extends RAPTestCase { public void testOpenView() { try { IWorkbenchPage page = getPage(); page.showView( "org.eclipse.rap.demo.DemoTreeViewPartI" ); } catch( PartInitException e ) { e.printStackTrace(); } assertEquals( 1, getPage().getViewReferences().length ); getPage().hideView( getPage().getViewReferences()[ 0 ] ); assertEquals( 0, getPage().getViewReferences().length ); } private IWorkbenchPage getPage() { IWorkbench workbench = PlatformUI.getWorkbench(); IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); return window.getActivePage(); } } RAP includes a special RAPTestCase base class that provides JUnit integration
  • 43. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 GWT – Unit Testing public class FooTest extends GWTTestCase { // Specifies a module to use when running this test case. public String getModuleName() { return "com.example.foo.Foo"; } public void testStuff() { myService.doSomething(arguments, new AsyncCallback() { public void onSuccess(Object result) { finishTest(); } public void onFailure(Throwable caught) { … test failed … } }); // Set a delay period significantly longer than the event is expected to take. delayTestFinish(500); } } http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.JUnitIntegration.html GWT includes a special GWTTestCase base class that provides JUnit integration Must specify GWT module Optional support for asychronous test finish and specification of maximum execution time
  • 44. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 AJAX Security Issues There are many AJAX security issues and people much more qualified to talk about security than us. Attack vectors include: • cross-site scripting (XSS) • manipulating client-side logic • defeating logic protection techniques • function hijacking (client-side code being changed) • JavaScript Object Notation (JSON) hijacking • denial of service attacks • hacking Google Gears Bottom line: Server should not implicitly trust any information inbound from a client Article: http://www.adtmag.com/article.aspx?id=21773 Video of security talk at GWT Conference: • http://www.ongwt.com/post/2008/01/06/GWT-Conference-:-GWT-Security
  • 45. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 More Information • RAP  http://www.eclipse.org/rap/  http://www.eclipse.org/rap/demos.php • GWT  http://code.google.com/webtoolkit/  http://code.google.com/webtoolkit/examples/  http://www.asquare.net/gwt/  http://code.google.com/p/gwt-ext/ GWT Ext  http://extjs.com/products/gxt/ Ext GWT (was MyGWT)
  • 46. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Enter to Win  Evaluate any of the WindowBuilder family of products by 19 December 2008.  Only attendees at this meeting may enter.  Begin your product evaluation at http://www.instantiations.com/eclipseusers-se • To enter the drawing, you’ll complete a form, then download, install and activate one of these by 19 December. Take a card as a reminder
  • 47. RAP vs GWT - Which AJAX technology is for you? | © 2008 by Instantiations; made available under the EPL v1.0 Java Tools for Professional Development Teams