SlideShare a Scribd company logo
Rapid and Reliable Developing with
HTML5 & GWT.
Manuel Carrasco Moñino
manolo@apache.org
http://twitter.com/dodotisMadrid Java User Group 4th Apr 2013
About me
● Apache James Project Member Committee
● HUPA
● GWT
● Gquery & Gquery-plugins
● GwtExporter
● GwtUpload
● Chronoscope
● Jenkins
● Performance plugin
● Emma plugin
● Linux
● LXP a light and visual window manager based on icewm
Proposal I
Move apps from Desktop to Browser:
HTML5 + JS
RIA → Rich Internet App.
Better User Experience:
Simple Page Interface.
History
1998 - 2002
2002 - 2004
2004 - 2008
2009 - 2012
Some technology demonstrations: desktop.com.
There are not commercial products
First products developed by pioneers: Backbase, GI, JackBe,
Laszlo Systems and Macromedia
Boon of AJAX technologies. 2007: Adobe Flex becomes
the dominant player in the RIA landscape
Companies have a strategic commitment
towards RIA and AJAX technologies.
Ria Options
Browser Player Native
XUL
Xforms
GWT
XUL, Flash, WCF
OpenLaszlo
Java/Swing
Xcode/C##
Reduced maintenance,
any location.
Combined benefits
of thin and rich client
Intuitive UI
Inmediate response
Thin
Client
Rich
Client
HTML
Windows,
Mac,
Android,
iOSWeb
Rails
Php
RIA: Classic Approach
Proposal II
HTML5: Desktop, mobile, tablets.
Art Status
HTML5 & JavaScript is everywhere
Mobiles have fast and modern
Browser run-times
HTML5 / JS
Develop Html5/Javascript Run Anywhere
RIA: Pure HTML5/JS
- JavaScript
- Canvas, SVG
- Multimedia
- Storage:
(LocalStorage, IdexedDb, WebSQL)
- Local File Access
- Ajax, Web Sockets
- Mobile in mind
Develop local apps:
games, contacts, etc
What is there in HTML-5?
Proposal III
Use HTML5 in your mobile native apps:
Apache cordova (a.k.a. Phonegap)
Apache Cordova (Phonegap)
●A framework for mobile applications that allows developers to implement
their projects using standard web technologies: HTML5, CSS3 and
Javascript
● It converts them into native applications for different mobile platforms with
access to much of the native API.
PhoneGap targets
Unique Code Base
Multiple Targets
Architecture
Project Structure: Android
My Application
Phonegap Native Engine
Phonegap Javascript Engine
Eclipse, Java
(Lnx, Win, Mac)
Project Structure: IOS
My Application
Phonegap Native Engine
Phonegap Javascript Engine
Xcode: Objetive C
(Mac)
Project Structure: IOS
My Application
Phonegap Native Engine
Phonegap Javascript Engine
Xcode: Objetive C
(Mac)
Proposal IV
Use a high level language Java:
GWT (Google Web Toolkit)
Develop in a High Level
Language Compile to Javascript
Google Web Toolkit
GWT's mission is to radically improve
the web experience for users by
enabling developers to use existing
Java tools to build no-compromise
AJAX for any modern browser
What is GWT?
Is a full SDK. Not a Js Framework
Not a Js Library
Not a new language
Not a Web Framework
Java to Javascript Compiler, Linker, Optimizer and Obfuscator
Produces one 'js' per browser (like c++ one 'exec' per processor)
Why Java?
● A high level language allows that the developer doesn't get lost with low
level details: DOM, Ajax, Cross-domain, Compression, Obfuscation,
Dependencies, Browser tweaks, etc.
● Huge Java ecosystem: IDE, Re-factoring, Debug, Code assist, Maven.
● Metrics, TDD, CI, Reusing (libraries)
● Patterns, Builders …
● Type safe, syntax checking, reduce errors.
● Separate code maintenance from the effectiveness of the executable.
● Normally, the compiler would produce better js code than the code we
could write by hand (less code, compressed, obfuscated, remove dead
code, etc).
● Developers know java
Java Server
Side
Java Client
Side
Java Code (IDE)
GWT server
libs RPC/RF
GWT development
Debug/Hosted/Test
GWT Compiler
JRE Emulation
Browser libs
Widgets
Test Runner FF/IE/Ch-Plugin
Java HTTP
Server
J-Byte Code
3ª Party
Server libs
Browser
Any HTTP Server
(php, ruby, ...)
JavaScript.
Bundles (css, sprite).
3ª Party
Client libs
Toolkit (SDK)
JSON/XML/HTML/TXT
RPC/RF
JSON/XML/HTML/TXT
GWT Eclipse
Plugin
Mobile
New with 2.5.0
● SuperDev Mode
● Source Maps
● Elemental
● Size & Split optimitations
● Closure compiler
How looks the code like ?
public class Tw implements EntryPoint {
public void onModuleLoad() {
Label label = new Label("Hello world");
Button button = new Button("Click");
button.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
Window.alert("Hello world");
}
});
RootPanel.get().add(label);
RootPanel.get().add(button);
}
}
Project Structure
Browser: Java → JS
Both: Java → [JS or BitCode]
Server: Java → BitCode
Assets: html, images, css
Performance
Generates less code.
It analyzes the code and
includes only necessary for
each browser.
Implements own managers
to prevent 'leaks'.
Applications faster and
with less tricks HTTP.
Eliminates the use
wrappers for native
functionality of each
browser version.
Saving the time spent on
debugging for each
browser, you can spend
more time on the
application functionality.
The development
efficiency is the main
advantage of GWT.
JAVASCRIPT USER DEVELOPER
Summary
• GWT does not do anything that can be done otherwise, but it
makes the action much more productive.
• GWT does not attempt to exhibit the virtues of Java, but
recognize the pragmatism of existing tools
• GWT does not want to forget about DOM, CSS, browser, etc,
but abstractions allow writing more productive code than hand
writing JS code.
• Perhaps someday GWT could compile other languages(Xtend,
Scala), or even process annotated JS.
• GWT makes possible development of large scale web sites and
it opens the possibility of creating new generation of
applications reliably.
Proposal V:
Bring GWT to Mobile
GWT
Libraries
● GWT: Core, Compiler, tools, layout, MVP
● GWT-Phonegap: Access mobile HW from
your code.
● MGWT: Widgets, Animations, Themes
● GQUERY: fast CSS and DOM tweaks
Make your app look native
Advantages:
Java + Gwt + Cordova
● Maintain just one code base.
● Use one language for all.
● Reuse libraries written in java instead of rewrite
them in JS.
● Develop using a browser instead of an emulator.
● Realtime debug.
● Unit testing.
● Everything is open sourced
Proposal VI
Use a common framework to create visual apps:
PlayN
Angry Birds
Game problem
PlayN
Cross-platform game abstraction library for
writing games that compile to:
- Desktop Java
- HTML5 Browsers
- Android
- iOS
- Flash
- More?
API
GAME: Java Code
Why Java
- Java ecosystem
- Familiar Tools and Libraries
- Desktop has Java
- Android is Java
- GWT is Java
HW acceleration
The same code for all platforms
Proposal VII
NoSQL Databases
What is NoSQL?
● not built primarily on tables
● do not use SQL for data manipulation
● optimized for retrieval operations
● reduced run-time flexibility
● no relationships between elements
● cannot necessarily give full ACID (Atomicity,
Consistency, Isolation, Durability) guarantees
● Optimized to scale horizontally
NoSQL Types
● Document: key-document (couchdb, mongodb,
jackrabbit)
● Graph: elements interconnected (DB2)
● KeyValue: not fixed datamodel (Cassandra,
Dynamo, BigTable)
● Others: actually each product has its own
features (nosql is not a standard).
Solutions
● BigTable: Google App Engine
● Proprietary Query Language
● MySQL like layer
● Map-reduce
● Document based: CouchDb
● Ajax Service
● Map-reduce
● KeyValue: Cassandra
● Map-reduce
● API
Map-Reduce
Parallelism:
allows data distribution, increases performance, recovering from partial failures
1- The master divide a complex problem in small problems.
2- Gives them to workers which resolve them in parallel.
3- Finally all responses are reduced to generate the solution.
GAE
● Google's cloud solution.
● Runs its own runtime (Java or Python): so consider
GAE restrictions and API.
● Integration with Eclipse: really easy to start and deploy
a project.
● Free until your app starts consuming a lot of
resources.
● Easy to administrate (console)
● 100% scalable.
● Suitable for RIA (Ajax, GWT, PlayN ...)
CouchDB
● Light weight database. Developed by Apache in Erlang.
● Json oriented: documents are json, dialog is json.
● Js map-reduce
● HTTP service (not any proprietary protocol)
● Replica/Cluster out-of-the-box
● High performance and scalability
● Web administration Panel
● Ideal for Ajax apps
● Java Api to access it in a JPA like way
● Push to client mechanism
Real Case: Talkwheel
Talkwheel
● Talkwheel provides social engagement across mobile
and desktop for any brand or personality.
● Its goal is to offer a easy and visual tool for
conversations
● About 3 million users using our products
● A San Francisco based startup of 6 people.
SW Architecture
CouchDB
HTTP Ajax
Java → JS
HTML5
One CodeBase → Multiple Targets
Desktop
Embedded
Tablets
Mobile
Real project size
SLOC Directory SLOC­by­Language (Sorted)
18067   tw­model        java=17871,xml=128,perl=68
14541   tw­gwt          java=12254,xml=2173,sh=114
3126    tw­playn­core   java=3121,xml=5
12266   tw­admin        java=10274,xml=1992
3731    tw­ios          objc=3731
2708    tw­droid        java=2708
Totals grouped by language (dominant language first):
java:         46228 (84.92%)
xml:           4298 (7.90%)
objc:          3731 (6.85%)
sh:             114 (0.21%)
perl:            68 (0.12%)
Total Physical Source Lines of Code (SLOC)                = 54,439
Development Effort Estimate, Person­Years (Person­Months) = 2.77 (33.24)
 (effort model Person­Months = 0.5 * (KSLOC**1.05))
Schedule Estimate, Years (Months)                         = 0.92 (10.98)
 (schedule model Months = 2.9 * (person­months**0.38))
Estimated Average Number of Developers (Effort/Schedule)  = 3.03
Total Estimated Cost to Develop                           = $ 374,202
 (average salary = $56,286/year, overhead = 2.40).
Off topic:
Contributing the Open Source
Become an opensource
contributor
● Checkout the code.
● Play with it, test it, find bugs.
● Open tickets reporting problems, asking for improvements.
● Attach patches which fix bugs, add new features, improve
performance, contribute to readability, etc. Don't forget unit Tests.
● Subscribe to mailing lists, and participate asking and answering
questions.
● Committers will appreciate your work and will propose you to be part
of the team.
● Other way you can utilize is to propose new projects: Apache
incubator, labs, GSOC, etc. Find a mentor or use mailing-lists for
that.

More Related Content

What's hot

In defense of GWT-RPC By Colin Alworth
In defense of GWT-RPC By Colin AlworthIn defense of GWT-RPC By Colin Alworth
In defense of GWT-RPC By Colin Alworth
GWTcon
 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platform
Didier Girard
 
Introduction to Google Web Toolkit
Introduction to Google Web ToolkitIntroduction to Google Web Toolkit
Introduction to Google Web ToolkitDidier Girard
 
Introduction to Qt programming
Introduction to Qt programmingIntroduction to Qt programming
Introduction to Qt programming
Dragos Tudor Acostachioaie
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
account inactive
 
GWT and PWA
GWT and PWAGWT and PWA
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present futurelolopetit
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)
firenze-gtug
 
The Java alternative to Javascript
The Java alternative to JavascriptThe Java alternative to Javascript
The Java alternative to Javascript
Manuel Carrasco Moñino
 
Building Rich Internet Applications Using Google Web Toolkit
Building Rich Internet Applications Using  Google Web ToolkitBuilding Rich Internet Applications Using  Google Web Toolkit
Building Rich Internet Applications Using Google Web Toolkitrajivmordani
 
Building Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the CloudBuilding Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the Cloud
Chris Schalk
 
GWT Contributor Workshop
GWT Contributor WorkshopGWT Contributor Workshop
GWT Contributor Workshop
Manuel Carrasco Moñino
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
Daniel Rocha
 
JHipster Beyond CRUD - JHipster Conf' 2019
JHipster Beyond CRUD - JHipster Conf' 2019JHipster Beyond CRUD - JHipster Conf' 2019
JHipster Beyond CRUD - JHipster Conf' 2019
Intesys
 
Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)
Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)
Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)
Andreas Jakl
 
Present and Future of GWT from a developer perspective
Present and Future of GWT from a developer perspectivePresent and Future of GWT from a developer perspective
Present and Future of GWT from a developer perspective
Manuel Carrasco Moñino
 
Gradle: One technology to build them all
Gradle: One technology to build them allGradle: One technology to build them all
Gradle: One technology to build them all
Bonitasoft
 
Web and Native in 2012
Web and Native in 2012Web and Native in 2012
Web and Native in 2012
jhugman
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
Julien Dubois
 
Backwards Compatibility: Strategies and Tactics
Backwards Compatibility: Strategies and TacticsBackwards Compatibility: Strategies and Tactics
Backwards Compatibility: Strategies and Tactics
CommonsWare
 

What's hot (20)

In defense of GWT-RPC By Colin Alworth
In defense of GWT-RPC By Colin AlworthIn defense of GWT-RPC By Colin Alworth
In defense of GWT-RPC By Colin Alworth
 
GWT + Gears : The browser is the platform
GWT + Gears : The browser is the platformGWT + Gears : The browser is the platform
GWT + Gears : The browser is the platform
 
Introduction to Google Web Toolkit
Introduction to Google Web ToolkitIntroduction to Google Web Toolkit
Introduction to Google Web Toolkit
 
Introduction to Qt programming
Introduction to Qt programmingIntroduction to Qt programming
Introduction to Qt programming
 
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization SoftwareCase Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
Case Study: Using Qt to Develop Advanced GUIs & Advanced Visualization Software
 
GWT and PWA
GWT and PWAGWT and PWA
GWT and PWA
 
Counterclockwise past present future
Counterclockwise  past present futureCounterclockwise  past present future
Counterclockwise past present future
 
GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)GWT - AppDays - (25 aprile 2014, pordenone)
GWT - AppDays - (25 aprile 2014, pordenone)
 
The Java alternative to Javascript
The Java alternative to JavascriptThe Java alternative to Javascript
The Java alternative to Javascript
 
Building Rich Internet Applications Using Google Web Toolkit
Building Rich Internet Applications Using  Google Web ToolkitBuilding Rich Internet Applications Using  Google Web Toolkit
Building Rich Internet Applications Using Google Web Toolkit
 
Building Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the CloudBuilding Kick Ass Video Games for the Cloud
Building Kick Ass Video Games for the Cloud
 
GWT Contributor Workshop
GWT Contributor WorkshopGWT Contributor Workshop
GWT Contributor Workshop
 
Qt Technical Presentation
Qt Technical PresentationQt Technical Presentation
Qt Technical Presentation
 
JHipster Beyond CRUD - JHipster Conf' 2019
JHipster Beyond CRUD - JHipster Conf' 2019JHipster Beyond CRUD - JHipster Conf' 2019
JHipster Beyond CRUD - JHipster Conf' 2019
 
Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)
Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)
Qt App Development for Symbian & MeeGo - v3.4.6 (17. January 2012)
 
Present and Future of GWT from a developer perspective
Present and Future of GWT from a developer perspectivePresent and Future of GWT from a developer perspective
Present and Future of GWT from a developer perspective
 
Gradle: One technology to build them all
Gradle: One technology to build them allGradle: One technology to build them all
Gradle: One technology to build them all
 
Web and Native in 2012
Web and Native in 2012Web and Native in 2012
Web and Native in 2012
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
Backwards Compatibility: Strategies and Tactics
Backwards Compatibility: Strategies and TacticsBackwards Compatibility: Strategies and Tactics
Backwards Compatibility: Strategies and Tactics
 

Similar to Rapid and Reliable Developing with HTML5 & GWT

GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
DNG Consulting
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
barciszewski
 
Serverless computing with Google Cloud
Serverless computing with Google CloudServerless computing with Google Cloud
Serverless computing with Google Cloud
wesley chun
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
JooinK
 
T 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By GwtT 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By Gwtsupertoy2015
 
RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?Mark Russell
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
wesley chun
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
sparkfabrik
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007lucclaes
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with Flutter
Awok
 
Web summit.pptx
Web summit.pptxWeb summit.pptx
Web summit.pptx
171SagnikRoy
 
Cross Platform Mobile App Development
Cross Platform Mobile App DevelopmentCross Platform Mobile App Development
Cross Platform Mobile App Development
Annmarie Lanesey
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
Igalia
 
Apache Flex and the imperfect Web
Apache Flex and the imperfect WebApache Flex and the imperfect Web
Apache Flex and the imperfect Web
masuland
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloudlennartkats
 
Firefox OS - Hive Pilani 2015
Firefox OS - Hive Pilani 2015Firefox OS - Hive Pilani 2015
Firefox OS - Hive Pilani 2015
Nilay Binjola
 
Installable web applications
Installable web applicationsInstallable web applications
Installable web applications
LiveChat
 
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
 
Cross-platform Desktop application with AngularJS and build with Node-webkit
Cross-platform Desktop application with AngularJS and build with Node-webkitCross-platform Desktop application with AngularJS and build with Node-webkit
Cross-platform Desktop application with AngularJS and build with Node-webkit
Wittawas Wisarnkanchana
 
Hybridmobileapps 130130213844-phpapp02
Hybridmobileapps 130130213844-phpapp02Hybridmobileapps 130130213844-phpapp02
Hybridmobileapps 130130213844-phpapp02
weeyee
 

Similar to Rapid and Reliable Developing with HTML5 & GWT (20)

GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
 
GWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO ToolsGWT - Building Rich Internet Applications Using OO Tools
GWT - Building Rich Internet Applications Using OO Tools
 
Serverless computing with Google Cloud
Serverless computing with Google CloudServerless computing with Google Cloud
Serverless computing with Google Cloud
 
Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2Javascript as a target language - GWT KickOff - Part 2/2
Javascript as a target language - GWT KickOff - Part 2/2
 
T 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By GwtT 0230 Google Wave Powered By Gwt
T 0230 Google Wave Powered By Gwt
 
RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?RAP vs GWT Which AJAX Technology is for you?
RAP vs GWT Which AJAX Technology is for you?
 
Introduction to serverless computing on Google Cloud
Introduction to serverless computing on Google CloudIntroduction to serverless computing on Google Cloud
Introduction to serverless computing on Google Cloud
 
From React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I startedFrom React to React Native - Things I wish I knew when I started
From React to React Native - Things I wish I knew when I started
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
 
Mobile development with Flutter
Mobile development with FlutterMobile development with Flutter
Mobile development with Flutter
 
Web summit.pptx
Web summit.pptxWeb summit.pptx
Web summit.pptx
 
Cross Platform Mobile App Development
Cross Platform Mobile App DevelopmentCross Platform Mobile App Development
Cross Platform Mobile App Development
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
 
Apache Flex and the imperfect Web
Apache Flex and the imperfect WebApache Flex and the imperfect Web
Apache Flex and the imperfect Web
 
Language Engineering in the Cloud
Language Engineering in the CloudLanguage Engineering in the Cloud
Language Engineering in the Cloud
 
Firefox OS - Hive Pilani 2015
Firefox OS - Hive Pilani 2015Firefox OS - Hive Pilani 2015
Firefox OS - Hive Pilani 2015
 
Installable web applications
Installable web applicationsInstallable web applications
Installable web applications
 
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.
 
Cross-platform Desktop application with AngularJS and build with Node-webkit
Cross-platform Desktop application with AngularJS and build with Node-webkitCross-platform Desktop application with AngularJS and build with Node-webkit
Cross-platform Desktop application with AngularJS and build with Node-webkit
 
Hybridmobileapps 130130213844-phpapp02
Hybridmobileapps 130130213844-phpapp02Hybridmobileapps 130130213844-phpapp02
Hybridmobileapps 130130213844-phpapp02
 

More from Manuel Carrasco Moñino

CRUD with Polymer 2.0
CRUD with Polymer 2.0CRUD with Polymer 2.0
CRUD with Polymer 2.0
Manuel Carrasco Moñino
 
Web Components and PWA
Web Components and PWAWeb Components and PWA
Web Components and PWA
Manuel Carrasco Moñino
 
Building Components for Business Apps
Building Components for Business AppsBuilding Components for Business Apps
Building Components for Business Apps
Manuel Carrasco Moñino
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWA
Manuel Carrasco Moñino
 
Intro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsIntro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin Elements
Manuel Carrasco Moñino
 
Rock GWT UI's with Polymer Elements
Rock GWT UI's with Polymer ElementsRock GWT UI's with Polymer Elements
Rock GWT UI's with Polymer Elements
Manuel Carrasco Moñino
 
Introducing GWT Polymer (vaadin)
Introducing GWT Polymer (vaadin)Introducing GWT Polymer (vaadin)
Introducing GWT Polymer (vaadin)
Manuel Carrasco Moñino
 
Speed up your GWT coding with gQuery
Speed up your GWT coding with gQuerySpeed up your GWT coding with gQuery
Speed up your GWT coding with gQuery
Manuel Carrasco Moñino
 
Vaadin codemotion 2014
Vaadin codemotion 2014Vaadin codemotion 2014
Vaadin codemotion 2014
Manuel Carrasco Moñino
 
GwtQuery the perfect companion for GWT, GWT.create 2013
GwtQuery the perfect companion for GWT,  GWT.create 2013GwtQuery the perfect companion for GWT,  GWT.create 2013
GwtQuery the perfect companion for GWT, GWT.create 2013
Manuel Carrasco Moñino
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
Manuel Carrasco Moñino
 
GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011
Manuel Carrasco Moñino
 
Apache James/Hupa & GWT
Apache James/Hupa & GWTApache James/Hupa & GWT
Apache James/Hupa & GWT
Manuel Carrasco Moñino
 
GWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactoryGWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactory
Manuel Carrasco Moñino
 
Gwt IV -mvp
Gwt IV -mvpGwt IV -mvp
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
Manuel Carrasco Moñino
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
Manuel Carrasco Moñino
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
Manuel Carrasco Moñino
 

More from Manuel Carrasco Moñino (20)

CRUD with Polymer 2.0
CRUD with Polymer 2.0CRUD with Polymer 2.0
CRUD with Polymer 2.0
 
Web Components and PWA
Web Components and PWAWeb Components and PWA
Web Components and PWA
 
Building Components for Business Apps
Building Components for Business AppsBuilding Components for Business Apps
Building Components for Business Apps
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWA
 
Intro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsIntro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin Elements
 
Rock GWT UI's with Polymer Elements
Rock GWT UI's with Polymer ElementsRock GWT UI's with Polymer Elements
Rock GWT UI's with Polymer Elements
 
Introducing GWT Polymer (vaadin)
Introducing GWT Polymer (vaadin)Introducing GWT Polymer (vaadin)
Introducing GWT Polymer (vaadin)
 
Speed up your GWT coding with gQuery
Speed up your GWT coding with gQuerySpeed up your GWT coding with gQuery
Speed up your GWT coding with gQuery
 
Vaadin codemotion 2014
Vaadin codemotion 2014Vaadin codemotion 2014
Vaadin codemotion 2014
 
GwtQuery the perfect companion for GWT, GWT.create 2013
GwtQuery the perfect companion for GWT,  GWT.create 2013GwtQuery the perfect companion for GWT,  GWT.create 2013
GwtQuery the perfect companion for GWT, GWT.create 2013
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011
 
Apache James/Hupa & GWT
Apache James/Hupa & GWTApache James/Hupa & GWT
Apache James/Hupa & GWT
 
GWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactoryGWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactory
 
Mod security
Mod securityMod security
Mod security
 
Gwt IV -mvp
Gwt IV -mvpGwt IV -mvp
Gwt IV -mvp
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
Seguridad en redes de computadores
Seguridad en redes de computadoresSeguridad en redes de computadores
Seguridad en redes de computadores
 

Recently uploaded

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
DianaGray10
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 

Recently uploaded (20)

Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 

Rapid and Reliable Developing with HTML5 & GWT

  • 1. Rapid and Reliable Developing with HTML5 & GWT. Manuel Carrasco Moñino manolo@apache.org http://twitter.com/dodotisMadrid Java User Group 4th Apr 2013
  • 2. About me ● Apache James Project Member Committee ● HUPA ● GWT ● Gquery & Gquery-plugins ● GwtExporter ● GwtUpload ● Chronoscope ● Jenkins ● Performance plugin ● Emma plugin ● Linux ● LXP a light and visual window manager based on icewm
  • 3. Proposal I Move apps from Desktop to Browser: HTML5 + JS
  • 4. RIA → Rich Internet App. Better User Experience: Simple Page Interface.
  • 5. History 1998 - 2002 2002 - 2004 2004 - 2008 2009 - 2012 Some technology demonstrations: desktop.com. There are not commercial products First products developed by pioneers: Backbase, GI, JackBe, Laszlo Systems and Macromedia Boon of AJAX technologies. 2007: Adobe Flex becomes the dominant player in the RIA landscape Companies have a strategic commitment towards RIA and AJAX technologies.
  • 6. Ria Options Browser Player Native XUL Xforms GWT XUL, Flash, WCF OpenLaszlo Java/Swing Xcode/C## Reduced maintenance, any location. Combined benefits of thin and rich client Intuitive UI Inmediate response Thin Client Rich Client HTML Windows, Mac, Android, iOSWeb Rails Php
  • 8. Proposal II HTML5: Desktop, mobile, tablets.
  • 10. HTML5 & JavaScript is everywhere Mobiles have fast and modern Browser run-times
  • 11. HTML5 / JS Develop Html5/Javascript Run Anywhere
  • 13. - JavaScript - Canvas, SVG - Multimedia - Storage: (LocalStorage, IdexedDb, WebSQL) - Local File Access - Ajax, Web Sockets - Mobile in mind Develop local apps: games, contacts, etc What is there in HTML-5?
  • 14. Proposal III Use HTML5 in your mobile native apps: Apache cordova (a.k.a. Phonegap)
  • 15. Apache Cordova (Phonegap) ●A framework for mobile applications that allows developers to implement their projects using standard web technologies: HTML5, CSS3 and Javascript ● It converts them into native applications for different mobile platforms with access to much of the native API.
  • 16. PhoneGap targets Unique Code Base Multiple Targets
  • 18. Project Structure: Android My Application Phonegap Native Engine Phonegap Javascript Engine Eclipse, Java (Lnx, Win, Mac)
  • 19. Project Structure: IOS My Application Phonegap Native Engine Phonegap Javascript Engine Xcode: Objetive C (Mac)
  • 20. Project Structure: IOS My Application Phonegap Native Engine Phonegap Javascript Engine Xcode: Objetive C (Mac)
  • 21. Proposal IV Use a high level language Java: GWT (Google Web Toolkit)
  • 22. Develop in a High Level Language Compile to Javascript
  • 23. Google Web Toolkit GWT's mission is to radically improve the web experience for users by enabling developers to use existing Java tools to build no-compromise AJAX for any modern browser
  • 24. What is GWT? Is a full SDK. Not a Js Framework Not a Js Library Not a new language Not a Web Framework Java to Javascript Compiler, Linker, Optimizer and Obfuscator Produces one 'js' per browser (like c++ one 'exec' per processor)
  • 25. Why Java? ● A high level language allows that the developer doesn't get lost with low level details: DOM, Ajax, Cross-domain, Compression, Obfuscation, Dependencies, Browser tweaks, etc. ● Huge Java ecosystem: IDE, Re-factoring, Debug, Code assist, Maven. ● Metrics, TDD, CI, Reusing (libraries) ● Patterns, Builders … ● Type safe, syntax checking, reduce errors. ● Separate code maintenance from the effectiveness of the executable. ● Normally, the compiler would produce better js code than the code we could write by hand (less code, compressed, obfuscated, remove dead code, etc). ● Developers know java
  • 26. Java Server Side Java Client Side Java Code (IDE) GWT server libs RPC/RF GWT development Debug/Hosted/Test GWT Compiler JRE Emulation Browser libs Widgets Test Runner FF/IE/Ch-Plugin Java HTTP Server J-Byte Code 3ª Party Server libs Browser Any HTTP Server (php, ruby, ...) JavaScript. Bundles (css, sprite). 3ª Party Client libs Toolkit (SDK) JSON/XML/HTML/TXT RPC/RF JSON/XML/HTML/TXT GWT Eclipse Plugin Mobile
  • 27. New with 2.5.0 ● SuperDev Mode ● Source Maps ● Elemental ● Size & Split optimitations ● Closure compiler
  • 28. How looks the code like ? public class Tw implements EntryPoint { public void onModuleLoad() { Label label = new Label("Hello world"); Button button = new Button("Click"); button.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { Window.alert("Hello world"); } }); RootPanel.get().add(label); RootPanel.get().add(button); } }
  • 29. Project Structure Browser: Java → JS Both: Java → [JS or BitCode] Server: Java → BitCode Assets: html, images, css
  • 30. Performance Generates less code. It analyzes the code and includes only necessary for each browser. Implements own managers to prevent 'leaks'. Applications faster and with less tricks HTTP. Eliminates the use wrappers for native functionality of each browser version. Saving the time spent on debugging for each browser, you can spend more time on the application functionality. The development efficiency is the main advantage of GWT. JAVASCRIPT USER DEVELOPER
  • 31. Summary • GWT does not do anything that can be done otherwise, but it makes the action much more productive. • GWT does not attempt to exhibit the virtues of Java, but recognize the pragmatism of existing tools • GWT does not want to forget about DOM, CSS, browser, etc, but abstractions allow writing more productive code than hand writing JS code. • Perhaps someday GWT could compile other languages(Xtend, Scala), or even process annotated JS. • GWT makes possible development of large scale web sites and it opens the possibility of creating new generation of applications reliably.
  • 33. GWT
  • 34. Libraries ● GWT: Core, Compiler, tools, layout, MVP ● GWT-Phonegap: Access mobile HW from your code. ● MGWT: Widgets, Animations, Themes ● GQUERY: fast CSS and DOM tweaks Make your app look native
  • 35. Advantages: Java + Gwt + Cordova ● Maintain just one code base. ● Use one language for all. ● Reuse libraries written in java instead of rewrite them in JS. ● Develop using a browser instead of an emulator. ● Realtime debug. ● Unit testing. ● Everything is open sourced
  • 36. Proposal VI Use a common framework to create visual apps: PlayN
  • 39. PlayN Cross-platform game abstraction library for writing games that compile to: - Desktop Java - HTML5 Browsers - Android - iOS - Flash - More?
  • 41. Why Java - Java ecosystem - Familiar Tools and Libraries - Desktop has Java - Android is Java - GWT is Java
  • 43. The same code for all platforms
  • 45. What is NoSQL? ● not built primarily on tables ● do not use SQL for data manipulation ● optimized for retrieval operations ● reduced run-time flexibility ● no relationships between elements ● cannot necessarily give full ACID (Atomicity, Consistency, Isolation, Durability) guarantees ● Optimized to scale horizontally
  • 46. NoSQL Types ● Document: key-document (couchdb, mongodb, jackrabbit) ● Graph: elements interconnected (DB2) ● KeyValue: not fixed datamodel (Cassandra, Dynamo, BigTable) ● Others: actually each product has its own features (nosql is not a standard).
  • 47. Solutions ● BigTable: Google App Engine ● Proprietary Query Language ● MySQL like layer ● Map-reduce ● Document based: CouchDb ● Ajax Service ● Map-reduce ● KeyValue: Cassandra ● Map-reduce ● API
  • 48. Map-Reduce Parallelism: allows data distribution, increases performance, recovering from partial failures 1- The master divide a complex problem in small problems. 2- Gives them to workers which resolve them in parallel. 3- Finally all responses are reduced to generate the solution.
  • 49. GAE ● Google's cloud solution. ● Runs its own runtime (Java or Python): so consider GAE restrictions and API. ● Integration with Eclipse: really easy to start and deploy a project. ● Free until your app starts consuming a lot of resources. ● Easy to administrate (console) ● 100% scalable. ● Suitable for RIA (Ajax, GWT, PlayN ...)
  • 50. CouchDB ● Light weight database. Developed by Apache in Erlang. ● Json oriented: documents are json, dialog is json. ● Js map-reduce ● HTTP service (not any proprietary protocol) ● Replica/Cluster out-of-the-box ● High performance and scalability ● Web administration Panel ● Ideal for Ajax apps ● Java Api to access it in a JPA like way ● Push to client mechanism
  • 52. Talkwheel ● Talkwheel provides social engagement across mobile and desktop for any brand or personality. ● Its goal is to offer a easy and visual tool for conversations ● About 3 million users using our products ● A San Francisco based startup of 6 people.
  • 54. One CodeBase → Multiple Targets Desktop Embedded Tablets Mobile
  • 55. Real project size SLOC Directory SLOC­by­Language (Sorted) 18067   tw­model        java=17871,xml=128,perl=68 14541   tw­gwt          java=12254,xml=2173,sh=114 3126    tw­playn­core   java=3121,xml=5 12266   tw­admin        java=10274,xml=1992 3731    tw­ios          objc=3731 2708    tw­droid        java=2708 Totals grouped by language (dominant language first): java:         46228 (84.92%) xml:           4298 (7.90%) objc:          3731 (6.85%) sh:             114 (0.21%) perl:            68 (0.12%) Total Physical Source Lines of Code (SLOC)                = 54,439 Development Effort Estimate, Person­Years (Person­Months) = 2.77 (33.24)  (effort model Person­Months = 0.5 * (KSLOC**1.05)) Schedule Estimate, Years (Months)                         = 0.92 (10.98)  (schedule model Months = 2.9 * (person­months**0.38)) Estimated Average Number of Developers (Effort/Schedule)  = 3.03 Total Estimated Cost to Develop                           = $ 374,202  (average salary = $56,286/year, overhead = 2.40).
  • 57. Become an opensource contributor ● Checkout the code. ● Play with it, test it, find bugs. ● Open tickets reporting problems, asking for improvements. ● Attach patches which fix bugs, add new features, improve performance, contribute to readability, etc. Don't forget unit Tests. ● Subscribe to mailing lists, and participate asking and answering questions. ● Committers will appreciate your work and will propose you to be part of the team. ● Other way you can utilize is to propose new projects: Apache incubator, labs, GSOC, etc. Find a mentor or use mailing-lists for that.