SlideShare a Scribd company logo
Remote
controlling Parrot
AR Drone with
Spring Boot &
Vaadin
Peter Lehto
@peter_lehto
expert & trainer
Vaadin
&
GWT
Spring Boot
Vaadin Spring
integration
QA
Drone
Getting

started
Server driven UI
framework with
GWT based thin
client
Full stack
Java
WHY?
Not everybody
loves JavaScript
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
> var foo = [0];
> foo == !foo;
> var foo = [0];
> foo == !foo;
> true
> [] + [];
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> [object Object]
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> [object Object]
> {} + [];
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> [object Object]
> {} + [];
> 0
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> [object Object]
> {} + [];
> 0
> {} + {};> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> [object Object]
> {} + [];
> 0
> {} + {};
> NaN
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> [object Object]
> {} + [];
> 0
> {} + {};
> NaN
> NaN == NaN;
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> [object Object]
> {} + [];
> 0
> {} + {};
> NaN
> NaN == NaN;
> false
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> [object Object]
> {} + [];
> 0
> {} + {};
> NaN
> NaN == NaN;
> false
> typeof NaN;
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> [object Object]
> {} + [];
> 0
> {} + {};
> NaN
> NaN == NaN;
> false
> typeof NaN;
> number
> var foo = [0];
> foo == !foo;
> true
> [] + [];
>
> [] + {};
> [object Object]
> {} + [];
> 0
> {} + {};
> NaN
> NaN == NaN;
> false
> typeof NaN;
> number
> var foo = [0];
> foo == !foo;
> true
HOW?
Backend
Server
UI Backend
Server
Browser
UI Backend
Server
Widgets Components
Theme
Browser
UI Backend
Server
Widgets Components
Theme
Browser
UI Backend
Server
Widgets Components
Shared State

RPC
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
GWT
GWT
Write client-side part with Java
GWT
Write client-side part with Java
Java -> JavaScript optimizing compiler
GWT
Write client-side part with Java
Java -> JavaScript optimizing compiler
JavaScript generated DOM
GWT
Write client-side part with Java
Java -> JavaScript optimizing compiler
JavaScript generated DOM
Browser specific Widgetset
GWT
Write client-side part with Java
Java -> JavaScript optimizing compiler
JavaScript generated DOM
Browser specific Widgetset
No browser differences
GWT
Write client-side part with Java
Java -> JavaScript optimizing compiler
JavaScript generated DOM
Browser specific Widgetset
No browser differences
No browser plugins
GWT
Write client-side part with Java
Java -> JavaScript optimizing compiler
JavaScript generated DOM
Browser specific Widgetset
No browser differences
No browser plugins
Look’n’feel with CSS theme
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Vaadin
Vaadin
Server-side = runs in JVM
Vaadin
Server-side = runs in JVM
Component based development model
Vaadin
Server-side = runs in JVM
Component based development model
Events for interaction
Vaadin
Server-side = runs in JVM
Component based development model
Events for interaction
Transparent communication
Vaadin
Server-side = runs in JVM
Component based development model
Events for interaction
Transparent communication
Secure
Vaadin
Server-side = runs in JVM
Component based development model
Events for interaction
Transparent communication
Secure
No need for JavaScript / HTML
Vaadin
Server-side = runs in JVM
Component based development model
Events for interaction
Transparent communication
Secure
No need for JavaScript / HTML
Precompiled Widgetset
Vaadin
Server-side = runs in JVM
Component based development model
Events for interaction
Transparent communication
Secure
No need for JavaScript / HTML
Precompiled Widgetset
How will
Vaadin

help?
Developer
Productivity
Rich
UX
User Interface
Components
User Interface
Components
How does Vaadin work, really?
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
JogDial jogDial = new JogDial(Size.MEDIUM);
TextField x = new TextField();
TextField y = new TextField();
JogDial jogDial = new JogDial(Size.MEDIUM);
TextField x = new TextField();
TextField y = new TextField();
jogDial.addMoveListener(e -> {
x.setValue(e.getX());
y.setValue(e.getY());
});
JogDial jogDial = new JogDial(Size.MEDIUM);
TextField x = new TextField();
TextField y = new TextField();
jogDial.addMoveListener(e -> {
x.setValue(e.getX());
y.setValue(e.getY());
});
layout.addComponents(x, y, jogDial);
β€’ Loader page
β€’ CSS Theme
β€’ Images
β€’ JavaScript
β€’ Loader page
β€’ CSS Theme
β€’ Images
β€’ JavaScript
135k
Compressed &
reduced
Thin client
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
β€’ jogDialMoved(-0.5,0.5)
314 bytes

JogDial jogDial = new JogDial(Size.MEDIUM);
TextField x = new TextField();
TextField y = new TextField();
jogDial.addMoveListener(e -> {
x.setValue(e.getX());
y.setValue(e.getY());
});
layout.addComponents(x, y, jogDial);
β€’ moveCap(-0.5,0.5)
β€’ x.value=-0.5
y.value=0.5
351 bytes

β€’ jogDialMoved(-0.5,0.5)
314
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Spring Framework
Dependency injection
Beans
Spring MVC web applications and
RESTful web services
Data access, messaging and more.
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Spring Data
Spring Data
Spring Boot
Spring Data
Spring Boot
And much more…
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Single point of focus
Single point of focus
A tool for getting started quickly
Single point of focus
A tool for getting started quickly
Easily customizable
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Maven POM hierarchy
Maven POM hierarchy
Annotation based configuration
Maven POM hierarchy
Annotation based configuration
Embedded web server
Spring Demo
Approx 5 minutes.
Vaadin Spring integration
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-spring-boot-starter</artifactId>
<version>1.0.0.beta3</version>
</dependency>
</dependencies>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-spring-boot-starter</artifactId>
<version>1.0.0.beta3</version>
</dependency>
</dependencies>
ze zeventiger
oren.
ds
Goed, ik ben
+
UI and Views as Spring
managed beans
ze zeventiger
oren.
ds
Goed, ik ben
+
UI and Views as Spring
managed beans
@SpringUI / @SpringView
ze zeventiger
oren.
ds
Goed, ik ben
+
UI and Views as Spring
managed beans
@SpringUI / @SpringView
Scopes
ze zeventiger
oren.
ds
Goed, ik ben
+
UI and Views as Spring
managed beans
@SpringUI / @SpringView
Scopes
@UIScope
ze zeventiger
oren.
ds
Goed, ik ben
+
UI and Views as Spring
managed beans
@SpringUI / @SpringView
Scopes
@UIScope
@ViewScope
ze zeventiger
oren.
ds
Goed, ik ben
+
UI and Views as Spring
managed beans
@SpringUI / @SpringView
Scopes
@UIScope
@ViewScope
@VaadinSessionScope
ze zeventiger
oren.
ds
Goed, ik ben
+
ze zeventiger
oren.
ds
Goed, ik ben
+
Access control
ze zeventiger
oren.
ds
Goed, ik ben
+
Access control
ViewAccessControl
ze zeventiger
oren.
ds
Goed, ik ben
+
Access control
ViewAccessControl
ViewInstanceAccessControl

ze zeventiger
oren.
ds
Goed, ik ben
+
Access control
ViewAccessControl
ViewInstanceAccessControl

Allows mixing Spring MVC and
Vaadin to same β€œnamespace”
ze zeventiger
oren.
ds
Goed, ik ben
+
Access control
ViewAccessControl
ViewInstanceAccessControl

Allows mixing Spring MVC and
Vaadin to same β€œnamespace”
Automatic with Spring Boot
ze zeventiger
oren.
ds
Goed, ik ben
+
ze zeventiger
oren.
ds
Goed, ik ben
+
Vaadin Spring Boot addon
performs autoconfiguration
ze zeventiger
oren.
ds
Goed, ik ben
+
Vaadin Spring Boot addon
performs autoconfiguration
VaadinServletConfigurationProperties
ze zeventiger
oren.
ds
Goed, ik ben
+
Vaadin Spring
Integration
Demo
Approx 10 minutes.
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
@SpringBootApplication
@EnableTouchKitServlet
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args).start();
}
@Bean
DroneTemplate provideTemplate(TaskExecutor taskExecutor,
DroneStateChangeCallback[] callbacks) throws UnknownHostException {
return new DroneTemplate(taskExecutor, callbacks);
}
@Bean
Drone provideDrone() {
return new Drone();
}
}
@SpringBootApplication
@EnableTouchKitServlet
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args).start();
}
@Bean
DroneTemplate provideTemplate(TaskExecutor taskExecutor,
DroneStateChangeCallback[] callbacks) throws UnknownHostException {
return new DroneTemplate(taskExecutor, callbacks);
}
@Bean
Drone provideDrone() {
return new Drone();
}
}
@SpringBootApplication
@EnableTouchKitServlet
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args).start();
}
@Bean
DroneTemplate provideTemplate(TaskExecutor taskExecutor,
DroneStateChangeCallback[] callbacks) throws UnknownHostException {
return new DroneTemplate(taskExecutor, callbacks);
}
@Bean
Drone provideDrone() {
return new Drone();
}
}
@SpringBootApplication
@EnableTouchKitServlet
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args).start();
}
@Bean
DroneTemplate provideTemplate(TaskExecutor taskExecutor,
DroneStateChangeCallback[] callbacks) throws UnknownHostException {
return new DroneTemplate(taskExecutor, callbacks);
}
@Bean
Drone provideDrone() {
return new Drone();
}
}
@TouchKitUI
@Theme("drone")
public class DroneUI extends UI implements InitializingBean, DisposableBean {
@Autowired
private DroneTemplate service;
@Autowired
private ControlPanel controlPanel;
@Autowired
private EventBus eventBus;
@Autowired
private DroneEmergencyDialog emergencyDialog;
@TouchKitUI
@Theme("drone")
public class DroneUI extends UI implements InitializingBean, DisposableBean {
@Autowired
private DroneTemplate service;
@Autowired
private ControlPanel controlPanel;
@Autowired
private EventBus eventBus;
@Autowired
private DroneEmergencyDialog emergencyDialog;
@TouchKitUI
@Theme("drone")
public class DroneUI extends UI implements InitializingBean, DisposableBean {
@Autowired
private DroneTemplate service;
@Autowired
private ControlPanel controlPanel;
@Autowired
private EventBus eventBus;
@Autowired
private DroneEmergencyDialog emergencyDialog;
@TouchKitUI
@Theme("drone")
public class DroneUI extends UI implements InitializingBean, DisposableBean {
@Autowired
private DroneTemplate service;
@Autowired
private ControlPanel controlPanel;
@Autowired
private EventBus eventBus;
@Autowired
private DroneEmergencyDialog emergencyDialog;
@Override
public void afterPropertiesSet() throws Exception {
eventBus.subscribe(this);
}
@EventBusListenerMethod
protected void onEmergencyEvent(DroneEmergencyEvent event) {
this.access(() -> emergencyDialog.show(event.getEmergencyType(), this));
}
@EventBusListenerMethod
protected void onLowBatteryEvent(DroneLowBatteryEvent event) {
this.access(() -> emergencyDialog.show(Emergency.BATTERY, this));
}
@Override
public void destroy() throws Exception {
eventBus.unsubscribe(this);
}
}
@Override
public void afterPropertiesSet() throws Exception {
eventBus.subscribe(this);
}
@EventBusListenerMethod
protected void onEmergencyEvent(DroneEmergencyEvent event) {
this.access(() -> emergencyDialog.show(event.getEmergencyType(), this));
}
@EventBusListenerMethod
protected void onLowBatteryEvent(DroneLowBatteryEvent event) {
this.access(() -> emergencyDialog.show(Emergency.BATTERY, this));
}
@Override
public void destroy() throws Exception {
eventBus.unsubscribe(this);
}
}
Drone App
Architecture
<<WIFI-HOTSPOT>>
192.168.1.1
AR Parrot

Drone
<<WIFI-HOTSPOT>>
192.168.1.1
AR Parrot

Drone

<<JVM>>
<<Embedded-Jetty>>
192.168.1.2
<<WIFI-HOTSPOT>>
192.168.1.1
AR Parrot

Drone

<<JVM>>
<<Embedded-Jetty>>
192.168.1.2
<<Embedded-Jetty>>
192.168.1.2
Vaadin UI

SpringBoot
<<WIFI-HOTSPOT>>
192.168.1.1
AR Parrot

Drone

<<JVM>>
<<Embedded-Jetty>>
192.168.1.2
<<Embedded-Jetty>>
192.168.1.2
Vaadin UI

SpringBoot

<<Browser>>
(localhost /
192.168.1.3)
User
<<VaadinUI>>
DroneUI
<<VaadinUI>>
DroneUI

<<Widget>>
JogDial
<<Widget>>
JogDial
<<Widget>>
Gauge
<<Widget>>
Gauge
<<Widget>>
Gauge
<<VaadinUI>>
DroneUI

<<Widget>>
JogDial
<<Widget>>
JogDial
<<Widget>>
Gauge
<<Widget>>
Gauge
<<Widget>>
Gauge
<<Bean>>
Drone

<<VaadinUI>>
DroneUI

<<Widget>>
JogDial
<<Widget>>
JogDial
<<Widget>>
Gauge
<<Widget>>
Gauge
<<Widget>>
Gauge
<<Bean>>
DroneTemplate

<<Bean>>
Drone

<<VaadinUI>>
DroneUI

<<Widget>>
JogDial
<<Widget>>
JogDial
<<Widget>>
Gauge
<<Widget>>
Gauge
<<Widget>>
Gauge
<<DroneStateCall…>>
UIEventProducer

<<Bean>>
DroneTemplate

<<Bean>>
Drone

<<VaadinUI>>
DroneUI

<<Widget>>
JogDial
<<Widget>>
JogDial
@Component
class UIEventProducer implements DroneStateCallback {
@Autowired
@EventBusScope(EventScope.APPLICATION)
private EventBus eventBus;
@Override
public void onDroneStateChanged(DroneState latestState) {
if (latestState.isEmergency())
eventBus.publish(this, new DroneEmergencyEvent());
if (latestState.isBatteryTooLow())
eventBus.publish(this, new DroneLowBatteryEvent());
eventBus.publish(this, new DroneThetaEvent(this,

latestState.getTheta()));
eventBus.publish(this, new DroneAltitudeEvent(this,

latestState.getAltitude()));
}
}
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Getting
started
Getting
started
Spring Initializr
start.spring.io
Eclipse
Download Vaadin
plugin from
Marketplace
mvn
archetype:generate
-DarchetypeGroupId=
com.vaadin
-DarchetypeArtifactId=
vaadin-archetype-
application
-DarchetypeVersion=
LATEST
Maven
Download for Free
vaadin.com/book
PDF, ePub, HTML
9 789529 319701
ISBN 978-952-93-1970-1
9 789529 319701
ISBN 978-952-93-1970-1
Vol 1
288 pages
Vol 2
434 pages
Lessons learned today
Lessons learned today
1. Drones are super cool!
Lessons learned today
1. Drones are super cool!
2. Vaadin is good for web apps, brings you great productivity
Lessons learned today
1. Drones are super cool!
2. Vaadin is good for web apps, brings you great productivity
3. Boot kickstarts development and helps you all the way
Lessons learned today
1. Drones are super cool!
2. Vaadin is good for web apps, brings you great productivity
3. Boot kickstarts development and helps you all the way
4. Official Vaadin Spring integration is already in Beta
Lessons learned today
1. Drones are super cool!
2. Vaadin is good for web apps, brings you great productivity
3. Boot kickstarts development and helps you all the way
4. Official Vaadin Spring integration is already in Beta
5. β€œVaadin4Spring” will provide additional features
Thank you!
Peter Lehto
@peter_lehto
expert & trainer

More Related Content

PDF
Remote controlling Parrot AR drone with Vaadin & Spring Boot @ GWT.create
PDF
GWT integration with Vaadin
PPTX
Python Code Camp for Professionals 1/4
PPTX
Python Code Camp for Professionals 2/4
PPTX
Python Code Camp for Professionals 3/4
PPTX
Python Code Camp for Professionals 4/4
PDF
Tips and tricks for building api heavy ruby on rails applications
PPTX
Maintainable JavaScript 2012
Remote controlling Parrot AR drone with Vaadin & Spring Boot @ GWT.create
GWT integration with Vaadin
Python Code Camp for Professionals 1/4
Python Code Camp for Professionals 2/4
Python Code Camp for Professionals 3/4
Python Code Camp for Professionals 4/4
Tips and tricks for building api heavy ruby on rails applications
Maintainable JavaScript 2012

What's hot (20)

PDF
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
PDF
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2K
PPTX
An introduction to Vue.js
PDF
async/await in Swift
PPTX
ΰΈͺΰΈ›ΰΈ£ΰΈ΄ΰΈ‡ΰΉ€ΰΈŸΰΈ£ΰΈ‘ΰΉ€ΰΈ§ΰΈ΄ΰΈ£ΰΉŒΰΈ„4.1
PDF
Rails 3: Dashing to the Finish
PDF
Symfony: Your Next Microframework (SymfonyCon 2015)
PDF
Yearning jQuery
PDF
HTML5: where flash isn't needed anymore
PDF
Integrating React.js with PHP projects
PDF
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017
PDF
Is HTML5 Ready? (workshop)
PDF
The report of JavaOne2011 about groovy
PDF
JavaScript & HTML5 - Brave New World
ZIP
Solving Real World Problems with YUI 3: AutoComplete
KEY
Spiffy Applications With JavaScript
PPTX
"Final fsFighting Complex Application State Management with Finite-State Mach...
Β 
PDF
Incremental Type Safety in React Apollo
PDF
Fake My Party
PDF
A Little Backbone For Your App
Realize mais com HTML 5 e CSS 3 - 16 EDTED - RJ
Zepto.js, a jQuery-compatible mobile JavaScript framework in 2K
An introduction to Vue.js
async/await in Swift
ΰΈͺΰΈ›ΰΈ£ΰΈ΄ΰΈ‡ΰΉ€ΰΈŸΰΈ£ΰΈ‘ΰΉ€ΰΈ§ΰΈ΄ΰΈ£ΰΉŒΰΈ„4.1
Rails 3: Dashing to the Finish
Symfony: Your Next Microframework (SymfonyCon 2015)
Yearning jQuery
HTML5: where flash isn't needed anymore
Integrating React.js with PHP projects
The Coolest Symfony Components you’ve never heard of - DrupalCon 2017
Is HTML5 Ready? (workshop)
The report of JavaOne2011 about groovy
JavaScript & HTML5 - Brave New World
Solving Real World Problems with YUI 3: AutoComplete
Spiffy Applications With JavaScript
"Final fsFighting Complex Application State Management with Finite-State Mach...
Β 
Incremental Type Safety in React Apollo
Fake My Party
A Little Backbone For Your App
Ad

Viewers also liked (12)

PDF
Binding business data to vaadin components
PDF
Vaadin 8 with Spring Frameworks AutoConfiguration
PDF
JavaEE with Vaadin - Workshop
PDF
Techlunch - Dependency Injection with Vaadin
PDF
Vaadin 7 - Java Enterprise Edition integration
PDF
Vaadin 8 with Spring Framework
PDF
Building impressive layout systems with vaadin
PDF
Vaadin 8 - Data Binding with Binder
PDF
WebApp controlled Parrot AR Drone with Vaadin and Spring Boot
PDF
Vaadin with Java EE 7
PDF
Monitoring microservices platform
PDF
Vaadin JPAContainer
Binding business data to vaadin components
Vaadin 8 with Spring Frameworks AutoConfiguration
JavaEE with Vaadin - Workshop
Techlunch - Dependency Injection with Vaadin
Vaadin 7 - Java Enterprise Edition integration
Vaadin 8 with Spring Framework
Building impressive layout systems with vaadin
Vaadin 8 - Data Binding with Binder
WebApp controlled Parrot AR Drone with Vaadin and Spring Boot
Vaadin with Java EE 7
Monitoring microservices platform
Vaadin JPAContainer
Ad

Similar to Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15) (20)

PDF
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin -...
PDF
Vaadin7
PDF
Rc085 010d-vaadin7
PDF
Vaadin7
PDF
Vaadin 7 CN
Β 
PDF
Vaadin 7
PDF
Vaadin 7 Today and Tomorrow
PDF
Vaadin today and tomorrow
PDF
Vaadin 7
PDF
Hybrid applications
PDF
Vaadin7 modern-web-apps-in-java
PDF
Vaadin 7
PDF
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
PDF
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
PDF
Web polyglot programming
PDF
Rock Your Web Apps with Vaadin: Coding Serbia 2014
PDF
Vaadin intro at GWT.create conference
PDF
Vaadin 7 by Joonas Lehtinen
PDF
Vaadin & Web Components
PDF
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin -...
Vaadin7
Rc085 010d-vaadin7
Vaadin7
Vaadin 7 CN
Β 
Vaadin 7
Vaadin 7 Today and Tomorrow
Vaadin today and tomorrow
Vaadin 7
Hybrid applications
Vaadin7 modern-web-apps-in-java
Vaadin 7
Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joo...
Vaadin - Rich Web Applications in Server-side Java without Plug-ins or JavaSc...
Web polyglot programming
Rock Your Web Apps with Vaadin: Coding Serbia 2014
Vaadin intro at GWT.create conference
Vaadin 7 by Joonas Lehtinen
Vaadin & Web Components
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto

Recently uploaded (20)

PPTX
Digital Literacy And Online Safety on internet
PPTX
Slides PPTX World Game (s) Eco Economic Epochs.pptx
PDF
The New Creative Director: How AI Tools for Social Media Content Creation Are...
PPTX
E -tech empowerment technologies PowerPoint
PPTX
introduction about ICD -10 & ICD-11 ppt.pptx
PPT
Design_with_Watersergyerge45hrbgre4top (1).ppt
PPTX
SAP Ariba Sourcing PPT for learning material
PDF
Slides PDF The World Game (s) Eco Economic Epochs.pdf
PPTX
Internet___Basics___Styled_ presentation
PDF
SASE Traffic Flow - ZTNA Connector-1.pdf
DOCX
Unit-3 cyber security network security of internet system
PPTX
Introduction to Information and Communication Technology
PPTX
522797556-Unit-2-Temperature-measurement-1-1.pptx
PDF
πŸ’° π”πŠπ“πˆ πŠπ„πŒπ„ππ€ππ†π€π πŠπˆππ„π‘πŸ’πƒ π‡π€π‘πˆ 𝐈𝐍𝐈 πŸπŸŽπŸπŸ“ πŸ’°
Β 
PPTX
Module 1 - Cyber Law and Ethics 101.pptx
PPTX
artificial intelligence overview of it and more
PPTX
international classification of diseases ICD-10 review PPT.pptx
PDF
Decoding a Decade: 10 Years of Applied CTI Discipline
PDF
How to Ensure Data Integrity During Shopify Migration_ Best Practices for Sec...
PPTX
CHE NAA, , b,mn,mblblblbljb jb jlb ,j , ,C PPT.pptx
Digital Literacy And Online Safety on internet
Slides PPTX World Game (s) Eco Economic Epochs.pptx
The New Creative Director: How AI Tools for Social Media Content Creation Are...
E -tech empowerment technologies PowerPoint
introduction about ICD -10 & ICD-11 ppt.pptx
Design_with_Watersergyerge45hrbgre4top (1).ppt
SAP Ariba Sourcing PPT for learning material
Slides PDF The World Game (s) Eco Economic Epochs.pdf
Internet___Basics___Styled_ presentation
SASE Traffic Flow - ZTNA Connector-1.pdf
Unit-3 cyber security network security of internet system
Introduction to Information and Communication Technology
522797556-Unit-2-Temperature-measurement-1-1.pptx
πŸ’° π”πŠπ“πˆ πŠπ„πŒπ„ππ€ππ†π€π πŠπˆππ„π‘πŸ’πƒ π‡π€π‘πˆ 𝐈𝐍𝐈 πŸπŸŽπŸπŸ“ πŸ’°
Β 
Module 1 - Cyber Law and Ethics 101.pptx
artificial intelligence overview of it and more
international classification of diseases ICD-10 review PPT.pptx
Decoding a Decade: 10 Years of Applied CTI Discipline
How to Ensure Data Integrity During Shopify Migration_ Best Practices for Sec...
CHE NAA, , b,mn,mblblblbljb jb jlb ,j , ,C PPT.pptx

Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)