SlideShare a Scribd company logo
Vaadin
X @joonaslehtinen
Founder & CEO



Introduction to
Vaadin Framework
User interface
framework for rich
web applications
User Interface
Components
Developer
Productivity
Rich
UX
htmljava
Vaadin Components
Vaadin Components
Vaadin Components
What kind of devices does your app support?
98.1%
3Desktop
browsers
Browsers developers expect to support in 2013
3.5 Browsers to support in 2012
IE 6/7 Safari Opera IE 8
6/7 8
14% 18% 36% 54%
Chrome
9 10
IE 9 IE 10 Firefox
79% 80% 94% 94%
Browsers developers expect to support in 2013
3.5 Browsers to support in 2012
IE 6/7 Safari Opera IE 8
6/7 8
14% 18% 36% 54%
Chrome
9 10
IE 9 IE 10 Firefox
79% 80% 94% 94%
s
your app
support?
25.7%
Phones
36.1%
O
thers2.1%
“Since gw
in
the enterp
explain
why tab
popular than
supp
phones”
Daniel
iPhone
Android
W
P
pplication
UI for
r 98%
of apps
overtaken
the
num
ber
rope.
36.1%
Tablets
“Since
gwt is used
extensi
in
the
enterprise, this m
explain
why tablets
popular than
su
phones”
iPadAndroid
W
indow
s
+
+
How does server-side
UI work, really?
Vaadin Components
• Initial HTML
• CSS (theme)
• Images
• JavaScript
1.2M total

307k
compress
135k
reduced
widgetset
Vaadin Components
• name=”Joonas”
• button clicked
261 bytes

Vaadin Components
• name=”Joonas”
• button clicked
261 bytes
• Add notification
267 bytes

Trends changing
Web Frameworks
Client -
Model View Whatever

Disruptive trend today
Vaadin Components
AngularJS
GWT
??
AngularJS:
Spreadsheet
for HTML
<input type="text"
ng-model="yourName">
<h1>Hello {{yourName}}!</h1>
=SUM(A1:A100)
<input type="text"
ng-model="yourName">
<h1>Hello {{yourName}}!</h1>
=SUM(A1:A100)
Enables
designers
to build
web prototypes
Enables
business people
to build
financial "apps"
"Designed by
a developer"
Design
driven
Developer productivity


Powerful testing
Web Components
The next disruptive trend?
Vaadin Components
<x-gangnam-style>
</x-gangnam-style>
Vaadin Components
??disruptive
Simplification
Reusability
Robustness
Enables
developers & designers
to build UIs that would
otherwise be too hard or
expensive
Component oriented web frameworks
value
proposition
Statically typed Java
Components
Automated Communication
Statically typed Java
Components
Statically typed Java
Automated Communication
Statically typed Java
Vaadin Components
Disruption
Opportunity :)
Vaadin Components
C
</v-grid></v-slider> </v-progress-bar>
Vaadin Components 0.1
<v-grid><v-slider> <v-progress-bar>
Vaadin Components
Vaadin Components
Vaadin Components
Vaadin Components
Vaadin Components
Vaadin Components
Vaadin Components
<v-grid>
Super fast
lazy loading
rendering engine
Mobile friendly
Complex headers and footers
Renderers
Vaadin Labs
• stuff is still experimental
• timeline is not set
Automated Communication
Statically typed Java
Components
Automated Communication
Statically typed Java
Components
Framework
Components web
<v-grid>
Sass API for theme engine
<v-component> / JS API
GWT
API
Java Server
Automatic
communication
API
AngularJS
API
Vaadin Components
<v-absolute-layout id="absoluteLayout">
<v-label id="label" size-auto="true" :top="0px" :left="21px">
<h3>Edit customer</h3>
</v-label>
<v-form-layout id="formLayout" margin="" :top="69px" :right="22px" :left="20px">
<v-text-field caption="First name" id="firstName" width-full="true"></v-text-field>
<v-text-field caption="Last name" id="lastName" width-full="true"></v-text-field>
<v-text-field caption="Email" required="true" id="email"></v-text-field>
<v-popup-date-field caption="Birth day" id="birthDay"></v-popup-date-field>
<v-native-select caption="Status" id="status"></v-native-select>
</v-form-layout>
<v-horizontal-layout spacing="true" id="horizontalLayout" width-full="true"

:right="22px" :bottom="17px" :left="20px">
<v-button style-name="primary" id="save" plain-text="">Save</v-button>
<v-button id="cancel" plain-text="">Cancel</v-button>
<v-button style-name="FontAwesome" id="delete" plain-text="":expand="">!</v-button>
</v-horizontal-layout>
</v-absolute-layout>
design.html Framework
Vaadin Components
Vaadin Components
Vaadin Components
design.html Framework
Designer
design.html Framework
ComponentsDesigner
design.html Framework
ComponentsDesigner
Not if, but when?
Do web components
actually work?
Vaadin Components
HTML Template
Support by browser market share
Custom Elements
Support by browser market share
Shadow DOM
Support by browser market share
HTML Import
Support by browser market share
Summary
Only works in blink
Custom Element
HTML Template
Shadow DOM
HTML Import
CHROME OPERA FIREFOX SAFARI IE
Do web components
actually work?
No, but Yes :)
webcomponents.js
Polyfill
http://webcomponents.org/polyfills/
Web Components
Custom Elements
HTML Imports
Shadow DOM
DOM
WeakMap
Mutation Observers{
Vaadin Components
Timeline
When could you really use web components
With full CSS sandbox (native)
Evergreen browsers (polyfilled)
Old browsers

IE <10, Safari <6, < latest iOS/FF/Chrome/Android
Today Soonish? ∞
Building Web Components
With GWT
<v-grid>

193 files
32 kLOC

17 months

5 persons
No human sacrifices ;)

</v-grid>
Elements.registerElement("v-grid", new WCVGrid());
@JsExport
@JsType
public class WCVGrid extends HTMLElement.Prototype implements LifeCycle.Attached {
private Grid<JsArrayMixed> grid = new Grid<>();
@Override
public void attachedCallback() {
HTMLShadow shadow = createShadowRoot();
shadow.appendChild(style);
shadow.appendChild(container);
Panel shadowPanel = wrapAsWidget(container);
shadowPanel.add(grid);
}
@JsProperty
public void setDataSource(JavaScriptObject jso) {
grid.setDataSource(wrapJsoDataSource(jso));
}
}
Elements.registerElement("v-grid", new WCVGrid());
@JsExport
@JsType
public class WCVGrid extends HTMLElement.Prototype implements LifeCycle.Attached {
private Grid<JsArrayMixed> grid = new Grid<>();
@Override
public void attachedCallback() {
HTMLShadow shadow = createShadowRoot();
shadow.appendChild(style);
shadow.appendChild(container);
Panel shadowPanel = wrapAsWidget(container);
shadowPanel.add(grid);
}
@JsProperty
public void setDataSource(JavaScriptObject jso) {
grid.setDataSource(wrapJsoDataSource(jso));
}
}
Elements.registerElement("v-grid", new WCVGrid());
@JsExport
@JsType
public class WCVGrid extends HTMLElement.Prototype implements LifeCycle.Attached {
private Grid<JsArrayMixed> grid = new Grid<>();
@Override
public void attachedCallback() {
HTMLShadow shadow = createShadowRoot();
shadow.appendChild(style);
shadow.appendChild(container);
Panel shadowPanel = wrapAsWidget(container);
shadowPanel.add(grid);
}
@JsProperty
public void setDataSource(JavaScriptObject jso) {
grid.setDataSource(wrapJsoDataSource(jso));
}
}
Elements.registerElement("v-grid", new WCVGrid());
@JsExport
@JsType
public class WCVGrid extends HTMLElement.Prototype implements LifeCycle.Attached {
private Grid<JsArrayMixed> grid = new Grid<>();
@Override
public void attachedCallback() {
HTMLShadow shadow = createShadowRoot();
shadow.appendChild(style);
shadow.appendChild(container);
Panel shadowPanel = wrapAsWidget(container);
shadowPanel.add(grid);
}
@JsProperty
public void setDataSource(JavaScriptObject jso) {
grid.setDataSource(wrapJsoDataSource(jso));
}
}
Elements.registerElement("v-grid", new WCVGrid());
@JsExport
@JsType
public class WCVGrid extends HTMLElement.Prototype implements LifeCycle.Attached {
private Grid<JsArrayMixed> grid = new Grid<>();
@Override
public void attachedCallback() {
HTMLShadow shadow = createShadowRoot();
shadow.appendChild(style);
shadow.appendChild(container);
Panel shadowPanel = wrapAsWidget(container);
shadowPanel.add(grid);
}
@JsProperty
public void setDataSource(JavaScriptObject jso) {
grid.setDataSource(wrapJsoDataSource(jso));
}
}
Elements.registerElement("v-grid", new WCVGrid());
@JsExport
@JsType
public class WCVGrid extends HTMLElement.Prototype implements LifeCycle.Attached {
private Grid<JsArrayMixed> grid = new Grid<>();
@Override
public void attachedCallback() {
HTMLShadow shadow = createShadowRoot();
shadow.appendChild(style);
shadow.appendChild(container);
Panel shadowPanel = wrapAsWidget(container);
shadowPanel.add(grid);
}
@JsProperty
public void setDataSource(JavaScriptObject jso) {
grid.setDataSource(wrapJsoDataSource(jso));
}
}
<v-grid>
Sass API for theme engine
<v-component> / JS API
GWT
API
Java Server
Automatic
communication
API
AngularJS
API
Autogenerated
<v-grid>
Sass API for theme engine
<v-component> / JS API
AngularJS GWT
API
Java Server
Automatic
communication
API
Polymer
JavaScript
GWT Element
Java
GWT Element
GWT Widget
Java
API
github.com/vaadin/components
Getting started
Designer
Vaadin Labs
vaadin.com/labs
Elements
Vaadin Labs
vaadin.com/labs
Components
Vaadin Labs
vaadin.com/labs
vaadin-components-0.1.0.zip
• vaadin-components.js
• Polymer HTML fies
• GWT API wrappers
• AngularJS support
Read more at http://vaadin.com/labs
experim
ental
Bower vaadin-components
• vaadin-components.js
• Polymer HTML fies
• AngularJS support
Read more at http://vaadin.com/labs
experim
ental
cdn.vaadin.com
• vaadin-components.js
• Polymer HTML fies
• AngularJS support
Read more at http://vaadin.com/labs
experim
ental
vaadin-widgets-7.4.0.jar
• Grid Widget API
• Stable and supported
• Wide browser support
• IE8+
• All the modern ones: FF, Chrome, iOS, Android, …
• Example: https://github.com/Artur-/grid-gwt
Get from http://vaadin.com/downloadbeta or Maven
@joonaslehtinen
Founder & CEO
joonas@vaadin.com
slides
slideshare.com/joonaslehtinen
feel free to reuse :)

More Related Content

PDF
Vaadin Components @ Angular U
PDF
Vaadin Introduction, 7.3 edition
PDF
Vaadin & Web Components
PDF
Vaadin 7.2
PDF
Html5 with Vaadin and Scala
PDF
Web Components for Java Developers
PDF
Vaadin and Spring at Devoxx UK 2015
PPT
Introduction to Vaadin
Vaadin Components @ Angular U
Vaadin Introduction, 7.3 edition
Vaadin & Web Components
Vaadin 7.2
Html5 with Vaadin and Scala
Web Components for Java Developers
Vaadin and Spring at Devoxx UK 2015
Introduction to Vaadin

What's hot (20)

PDF
Introduction to Vaadin
PDF
Vaadin 7 CN
PDF
Vaadin 8 and 10
PDF
Rock Your Web Apps with Vaadin: Coding Serbia 2014
PDF
[FEConf Korea 2017]Angular 컴포넌트 대화법
PDF
GWT integration with Vaadin
PDF
Booting up with polymer
PDF
webcomponents (Jfokus 2015)
PDF
Introduction to React for Frontend Developers
KEY
Wicket 2010
PDF
JavaFX in Action (devoxx'16)
PDF
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
PDF
Vaadin DevDay 2017 - Web Components
PDF
The web - What it has, what it lacks and where it must go - Istanbul
PPTX
Windows Store app using XAML and C#: Enterprise Product Development
PDF
Vaadin Flow - JavaLand 2018
PDF
JavaFX Advanced
PDF
How to Build ToDo App with Vue 3 + TypeScript
PDF
Data binding 入門淺談
PDF
Building and deploying React applications
Introduction to Vaadin
Vaadin 7 CN
Vaadin 8 and 10
Rock Your Web Apps with Vaadin: Coding Serbia 2014
[FEConf Korea 2017]Angular 컴포넌트 대화법
GWT integration with Vaadin
Booting up with polymer
webcomponents (Jfokus 2015)
Introduction to React for Frontend Developers
Wicket 2010
JavaFX in Action (devoxx'16)
Oleh Zasadnyy "Progressive Web Apps: line between web and native apps become ...
Vaadin DevDay 2017 - Web Components
The web - What it has, what it lacks and where it must go - Istanbul
Windows Store app using XAML and C#: Enterprise Product Development
Vaadin Flow - JavaLand 2018
JavaFX Advanced
How to Build ToDo App with Vue 3 + TypeScript
Data binding 入門淺談
Building and deploying React applications
Ad

Similar to Vaadin Components (20)

PPTX
Google app engine by example
PDF
Google Web Toolkit
PDF
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
PDF
Fragments: Why, How, What For?
PDF
Vaadin 7
PDF
Workshop: Building Vaadin add-ons
PDF
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
PDF
Vaadin 7 by Joonas Lehtinen
PDF
AtlasCamp 2015: Connect everywhere - Cloud and Server
KEY
Html5 For Jjugccc2009fall
PDF
After max+phonegap
PDF
混搭移动开发:PhoneGap+JQurey+Dreamweaver
PPTX
06. Android Basic Widget and Container
PDF
PDF
Building Modern Apps using Android Architecture Components
PDF
Going web native
PDF
Front End Development for Back End Java Developers - Jfokus 2020
PPTX
Html5 on Mobile(For Developer)
PPTX
Svcc 2013-d3
PPTX
SVCC 2013 D3.js Presentation (10/05/2013)
Google app engine by example
Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Fragments: Why, How, What For?
Vaadin 7
Workshop: Building Vaadin add-ons
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
Vaadin 7 by Joonas Lehtinen
AtlasCamp 2015: Connect everywhere - Cloud and Server
Html5 For Jjugccc2009fall
After max+phonegap
混搭移动开发:PhoneGap+JQurey+Dreamweaver
06. Android Basic Widget and Container
Building Modern Apps using Android Architecture Components
Going web native
Front End Development for Back End Java Developers - Jfokus 2020
Html5 on Mobile(For Developer)
Svcc 2013-d3
SVCC 2013 D3.js Presentation (10/05/2013)
Ad

More from Joonas Lehtinen (20)

PDF
Hybrid webinar
PDF
Vaadin intro
PDF
Vaadin intro at GWT.create conference
PDF
Hybrid applications
PDF
Notes on architecture
PDF
Vaadin roadmap-devoxx-2013
PDF
Beoynd 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
PDF
Vaadin 7 what next
PDF
Client-Server Hybrid Apps with Vaadin
PDF
Building i pad apps in pure java with vaadin
Hybrid webinar
Vaadin intro
Vaadin intro at GWT.create conference
Hybrid applications
Notes on architecture
Vaadin roadmap-devoxx-2013
Beoynd 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
Vaadin 7 what next
Client-Server Hybrid Apps with Vaadin
Building i pad apps in pure java with vaadin

Recently uploaded (20)

PDF
medical staffing services at VALiNTRY
PDF
How Creative Agencies Leverage Project Management Software.pdf
PPTX
Odoo POS Development Services by CandidRoot Solutions
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
ISO 45001 Occupational Health and Safety Management System
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Transform Your Business with a Software ERP System
PPT
Introduction Database Management System for Course Database
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
PDF
Design an Analysis of Algorithms II-SECS-1021-03
PPTX
Introduction to Artificial Intelligence
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
top salesforce developer skills in 2025.pdf
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Nekopoi APK 2025 free lastest update
PDF
System and Network Administraation Chapter 3
medical staffing services at VALiNTRY
How Creative Agencies Leverage Project Management Software.pdf
Odoo POS Development Services by CandidRoot Solutions
Adobe Illustrator 28.6 Crack My Vision of Vector Design
ISO 45001 Occupational Health and Safety Management System
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Upgrade and Innovation Strategies for SAP ERP Customers
Transform Your Business with a Software ERP System
Introduction Database Management System for Course Database
Softaken Excel to vCard Converter Software.pdf
Audit Checklist Design Aligning with ISO, IATF, and Industry Standards — Omne...
Design an Analysis of Algorithms II-SECS-1021-03
Introduction to Artificial Intelligence
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
top salesforce developer skills in 2025.pdf
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Operating system designcfffgfgggggggvggggggggg
2025 Textile ERP Trends: SAP, Odoo & Oracle
Nekopoi APK 2025 free lastest update
System and Network Administraation Chapter 3

Vaadin Components