際際滷

際際滷Share a Scribd company logo
HybridApps
@artursignell
VP of R&D
@joonaslehtinen
Founder & CEO
Warning
Just an idea - not a
proven best practice
Hybrid?
Web application layers
Backend
server
Web
server
Commu-
nication
JavaScript
Web application layers
Backend
server
Web
server
Commu-
nication
JavaScript
Client-side UI
Web application layers
Backend
server
Web
server
Commu-
nication
JavaScript
Server-side UI Automated
Web application layers
JavaScript
Java to
JavaScript
Web
server
Backend
server
Commu-
nication
requiredrequired
JS
required required
Web application layers
JavaScript
Java to
JavaScript
Web
server
Backend
server
Commu-
nication
required optionalrequired
GWT
requiredrequired
JS
requiredrequired
required required
Client-side UI
Web application layers
JavaScript
Java to
JavaScript
Web
server
Backend
server
required optional optionalrequired
Commu-
nication
optional
Vaadin
required optionalrequired
GWT
requiredrequired
JS
requiredrequired
required required
Client-side UIServer-side UI &
Web application layers
JavaScript
Java to
JavaScript
Web
server
Backend
server
required optional optionalrequired
Commu-
nication
optional
Vaadin
required optionalrequired
GWT
requiredrequired
JS
requiredrequired
required required
1 layer
vs
3 layers
-50% dev. time
-50% maintenance
vs
full control over DOM
and communications
Server-
Client-
side
Optim
izedfor
Productivity
Optim
izedfor
Control
HybridArchitecture
Hybrid webinar
Hybrid webinar
Hybrid webinar
Hybrid webinar
Hybrid webinar
Hybrid webinar
Hybrid webinar
Server-sideClient-side
Use for
 Of鍖ine!
 Low latency interaction!
 Maximum scalability
Use for
 Most places ( - 50% cost )!
 High security!
 Utilizing full Java platform
Bene鍖ts of the both sides, but adds complexity
Hybrid
Hybrid webinar
http://demo.vaadin.com/parking/
HOW?
Google
http://domain.com
Web Page Title
First name
Table cell
Table cell
Phone number
Table cell
Table cell
Table cell
Table cell
Table cell
Table cell
Table cell
Table cell
Table cell
Table cell
Table cell
Table cell Table cell
Table cell
Last name
Table cell
Table cell
Email address
Table cell
Table cell
Far far away, behind the word mountains,
far from the countries Vokalia and
Consonantia, there live the blind texts.
Separated they live in Bookmarksgrove
right at the coast of the Semantics, a
large language ocean.
A small river named Duden 鍖ows by their
place and supplies it with the necessary
regelialia. It is a paradisematic country, in
which roasted parts of sentences 鍖y into
your mouth.
Even the all-powerful Pointing has no
control about the blind texts it is an
almost unorthographic life One day
however a small line of blind text by the
name of Lorem Ipsum decided to leave
for the far World of Grammar. The Big
Oxmox advised her not to do so,
because there were thousands of bad
Commas.
Server-side
Of鍖ine
Client-side Vaadin-RPC
Client-side GWT-RPC
Server-side
Edit Delete New
Save Cancel
First name Last name
Phone number Email address
https://github.com/jojule/hybrid
AddressbookBackend
Address Impl
AddressbookBackendAddress Impl
Backend
Frontend
Server-side!
(with Vaadin)
Client-side!
(with GWT-RPC)
AddressbookEditor
AddressbookBackendAddress Impl
Backend
Frontend
Server-side!
(with Vaadin)
Client-side!
(with GWT-RPC)
AddressbookEditor
AddressbookEditor
View
Connector
Client
Server
create
place
AddressbookBackendAddress Impl
Backend
Frontend
Server-side!
(with Vaadin)
Client-side!
(with GWT-RPC)
AddressbookEditor
AddressbookEditor
RPCServlet ServiceView
Connector
Client
Server
create
place
implements
AddressbookBackendAddress Impl
Backend
Frontend
Server-side!
(with Vaadin)
Client-side!
(with GWT-RPC)
AddressbookEditor
AddressbookEditor
RPCServlet Service
ServiceAsync
View
Connector
Client
Server
Proxy
(generated)
create
place
implements
implements
equal
Estimating
Complexity
Server-sideClient-side
1 class
!
190 LOC
4 classes
2 interfaces
~ 500 LOC 3X
Vaadin
RPC
State
server
client
Component
Widget
Connector
RPC
State
Demo
public interface ButtonRpc extends ServerRpc {
public void click(MouseEventDetails details);
}
private ButtonRpc rpc =
RpcProxy.create(ButtonRpc.class, this);
!
public void onClick(ClickEvent event) {
rpc.click(
new MouseEventDetails(event));
}
serverclient
private ButtonRpc rpc = new ButtonRpc() {
public void click(
MouseEventDetails details) {
// do stuff
}
};
!
public Button() {
registerRpc(rpc);
}
Demo
AddressbookBackendAddress Impl
Backend
Frontend
Client-side!
(with Conntector)
Client-side!
(with GWT-RPC)
AddressbookEditor
RPCServlet Service
ServiceAsync
View
Client
Server
place
implements
equal
View
place & !
serve
AddressbookEditor
State
Server!
RPC
Client!
RPC
Connector Proxy
(generated)
create
implements
Connector
create
PUSH
Offline
<html manifest="hybrid.appcache">
!
!
<inherits name="com.vaadin.Vaadin" /> 
<entry-point class="example.client.Of鍖ineEntry"/>
!
!
rootPanel.add(new AddressbookEditor());
Offline Bootstrap
CACHE MANIFEST!
!
CACHE:!
of鍖ine.html!
VAADIN/vaadinBootstrap.js!
VAADIN/themes/hybrid/favicon1.ico!
VAADIN/themes/hybrid/styles.css!
VAADIN/widgetsets/ort.nocache.js!
VAADIN/widgetsets/orear.cache.gif!
!
NETWORK:!
*
widgetset
ApplicationConfiguration.onModuleLoad()
Offline Detection
Offline Mode
!
/offline.html
Online Mode
!
/
window.navigator.onLine
redirect
com.google.gwt.storage.client.Storage
!
queueOperation("{"op": "delete", "id": " + id + "}");
Storage.getSessionStorageIfSupported()
.setItem(KEY, pendingCommandsJSON)
!
purgeQueue() 
serverRpc.deleteAddress(id);
Local Storage & Synchronization
When of鍖ine
Back online
AddressbookBackendAddress Impl
Backend
Frontend
Of鍖ine!
(with Conntector)
Client
Server
View
place & !
serve
AddressbookEditor
State
Server!
RPC
Client!
RPC
create Of鍖ineDetector
DataStore
of鍖ine.html
Connector !
!
localStorage
cache manifest
at least 2Xclient-side
> 5X
server-side
 Client-side UI needed as a basis
 Of鍖ine detection
 Of鍖ine bootstrap
 Local storage database
 2-way data synchronization (app speci鍖c)
 Modi鍖cation logs
 Sharding logic
Estimating Complexity
Use Offline
only when really
really needed
State today
Warning
Just an idea - not a
proven best practice
GWT += Server-Side
!
GWT += Push
!
Server-Side += Offline
!
Optimize Server-Side
?
Client-side Widget API
!
Tutorials
!
Unified Themeing
!
Offline Detection
!
Manifest generation
!
https://github.com/jojule/hybrid
Vaadin
TouchKit
? @vaadin
@artursignell
@joonaslehtinen
Ad

Recommended

PPTX
Annotations in Java
Kirill Kulakov
PPTX
Secrets of a Blazor Component Artisan
Ed Charbeneau
PDF
PhoneGap Introduction
Wen-Kai Huang
PDF
Maciej Treder "Server-side rendering with Angularbe faster and more SEO, CDN...
Fwdays
PDF
Some experiences building an Android app with React Native & Redux
Alex Bepple
PPTX
Xamarin workshop
Nguyen Hieu
PDF
Intro To React Native
FITC
PPTX
Xamarin - Beyond the Basics
Prabha Kularathna
PDF
Vaadin
Mariano Galvez
PDF
Vaadin intro at GWT.create conference
Joonas Lehtinen
PDF
Vaadin Components
Joonas Lehtinen
PDF
Vaadin & Web Components
Joonas Lehtinen
PDF
Vaadin Components @ Angular U
Joonas Lehtinen
PDF
Vaadin Introduction, 7.3 edition
Joonas Lehtinen
PDF
JVM Reactive Programming
Domingo Suarez Torres
PDF
Web Components for Java Developers
Joonas Lehtinen
PDF
Hybrid applications
Joonas Lehtinen
PDF
Server-Client Hybrid UI
jojule
PDF
Web polyglot programming
Dmitry Buzdin
PDF
Introduction to Vaadin, GWT.create 2015
hezamu
PDF
Vaadin 7.2
Joonas Lehtinen
PDF
Mlocjs buzdin
Dmitry Buzdin
PDF
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Java User Group Latvia
PDF
Modern Web App Architectures
Raphael Stary
PDF
REST to JavaScript for Better Client-side Development
Hyunghun Cho
PDF
Wakanda - apps.berlin.js - 2012-11-29
Alexandre Morgaut
PDF
Netapp Michael Galpin
rajivmordani
PDF
The Future of Headless
WP Engine
PPTX
dotNetConf2019
Andrea Tosato
PDF
Integrating React.js Into a PHP Application
Andrew Rota

More Related Content

Viewers also liked (8)

PDF
Vaadin
Mariano Galvez
PDF
Vaadin intro at GWT.create conference
Joonas Lehtinen
PDF
Vaadin Components
Joonas Lehtinen
PDF
Vaadin & Web Components
Joonas Lehtinen
PDF
Vaadin Components @ Angular U
Joonas Lehtinen
PDF
Vaadin Introduction, 7.3 edition
Joonas Lehtinen
PDF
JVM Reactive Programming
Domingo Suarez Torres
PDF
Web Components for Java Developers
Joonas Lehtinen
Vaadin intro at GWT.create conference
Joonas Lehtinen
Vaadin Components
Joonas Lehtinen
Vaadin & Web Components
Joonas Lehtinen
Vaadin Components @ Angular U
Joonas Lehtinen
Vaadin Introduction, 7.3 edition
Joonas Lehtinen
JVM Reactive Programming
Domingo Suarez Torres
Web Components for Java Developers
Joonas Lehtinen

Similar to Hybrid webinar (20)

PDF
Hybrid applications
Joonas Lehtinen
PDF
Server-Client Hybrid UI
jojule
PDF
Web polyglot programming
Dmitry Buzdin
PDF
Introduction to Vaadin, GWT.create 2015
hezamu
PDF
Vaadin 7.2
Joonas Lehtinen
PDF
Mlocjs buzdin
Dmitry Buzdin
PDF
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Java User Group Latvia
PDF
Modern Web App Architectures
Raphael Stary
PDF
REST to JavaScript for Better Client-side Development
Hyunghun Cho
PDF
Wakanda - apps.berlin.js - 2012-11-29
Alexandre Morgaut
PDF
Netapp Michael Galpin
rajivmordani
PDF
The Future of Headless
WP Engine
PPTX
dotNetConf2019
Andrea Tosato
PDF
Integrating React.js Into a PHP Application
Andrew Rota
PDF
Continuous Integration and Deployment Best Practices on AWS
Danilo Poccia
PDF
"Running Node.js in your browser with WebContainers", Oleksandr Zinevych
Fwdays
PPT
Gwt Presentation1
rajakumar.tu
PDF
Vaadin and Spring at Devoxx UK 2015
Sami Ekblad
PDF
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Joonas Lehtinen
PDF
Evolving Mobile Architectures
sgleadow
Hybrid applications
Joonas Lehtinen
Server-Client Hybrid UI
jojule
Web polyglot programming
Dmitry Buzdin
Introduction to Vaadin, GWT.create 2015
hezamu
Vaadin 7.2
Joonas Lehtinen
Mlocjs buzdin
Dmitry Buzdin
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Java User Group Latvia
Modern Web App Architectures
Raphael Stary
REST to JavaScript for Better Client-side Development
Hyunghun Cho
Wakanda - apps.berlin.js - 2012-11-29
Alexandre Morgaut
Netapp Michael Galpin
rajivmordani
The Future of Headless
WP Engine
dotNetConf2019
Andrea Tosato
Integrating React.js Into a PHP Application
Andrew Rota
Continuous Integration and Deployment Best Practices on AWS
Danilo Poccia
"Running Node.js in your browser with WebContainers", Oleksandr Zinevych
Fwdays
Gwt Presentation1
rajakumar.tu
Vaadin and Spring at Devoxx UK 2015
Sami Ekblad
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Joonas Lehtinen
Evolving Mobile Architectures
sgleadow
Ad

More from Joonas Lehtinen (20)

PDF
Vaadin intro
Joonas Lehtinen
PDF
Notes on architecture
Joonas Lehtinen
PDF
Vaadin roadmap-devoxx-2013
Joonas Lehtinen
PDF
Beoynd Vaadin 7
Joonas Lehtinen
PDF
Vaadin 7
Joonas Lehtinen
PDF
Vaadin7
Joonas Lehtinen
PDF
Hackathon - Building vaadin add on components
Joonas Lehtinen
PDF
Vaadin7
Joonas Lehtinen
PDF
Vaadin today and tomorrow
Joonas Lehtinen
PDF
Migration from vaadin 6 to vaadin 7 devoxx france 2013
Joonas Lehtinen
PDF
Vaadin7 modern-web-apps-in-java
Joonas Lehtinen
PDF
Vaadin 7 Today and Tomorrow
Joonas Lehtinen
PDF
Vaadin 7
Joonas Lehtinen
PDF
Desingning reusable web components
Joonas Lehtinen
PDF
Lecture: Vaadin Overview
Joonas Lehtinen
PDF
Vaadin 7
Joonas Lehtinen
PDF
Vaadin 7 what next
Joonas Lehtinen
PDF
Client-Server Hybrid Apps with Vaadin
Joonas Lehtinen
PDF
Building i pad apps in pure java with vaadin
Joonas Lehtinen
PDF
Vaadin += GWT
Joonas Lehtinen
Vaadin intro
Joonas Lehtinen
Notes on architecture
Joonas Lehtinen
Vaadin roadmap-devoxx-2013
Joonas Lehtinen
Beoynd Vaadin 7
Joonas Lehtinen
Vaadin 7
Joonas Lehtinen
Vaadin7
Joonas Lehtinen
Hackathon - Building vaadin add on components
Joonas Lehtinen
Vaadin7
Joonas Lehtinen
Vaadin today and tomorrow
Joonas Lehtinen
Migration from vaadin 6 to vaadin 7 devoxx france 2013
Joonas Lehtinen
Vaadin7 modern-web-apps-in-java
Joonas Lehtinen
Vaadin 7 Today and Tomorrow
Joonas Lehtinen
Vaadin 7
Joonas Lehtinen
Desingning reusable web components
Joonas Lehtinen
Lecture: Vaadin Overview
Joonas Lehtinen
Vaadin 7
Joonas Lehtinen
Vaadin 7 what next
Joonas Lehtinen
Client-Server Hybrid Apps with Vaadin
Joonas Lehtinen
Building i pad apps in pure java with vaadin
Joonas Lehtinen
Vaadin += GWT
Joonas Lehtinen
Ad

Hybrid webinar