SlideShare a Scribd company logo
7

Vaadin
introduction to

@joonaslehtinen
Founder & CEO
Intro to
Vaadin
“Hello world”)
new Label(
New in

7
Getting
started

QA
Vaadin intro at GWT.create conference
User interface
framework for rich
web applications
Sounds like GWT?
Kinda…
Building blocks
Developer
Productivity

Rich
UX
Vaadin intro at GWT.create conference
java

html
123
Key Ideas
1

Rich
Components
User Interface
Data Source
Theme
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
s

3

3.5 Browsers to support in 2012

yo
ur

ap

Desktop
3.5 Browsers to support in 2012
browsers

pp
p
su
lic
pp
at
r 9 io n
or
t?
8% U
I fo
ov of
er ap r
th take ps
e
nu n
ro
pe mb
er
.

36

.1%

6/7
IE 6/7

6/7

Opera

Safari

14%
IE 6/7

14%

Ta
bl
et
s

18%

9

10

36%
36%

18%
Safari

IE 9

79%
79%
9

98.1%

IE 10

80%
80%
10

2.

O

Opera

th

er

Chrome

s

1%
94%

iP
ad
94%
An
3
W dr6
in o.1
do id%
“S
w What kind of devices does yourh app support?
in ince
ex t e gw
s
po plai ent t is
8
ph pul n w erp us
e
r
a
h
IE 9

IE 10

Browsers developers expect to support in 2013

Browsers developers expect to support in 2013

on r
is
d
es tha y ta e, t ex
”
n ble his ten
su ts
m si

Chrome

in

8

54%
54%
IE 8

Firefox

Ph

on
es

94% iPh
A
94%nd one
2
Firefox

inc

e
ex the gw
po plain ente
ph pula wh rp
on r t y t
es ha ab
n
”
su
pp

8
IE 8

“S

W 5 ro
P .7 id
8%

Da

ni

el
350+ add-on
components
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
User Interface
Data Source
Theme
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
User Interface
Data Source
Theme
Vaadin intro at GWT.create conference
InMemory, Bean, Method,
Collection, JDBC, JPA, Hibernate,
TextFile, FileSystem, Properties,
EclipseLink, Lucene, Mockups,
GAE, ...
2

Server + Client
Web application layers

Backend
server

Web
server

Communication

JavaScript
Web application layers

JS

GWT Vaadin

Backend
server

Web
server

Communication

Java to
JavaScript

JavaScript

required

required

optional

optional

optional

required

required

required

required

optional

required

required

required

required
Web application layers

JS

GWT Vaadin

Backend
server

Web
server

Communication

Java to
JavaScript

JavaScript

required

required

optional

optional

optional

required

required

1 layer

required

vs

required

3 layers

-50% codelines
-50% development
required
required
-50% maintenance
easier to learn
required

required

optional
Server-side

Client-side GWT-RPC

Client-side Vaadin-RPC

First name

Last name

Phone number

Table cell

Table cell

Server-side

Email address

Table cell

Offline

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

Table cell

Table cell

Far far away, behind the
far from the countries Vok
Consonantia, there live th
Separated they live in Bo
right at the coast of the S
large language ocean.

Table cell
Edit

First name

Phone number

Delete

New

Last name

Email address

Save

Cancel

A small river named Dude
place and supplies it with
regelialia. It is a paradise
which roasted parts of se
your mouth.

Even the all-powerful Poi
control about the blind tex
almost unorthographic life
however a small line of b
name of Lorem Ipsum de
for the far World of Gram
Oxmox advised her not to
because there were thou
Commas.
Server-side!
(with Vaadin)

Client-side!
(with GWT-RPC)

AddressbookEditor

~270loc

implements

Proxy


0loc

(generated)

Client

ServiceAsync

Server

AddressbookEditor

17loc

~150loc
68loc

RPCServlet

Frontend

equal

Service

implements

Backend

Address

AddressbookBackend

Impl

19loc
How does it work,
really?
Vaadin intro at GWT.create conference
•
•
•
•

Initial HTML
CSS (theme)
Images
JavaScript

!

1.2M total

compress

307k
reduced
widgetset

135k
• name=”Joonas”
• button clicked
!

261 bytes

Vaadin intro at GWT.create conference
• name=”Joonas”
• button clicked
!

261 bytes

• Add notification
!

267 bytes

Development cycle
Vaadin intro at GWT.create conference
Source
https://github.com/vaadin/documentmanager
HOWTO Screencast
https://vaadin.com/learn
3

Embracing
Java
Any language
on JVM
Internet Explorer
Chrome
Firefox
Safari
Opera
iOS
Android
No
browser
plugins
!

Nothing to
install
Servlet
Portlet
(most) clouds
Eclipse
IntelliJ IDEA
Netbeans
Maven
Ant
ŁŁŁ
Vaadin += GWT
1/7
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
Vaadin intro at GWT.create conference
GWT
Compatible
ity

tiv

or

df

ize

tim uc
Op
od
Pr

O

tim
p

fo
ed
iz

e rol
d ont
i C
s

r
e
v
r
e
S

r

tien
Cl
Architecture
Vaadin intro at GWT.create conference
Bleeding
edgE
Renewed
from Inside

JS
Sass
HTML5
+=
GWT

sh

RPC
State

Pu

Complete
stack

UI

Field
vaadin.com/7
Demo

Sass


Syntactically Awesome Stylesheets
JavaScript
Add-ons
Publish API from Java
getPage().getJavaScript().addFunction("myCallback",	
	 new JavaScriptCallback() {	
	 	 public void call(JSONArray arguments) throws JSONException {	
	 	 	 // Do something with the arguments	
	 	 }	
	 });	
	 	

Use from JavaScript
window.myCallback('foo', 100);
Server-side Java API for Widget
!
public class MyWidget extends AbstractJavaScriptComponent {	
	 public MyWidget() {	
	 	 addFunction("plotClick", new JavaScriptFunction() {	
	 	 	 public void call(JSONArray arguments) throws JSONException {	
	 	 	 	 // Do something with the event	
	 	 	 }	
	 	 });	
	 }	
!
	 public static class MyWidgetState extends JavaScriptComponentState {	
	 	 public List<List<List<Double>>> plotSeriesData = 	
	 	 	 	 new ArrayList<List<List<Double>>>();	
	 }	
public MyWidgetState getState() { return (MyWidgetState) super.getState(); }	
!
!
}
Widget implementation in JavaScript
window.com_example_MyWidget = function() {	
	 var element = $(this.getWidgetElement());	
	 	
// Draw a plot for any server-side (plot data) state change	
	 this.onStateChange = function() {	
	 	 $.plot(element, this.getState().series, {grid: {clickable: true}});	
	 }	
!
// Communicate local events back to server-side component	
	 element.bind('plotclick', function(event, point, item) {	
	 	 if (item) {	
	
var onPlotClick = this.getCallback("plotClick");	
	 	 	 onPlotClick(item.seriesIndex, item.dataIndex);	
	 	 }	
	 });	
}
Server Push
@Push MyUI
!
!

<async-supported/>
!
!

vaadin-push dependency
RPC
State
7

Demo

Widget

Connector
client
server

State
RPC

Component
getting
started
Vaadin intro at GWT.create conference
Eclipse

Download plugin
from Martketplace
IntelliJ IDEA

Built-in support
Netbeans

Download plugin
Netbeans Plugin Portal
Maven

mvn archetype:generate
-DarchetypeGroupId=
com.vaadin
-DarchetypeArtifactId=
vaadin-archetype-application
-DarchetypeVersion=
7.1.9
Download for Free
vaadin.com/book

-93-

1970
-1

01

728 pages

PDF, ePub, HTML
Apache
License
community of

~100.000
developers

Ohloh
#2 used
Java Web
Framework
Hybrid Applications
!

Theming Workshop

!

Vaadin Intro Workshop

1:30pm
?

slideshare.com/
joonaslehtinen

joonas@vaadin.com
vaadin.com/joonas
@joonaslehtinen

More Related Content

PPTX
PhoneGap Day 2016 EU: Creating the Ideal Cordova Dev Environment
PDF
Play Framework on Google App Engine - Productivity Stack
PPTX
Memaksimalkan Non-Blocking IO pada Node.js
PPTX
PhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
PPTX
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
PDF
JavaScript Libraries: The Big Picture
PDF
Scale your Magento app with Elastic Beanstalk
PDF
Continuous Integration and Deployment Patterns for Magento
PhoneGap Day 2016 EU: Creating the Ideal Cordova Dev Environment
Play Framework on Google App Engine - Productivity Stack
Memaksimalkan Non-Blocking IO pada Node.js
PhoneGap day 2016 EU: Simulating Cordova Plugins in the Browser
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
JavaScript Libraries: The Big Picture
Scale your Magento app with Elastic Beanstalk
Continuous Integration and Deployment Patterns for Magento

What's hot (20)

PPTX
Cross browser Testing JavaScript
PPT
Behat sauce
PDF
[JavaOne] Demystifying WebSockets - Build a Cool, Real-time Multi-player Game...
PPTX
Decapitating Selenium with JavaScript
PDF
Continuous Development and Deployment: Workflows and Patterns
ODP
iOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
PDF
Midwest PHP 2017 DevOps For Small team
PDF
Chrome Devtools Protocol via Selenium/Appium (Japanese)
PPTX
Intro to JavaScript Tooling in Visual Studio Code
PDF
Vkmdp cologne
PDF
Continuous Integration @ MeetMagento Germany 2015
PDF
Modern Web Application Development Workflow - EclipseCon France 2014
PDF
Mobile Web Test Automation: to the Desktop! - Alexander Bayandin - Mobile Tes...
KEY
HTML5 vs Silverlight
PDF
Put an end to regression with codeception testing
PDF
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
PDF
Getting Started with Dockerization of Selenium Tests Execution - Testwarez 2019
PDF
How to Dockerize Parallel Execution of Selenium Tests - SQA Days EU, Rgia, La...
PDF
Behind story in publisher that developer doesn't know
PDF
Composer at Scale, Release and Dependency Management
Cross browser Testing JavaScript
Behat sauce
[JavaOne] Demystifying WebSockets - Build a Cool, Real-time Multi-player Game...
Decapitating Selenium with JavaScript
Continuous Development and Deployment: Workflows and Patterns
iOS Developers Conference-iOS Automation with Cucumber, Appium and Saucelabs
Midwest PHP 2017 DevOps For Small team
Chrome Devtools Protocol via Selenium/Appium (Japanese)
Intro to JavaScript Tooling in Visual Studio Code
Vkmdp cologne
Continuous Integration @ MeetMagento Germany 2015
Modern Web Application Development Workflow - EclipseCon France 2014
Mobile Web Test Automation: to the Desktop! - Alexander Bayandin - Mobile Tes...
HTML5 vs Silverlight
Put an end to regression with codeception testing
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Getting Started with Dockerization of Selenium Tests Execution - Testwarez 2019
How to Dockerize Parallel Execution of Selenium Tests - SQA Days EU, Rgia, La...
Behind story in publisher that developer doesn't know
Composer at Scale, Release and Dependency Management
Ad

Viewers also liked (20)

PDF
GWT Web Socket and data serialization
PDF
RIA security based on OWASP Top 10
PDF
Gwt create2013 Frankfurt: How we built a million dollar business with GWT
PDF
GWT.create 2013: Introduction to GXT
PDF
Easing offline web application development with GWT
PDF
Comparing GWT Transport Mechanisms
PDF
Client-Server Hybrid Applications with Vaadin
PDF
Building mobile applications with Vaadin TouchKit
PDF
Gwt.Create Keynote San Francisco
PDF
GWT widget development
PPTX
GWT vs CSS3
PDF
Tabular Data Using GWT Cell-based Widgets
PDF
Workshop: Building Vaadin add-ons
PDF
Turducken - Divide and Conquer large GWT apps with multiple teams
PPTX
GWT videocall: power-up your mobile & web app with WebRTC
PDF
GWT.create 2013: Themeing GWT Applications with the Appearance Pattern
PPTX
Taking Your GWT App to Tablets with GXT 4.0
PDF
Rock GWT UI's with Polymer Elements
PDF
GWTcon 2015 - Beyond GWT 3.0 Panic
PPTX
GWTcon 2015 - brad, Brand and Brands
GWT Web Socket and data serialization
RIA security based on OWASP Top 10
Gwt create2013 Frankfurt: How we built a million dollar business with GWT
GWT.create 2013: Introduction to GXT
Easing offline web application development with GWT
Comparing GWT Transport Mechanisms
Client-Server Hybrid Applications with Vaadin
Building mobile applications with Vaadin TouchKit
Gwt.Create Keynote San Francisco
GWT widget development
GWT vs CSS3
Tabular Data Using GWT Cell-based Widgets
Workshop: Building Vaadin add-ons
Turducken - Divide and Conquer large GWT apps with multiple teams
GWT videocall: power-up your mobile & web app with WebRTC
GWT.create 2013: Themeing GWT Applications with the Appearance Pattern
Taking Your GWT App to Tablets with GXT 4.0
Rock GWT UI's with Polymer Elements
GWTcon 2015 - Beyond GWT 3.0 Panic
GWTcon 2015 - brad, Brand and Brands
Ad

Similar to Vaadin intro at GWT.create conference (20)

PDF
Introduction to Vaadin, GWT.create 2015
PDF
Vaadin Introduction, 7.3 edition
PDF
Vaadin intro
PDF
Introduction to Web application development with Vaadin 7.1 - Tzukanov
PDF
Vaadin codemotion2014rome
PDF
Vaadin codemotion 2014
PDF
Introduction to web-application development with Vaadin
PDF
PDF
Rock Your Web Apps with Vaadin: Coding Serbia 2014
PDF
Vaadin Introduction at OOP 2014
PDF
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
PDF
Introduction to Vaadin Framework
PDF
Introduction to-web-application-development-with-vaadin7
PDF
Vaadin 7.2
PDF
Book of-vaadin
PDF
Vaadin 7 by Joonas Lehtinen
PDF
Vaadin 7 CN
PDF
PPT
Introduction to Vaadin
PPTX
Vaadin7 coding ui components
Introduction to Vaadin, GWT.create 2015
Vaadin Introduction, 7.3 edition
Vaadin intro
Introduction to Web application development with Vaadin 7.1 - Tzukanov
Vaadin codemotion2014rome
Vaadin codemotion 2014
Introduction to web-application development with Vaadin
Rock Your Web Apps with Vaadin: Coding Serbia 2014
Vaadin Introduction at OOP 2014
soft-shake.ch - Vaadin - Rich Web Applications in Server-side Java without Pl...
Introduction to Vaadin Framework
Introduction to-web-application-development-with-vaadin7
Vaadin 7.2
Book of-vaadin
Vaadin 7 by Joonas Lehtinen
Vaadin 7 CN
Introduction to Vaadin
Vaadin7 coding ui components

More from Joonas Lehtinen (20)

PDF
Web Components for Java Developers
PDF
Vaadin Components @ Angular U
PDF
Vaadin & Web Components
PDF
Vaadin Components
PDF
Hybrid webinar
PDF
Hybrid applications
PDF
Notes on architecture
PDF
Vaadin roadmap-devoxx-2013
PDF
Beoynd Vaadin 7
PDF
Vaadin 7
PDF
Hackathon - Building vaadin add on components
PDF
PDF
Vaadin today and tomorrow
PDF
Migration from vaadin 6 to vaadin 7 devoxx france 2013
PDF
Vaadin7 modern-web-apps-in-java
PDF
Vaadin 7 Today and Tomorrow
PDF
Vaadin 7
PDF
Desingning reusable web components
PDF
Lecture: Vaadin Overview
PDF
Vaadin 7
Web Components for Java Developers
Vaadin Components @ Angular U
Vaadin & Web Components
Vaadin Components
Hybrid webinar
Hybrid applications
Notes on architecture
Vaadin roadmap-devoxx-2013
Beoynd Vaadin 7
Vaadin 7
Hackathon - Building vaadin add on components
Vaadin today and tomorrow
Migration from vaadin 6 to vaadin 7 devoxx france 2013
Vaadin7 modern-web-apps-in-java
Vaadin 7 Today and Tomorrow
Vaadin 7
Desingning reusable web components
Lecture: Vaadin Overview
Vaadin 7

Recently uploaded (20)

PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPT
Teaching material agriculture food technology
PDF
Network Security Unit 5.pdf for BCA BBA.
PPTX
Cloud computing and distributed systems.
PDF
Electronic commerce courselecture one. Pdf
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
KodekX | Application Modernization Development
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PDF
Approach and Philosophy of On baking technology
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Teaching material agriculture food technology
Network Security Unit 5.pdf for BCA BBA.
Cloud computing and distributed systems.
Electronic commerce courselecture one. Pdf
MYSQL Presentation for SQL database connectivity
Digital-Transformation-Roadmap-for-Companies.pptx
Mobile App Security Testing_ A Comprehensive Guide.pdf
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
20250228 LYD VKU AI Blended-Learning.pptx
The AUB Centre for AI in Media Proposal.docx
NewMind AI Weekly Chronicles - August'25 Week I
KodekX | Application Modernization Development
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Approach and Philosophy of On baking technology
Per capita expenditure prediction using model stacking based on satellite ima...
MIND Revenue Release Quarter 2 2025 Press Release
“AI and Expert System Decision Support & Business Intelligence Systems”
Unlocking AI with Model Context Protocol (MCP)
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...

Vaadin intro at GWT.create conference