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
How to
get
started?
Drone
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
Server driven UI
framework
Developer
Productivity
Rich
UX
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
> 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
UI
Browser
UI
Browser
Widgets
Theme
UI
Browser
Widgets
Theme
UI
Browser
Backend
Server
Widgets
Theme
UI
Browser
Backend
Server
Widgets
Service (GWT-RPC)
Backend
Server
UI Backend
Server
Browser
UI Backend
Server
Widgets Components
Theme
Browser
UI Backend
Server
Widgets Components
Theme
UI
Browser
UI Backend
Server
Widgets Components
Service (GWT-RPC)
User Interface
Components
User Interface
Components
How does Vaadin work, really?
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
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
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
• 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
Server
JogDial
Browser
Server
JogDialWidget
JogDial
Browser
Server
JogDialWidget
JogDialConnector
JogDial
Browser
Server
JogDialWidget
JogDialConnector
SharedState
JogDial
SharedState
Browser
Server
JogDialWidget
JogDialConnector
SharedState
JogDial
SharedState
Browser
Server
JogDialWidget
JogDialConnector
SharedState
JogDial
SharedState
RPC
RPC
Browser
Server
JogDialWidget
JogDialConnector
SharedState
JogDial
SharedState
RPC
RPC
Browser
Server
JogDialWidget
JogDialConnector
SharedState
JogDial
SharedState
RPC
RPC
Browser
Server
JogDialWidget
JogDialConnector
SharedState
JogDial
SharedState
RPC
RPC
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
Single point of focus
Single point of focus
A tool for getting started quickly
Single point of focus
Non-functional requirements
A tool for getting started quickly
Single point of focus
Easily customizable
Non-functional requirements
A tool for getting started quickly
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
Maven POM hierarchy
Maven POM hierarchy
Annotation based configuration
Maven POM hierarchy
Dependencies as @Bean
Annotation based configuration
Maven POM hierarchy
Embedded web server
Dependencies as @Bean
Annotation based configuration
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>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.vaadin.spring</groupId>
<artifactId>spring-boot-vaadin</artifactId>
</dependency>
</dependencies>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.vaadin.spring</groupId>
<artifactId>spring-boot-vaadin</artifactId>
</dependency>
</dependencies>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.3.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.vaadin.spring</groupId>
<artifactId>spring-boot-vaadin</artifactId>
</dependency>
</dependencies>
Vaadin Spring
Integration
Demo
Approx 10 minutes.
ze zeventiger
oren.
ds
Goed, ik ben
+
@SpringUI / @SpringView
ze zeventiger
oren.
ds
Goed, ik ben
+
@SpringUI / @SpringView
@UIScope
ze zeventiger
oren.
ds
Goed, ik ben
+
@SpringUI / @SpringView
@UIScope
ze zeventiger
oren.
ds
Goed, ik ben
+
Spring managed beans
@SpringUI / @SpringView
@UIScope
EventBus for loose coupling
ze zeventiger
oren.
ds
Goed, ik ben
+
Spring managed beans
@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);
}
}
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
<<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 DroneBatteryEvent(this, latestState.getBattery()));
eventBus.publish(this,
new DroneThetaEvent(this, latestState.getTheta()));
eventBus.publish(this,
new DroneAltitudeEvent(this, latestState.getAltitude()));
}
}
@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 DroneBatteryEvent(this, latestState.getBattery()));
eventBus.publish(this,
new DroneThetaEvent(this, latestState.getTheta()));
eventBus.publish(this,
new DroneAltitudeEvent(this, latestState.getAltitude()));
}
}
@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 DroneBatteryEvent(this, latestState.getBattery()));
eventBus.publish(this,
new DroneThetaEvent(this, latestState.getTheta()));
eventBus.publish(this,
new DroneAltitudeEvent(this, latestState.getAltitude()));
}
}
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto
Getting
started
Getting
started
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
Thank you!
Peter Lehto
@peter_lehto
expert & trainer

More Related Content

What's hot (19)

PPTX
Python Code Camp for Professionals 1/4
DEVCON
 
PDF
A Little Backbone For Your App
Luca Mearelli
 
PDF
Fake My Party
Tanja Otto
 
PPTX
What’s new in ECMAScript 6.0
Eyal Vardi
 
PDF
#SPUG - Legacy applications
Piotr Pasich
 
PDF
Managing Mocks
Helen Sherwood-Taylor
 
PDF
OSCON Google App Engine Codelab - July 2010
ikailan
 
PPT
Dojo and Adobe AIR
Nikolai Onken
 
PPTX
Automated release management with team city & octopusdeploy - NDC 2013
Kristoffer Deinoff
 
PDF
Javascript call ObjC
Lin Luxiang
 
PDF
And now you have two problems. Ruby regular expressions for fun and profit by...
Codemotion
 
PDF
How Do I Contribute?
Timothy Sutton
 
PDF
Nativescript angular
Christoffer Noring
 
PPTX
Build Lightweight Web Module
Morgan Cheng
 
PPTX
QA Fest 2019. Saar Rachamim. Developing Tools, While Testing
QAFest
 
PDF
Threads, Queues, and More: Async Programming in iOS
TechWell
 
PDF
Micro app-framework
Michael Dawson
 
ODP
Introduction to Angular js
Mustafa Gamal
 
ODP
Java Boilerplate Busters
HamletDRC
 
Python Code Camp for Professionals 1/4
DEVCON
 
A Little Backbone For Your App
Luca Mearelli
 
Fake My Party
Tanja Otto
 
What’s new in ECMAScript 6.0
Eyal Vardi
 
#SPUG - Legacy applications
Piotr Pasich
 
Managing Mocks
Helen Sherwood-Taylor
 
OSCON Google App Engine Codelab - July 2010
ikailan
 
Dojo and Adobe AIR
Nikolai Onken
 
Automated release management with team city & octopusdeploy - NDC 2013
Kristoffer Deinoff
 
Javascript call ObjC
Lin Luxiang
 
And now you have two problems. Ruby regular expressions for fun and profit by...
Codemotion
 
How Do I Contribute?
Timothy Sutton
 
Nativescript angular
Christoffer Noring
 
Build Lightweight Web Module
Morgan Cheng
 
QA Fest 2019. Saar Rachamim. Developing Tools, While Testing
QAFest
 
Threads, Queues, and More: Async Programming in iOS
TechWell
 
Micro app-framework
Michael Dawson
 
Introduction to Angular js
Mustafa Gamal
 
Java Boilerplate Busters
HamletDRC
 

Viewers also liked (20)

PDF
JavaCro'15 - Is history teaching us that Agile is dead - Roko Roić
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Reactive I/O - Ivan Turčinović
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Internet of things with RPi and Java - Matija Novak, Dragutin Ke...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Java application crashed, now what - Matija Tomašković
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - How to start agile transition - Ivan Krnić
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Managing Java at Scale Security and Compatibility Applications -...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - GWT integration with Vaadin - Peter Lehto
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Service Discovery in OSGi Beyond the JVM using Docker and Consul...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Slick database library - Ivan Senji
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Microservice architecture - Nenad Pečanac
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Java parallelization - Zlatko Sirotić
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - RESTful Web APIs Design - Denis Kranjčec
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Secure Web Services Development - Askar Akhmerov
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - HUJAKing – Expansion of Java Community - Branko Mihaljević, Alek...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'15 - Single mail client for Lotus Domino and MS Exchange with Liferay...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Is history teaching us that Agile is dead - Roko Roić
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Internet of things with RPi and Java - Matija Novak, Dragutin Ke...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Java application crashed, now what - Matija Tomašković
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - How to start agile transition - Ivan Krnić
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Java EE 8 - An instant snapshot - David Delabassee
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Managing Java at Scale Security and Compatibility Applications -...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - GWT integration with Vaadin - Peter Lehto
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Service Discovery in OSGi Beyond the JVM using Docker and Consul...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Slick database library - Ivan Senji
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Microservice architecture - Nenad Pečanac
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Java parallelization - Zlatko Sirotić
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - RESTful Web APIs Design - Denis Kranjčec
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Secure Web Services Development - Askar Akhmerov
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Java Certification – in theory and practice - Branko Mihaljević,...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - HUJAKing – Expansion of Java Community - Branko Mihaljević, Alek...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'15 - Single mail client for Lotus Domino and MS Exchange with Liferay...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Ad

Similar to JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto (20)

PDF
Vaadin 7
Joonas Lehtinen
 
PDF
Vaadin7
Joonas Lehtinen
 
PDF
Vaadin 7
Joonas Lehtinen
 
PDF
Vaadin 7 CN
jojule
 
PDF
Vaadin today and tomorrow
Joonas Lehtinen
 
PDF
Vaadin 7 Today and Tomorrow
Joonas Lehtinen
 
PDF
Vaadin7
Joonas Lehtinen
 
PDF
Vaadin7 modern-web-apps-in-java
Joonas Lehtinen
 
PDF
Rc085 010d-vaadin7
Cosmina Ivan
 
PPTX
Titanium Appcelerator - Beginners
Ambarish Hazarnis
 
PDF
Workshop: Building Vaadin add-ons
Sami Ekblad
 
PDF
Connecting to a Webservice.pdf
ShaiAlmog1
 
PPTX
Android dev toolbox
Shem Magnezi
 
PDF
Creating an Uber Clone - Part XI - Transcript.pdf
ShaiAlmog1
 
PDF
Reaching out from ADF Mobile (ODTUG KScope 2014)
Luc Bors
 
PDF
beyond tellerrand: Mobile Apps with JavaScript – There's More Than Web
Heiko Behrens
 
PDF
Building web apps with vaadin 10
Marcus Hellberg
 
PDF
There's more than web
Matt Evans
 
PDF
mobl
zefhemel
 
PPTX
Lecture android best practices
eleksdev
 
Vaadin 7
Joonas Lehtinen
 
Vaadin 7
Joonas Lehtinen
 
Vaadin 7 CN
jojule
 
Vaadin today and tomorrow
Joonas Lehtinen
 
Vaadin 7 Today and Tomorrow
Joonas Lehtinen
 
Vaadin7 modern-web-apps-in-java
Joonas Lehtinen
 
Rc085 010d-vaadin7
Cosmina Ivan
 
Titanium Appcelerator - Beginners
Ambarish Hazarnis
 
Workshop: Building Vaadin add-ons
Sami Ekblad
 
Connecting to a Webservice.pdf
ShaiAlmog1
 
Android dev toolbox
Shem Magnezi
 
Creating an Uber Clone - Part XI - Transcript.pdf
ShaiAlmog1
 
Reaching out from ADF Mobile (ODTUG KScope 2014)
Luc Bors
 
beyond tellerrand: Mobile Apps with JavaScript – There's More Than Web
Heiko Behrens
 
Building web apps with vaadin 10
Marcus Hellberg
 
There's more than web
Matt Evans
 
mobl
zefhemel
 
Lecture android best practices
eleksdev
 
Ad

More from HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association (20)

PDF
Java cro'21 the best tools for java developers in 2021 - hujak
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PPTX
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PPTX
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PPTX
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - When remote work really works - the secrets behind successful ...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PPTX
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - How can you improve the quality of your application - Ioannis ...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
PDF
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Java cro'21 the best tools for java developers in 2021 - hujak
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'21 - Java is Here To Stay - HUJAK Keynote
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v7 - Behaviour Driven Development with Cucumber - Ivan Lozić
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v7 - The State of Java - Today and Tomowwow - HUJAK's Community Key...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v7 - Learning to Scale Yourself: The Journey from Coder to Leader -...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
JavaCro'19 - The State of Java and Software Development in Croatia - Communit...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Java in Croatia and HUJAK - Branko Mihaljević, Aleksander Radovan
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - On the Aspects of Polyglot Programming and Memory Management i...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Case Study: Marketplace App with Java and Hyperledger Fabric -...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - How to help customers report bugs accurately - Miroslav Čerkez...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - When remote work really works - the secrets behind successful ...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Kotlin-Java Interop - Matej Vidaković
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Spring HATEOAS hypermedia-driven web services, and clients tha...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - End to End Continuous Delivery of Microservices for Kubernetes...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Istio Service Mesh - The magic between your microservices - Ma...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - How can you improve the quality of your application - Ioannis ...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Automation of web apps testing - Hrvoje Ruhek
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Master the Concepts Behind the Java 10 Challenges and Eliminat...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - Building IoT Middleware with Microservices - Mario Kusek
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Javantura v6 - JDK 11 & JDK 12 - Dalibor Topic
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 

Recently uploaded (20)

PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 

JavaCro'15 - Remote controlling Parrot AR Drone with Spring Boot and Vaadin - Peter Lehto