SlideShare a Scribd company logo
Vaadin
7today
@joonaslehtinen
Founder & CEO
Intro to
Vaadin
new Label(“Hello world”)
New in
7
Getting
started
QA
Vaadin7
User interface
framework for rich
web applications
Building blocks
Vaadin7
htmljava
Why on earth?
Vaadin7
expectations
reality
businessconsumer
“million” users “500” users
>>100,000€ / view 5,000€ / view
10 views
1€/user
50 views
500€/user
Challenge
How to build consumer
grade UX with business
system budget
How?
123Key Ideas
1Rich
Components
User Inteface
Data Source
Theme
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin7
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%
es
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
8
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
8
350 add-on
components
Vaadin7
User Inteface
Data Source
Theme
Vaadin7
Vaadin7
Vaadin7
Vaadin7
User Inteface
Data Source
Theme
Vaadin7
Vaadin7
InMemory, Bean, Method,
Collection, JDBC, JPA, Hibernate,
TextFile, FileSystem, Properties,
EclipseLink, Lucene, Mockups,
GAE, ...
2Server + Client
Web application layers
Backend
server
Web
server
Commu-
nication
JavaScript
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
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% codelines
-50% development
-50% maintenance
easier to learn
How does it work,
really?
Vaadin7
• Initial HTML
• CSS (theme)
• Images
• JavaScript
1.2M total
307k
compress
135k
reduced
widgetset
• name=”Joonas”
• button clicked
261 bytes
Vaadin7
• name=”Joonas”
• button clicked
261 bytes
• Add notification
267 bytes
Hello World!
Vaadin7
https://github.com/vaadin/documentmanager
https://vaadin.com/learn
Source
HOWTO Screencast
3Embracing
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
7today
v3
2002
v0.1
2001
Open
Source
v4
2006
Ajax
v5
2007
7
Febv6
2009
934 tickets closed during 16 months of
development
3939 commits made by 23 authors
Oldest ticket created 3/2008
Newest ticket 2/2013
3939 commits made by 23 authors
93 % by 6 persons
> 1 000 000 lines of code touched
Complete
stack
Renewed
from InsideSass
JS
HTML5
+=
GWT
RPC
State
UI
Field
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin7
vaadin.com/7
Favorite picks
7
Vaadin += GWT
1/6
Vaadin7
Vaadin7
Vaadin7
GWT
Compatible
Server-
Client-
side
Optim
izedfor
Productivity
Optim
izedfor
Control
Architecture
Vaadin7
New Windowing API
2/6
Vaadin7
public class Vaadin6App extends Application {
	 public void init() {
	 	 setMainWindow(createWindow());
	 }
	 public Window getWindow(String name) {
	 	 Window window = super.getWindow(name);
	 	 if (window == null) {
	 	 	 window = createWindow();
	 	 	 window.setName(name);
	 	 	 addWindow(window);
	 	 }
	 	 return window;
	 }
	 private Window createWindow() {
	 	 Window window = new Window("Vaadin 6 Application");
	 	 window.addComponent(new TextField("What is your name"));
	 	 window.addComponent(new Button("Do not push me"));
	 	 return window;
	 }
}
@Title("Vaadin 7 Application")
public class HellowUI extends UI {
	 protected void init(VaadinRequest request) {
	 	 setContent(new VerticalLayout(
	 	 	 	 new TextField("What is your name"),
	 	 	 	 new Button("Do not push me")));
	 }
}
@PreserveOnRefresh
@Title("Vaadin 7 Application")
public class HellowUI extends UI {
	 protected void init(VaadinRequest request) {
	 	 setContent(new VerticalLayout(
	 	 	 	 new TextField("What is your name"),
	 	 	 	 new Button("Do not push me")));
	 }
}
Built-in high level
View management
Demo
Sass
Syntactically Awesome Stylesheets
Demo
3/6
Redesigned
Forms
4/6
public class Employee {
	 String firstName;
	 String lastName;
	 double salary;
	 Date birthDate;
// Getters, setters, …
}
Form form = new Form();
form.setItemDataSource(
new BeanItem<Employee>(employee));
6
Vaadin7
Vaadin7
form.setFormFieldFactory(new FormFieldFactory() {
	 	 	 public Field createField(Item item, Object propertyId,
	 	 	 	 	 Component uiContext) {
	 	 	 	 if ("birthDate".equals(propertyId)) {
	 	 	 	 	 DateField df = new DateField();
	 	 	 	 	 df.setResolution(DateField.RESOLUTION_DAY);
	 	 	 	 	 return df;
	 	 	 	 }
// ..
	 	 	 	 return DefaultFieldFactory.createFieldByPropertyType(item
	 	 	 	 	 	 .getItemProperty(propertyId).getType());
	 	 	 }
	 	 });
6
GridLayout form = new GridLayout(2,2) {
	 	 	 TextField firstName = new TextField("First name");
	 	 	 TextField lastName = new TextField("Last name");
	 	 	 TextField salary = new TextField("Salary");
	 	 	 DateField birthDate = new DateField("Birth date");
	 	 	 {
	 	 	 	 birthDate.setResolution(Resolution.DAY);
	 	 	 	 setSpacing(true);
	 	 	 	 addComponent(firstName);
	 	 	 	 addComponent(lastName);
	 	 	 	 addComponent(birthDate);
	 	 	 	 addComponent(salary);
	 	 	 }
	 	 };
	 	 BeanFieldGroup<Employee> fieldGroup = new BeanFieldGroup<Employee>(Employee.class);
	 	 fieldGroup.bindMemberFields(form);
	 	 fieldGroup.setItemDataSource(new BeanItem<Employee>(employee));
7
public class Person {
@Size(min = 5, max = 50)
private String name;
@Min(0)
@Max(100)
private int age;
// + constructor + setters + getters
}
model
presentation
“Joonas Lehtinen”
Component
firstName = “Joonas”
lastName = “Lehtinen”
Demo
RPC
State
5/6
Component
Widget
Paintable
server
client
Variable
Changes
UIDL
6
server
client
Component
Widget
Connector
RPC
7
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
JavaScript
Add-ons
6/6
getPage().getJavaScript().addFunction("myCallback",
	 new JavaScriptCallback() {
	 	 public void call(JSONArray arguments) throws JSONException {
	 	 	 // Do something with the arguments
	 	 }
	 });
	 	
Publish API from Java
window.myCallback('foo', 100);
Use from JavaScript
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(); }
}
Server-side Java API for Widget
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);
	 	 }
	 });
}
Widget implementation in JavaScript
Roadmap
Vaadin Framework 7.1 beta
• Server push
• Based on Atmosphere Framework
• Web sockets, long polling and polling
• Calendar (now under Apache 2.0 license)
• Limited IE 10 support (without pointer events)
• CSS string inject
• Renewed debug console features
◦Redesigned UI/UX for debug window
◦Optimize widgetset
• Arithmetics for SASS
• Packaging SCSS / CSS for add-ons
April
Vaadin Charts 1.1
• New charts:
• Funnel
• Box plot
• Waterfall
• Bubble
• Error bars
• Different coloring of a graph above and below a threshold
• Pinch zooming and panning for touch devices
May
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin7
Vaadin TouchKit 3.0 beta
• Vaadin 7 support
• New components:
• URLField
• Datefield
• Combobox
just
released
Vaadin TestBench 3.1
• Headless mode with
Phantom JS
May
Vaadin CDI
• Registering UI with @CDIUI annotation (web.xml no more)
• Registering Views (to CDIViewManager)
• Decoupling UI:s by injecting UI components (handy for MVP)
• Injecting all the normal Java EE stuff (ejbs, events, ...)
• UI Scope to complement the session scope
• Supports JAAS (set @RolesAllowed for a View, ...)
• 1.0 alpha to be released any day now (in staging repo today)
• Apache 2.0 License
just
released
getting
started
Vaadin7
Eclipse
mvn archetype:generate
-DarchetypeGroupId=com.vaadin
-DarchetypeArtifactId=
vaadin-archetype-application
-DarchetypeVersion=7.0.4
Maven
Migration Guide:
Vaadin 6 to 7
https://vaadin.com/wiki/-/wiki/Main/Migrating
+from+Vaadin+6+to+Vaadin+7
Download for Free
vaadin.com/book
728 pages
701
-93-1970-1
PDF, ePub, HTML
? joonas@vaadin.com
vaadin.com/joonas
@joonaslehtinen
slideshare.com/
joonaslehtinen

More Related Content

PDF
Vaadin 7
PDF
GWT integration with Vaadin
PDF
Windows 8 Training Fundamental - 1
PDF
Vaadin DevDay 2017 - Data Binding in Vaadin 8
PPT
JQuery New Evolution
PDF
Effective Android Data Binding
PDF
Modern Android Architecture
PDF
TDC2017 | São Paulo - Trilha Java EE How we figured out we had a SRE team at ...
Vaadin 7
GWT integration with Vaadin
Windows 8 Training Fundamental - 1
Vaadin DevDay 2017 - Data Binding in Vaadin 8
JQuery New Evolution
Effective Android Data Binding
Modern Android Architecture
TDC2017 | São Paulo - Trilha Java EE How we figured out we had a SRE team at ...

What's hot (20)

PDF
Anton Minashkin Dagger 2 light
PDF
Vaadin 8 with Spring Framework
PPTX
Android data binding
PPT
Backbone.js
PPTX
Bare-knuckle web development
PPTX
Data binding в массы! (1.2)
PPTX
Lowering in C#: What really happens with your code?, from NDC Oslo 2019
PPTX
A (very) opinionated guide to MSBuild and Project Files
PDF
Михаил Анохин "Data binding 2.0"
PDF
"Android Data Binding в массы" Михаил Анохин
PDF
Binding business data to vaadin components
PDF
Data binding в массы!
PDF
Vaadin Flow - JavaLand 2018
PDF
MVVM & Data Binding Library
PDF
Backbone Basics with Examples
PPTX
Test and profile your Windows Phone 8 App
PDF
Data Binding in Action using MVVM pattern
PPTX
SharePoint Conference 2018 - APIs, APIs everywhere!
PPTX
Lviv MDDay 2014. Ігор Коробка “забезпечення базової безпеки в андроїд аплікац...
PDF
Mad Max is back, plus the rest of our new reviews and notable screenings
Anton Minashkin Dagger 2 light
Vaadin 8 with Spring Framework
Android data binding
Backbone.js
Bare-knuckle web development
Data binding в массы! (1.2)
Lowering in C#: What really happens with your code?, from NDC Oslo 2019
A (very) opinionated guide to MSBuild and Project Files
Михаил Анохин "Data binding 2.0"
"Android Data Binding в массы" Михаил Анохин
Binding business data to vaadin components
Data binding в массы!
Vaadin Flow - JavaLand 2018
MVVM & Data Binding Library
Backbone Basics with Examples
Test and profile your Windows Phone 8 App
Data Binding in Action using MVVM pattern
SharePoint Conference 2018 - APIs, APIs everywhere!
Lviv MDDay 2014. Ігор Коробка “забезпечення базової безпеки в андроїд аплікац...
Mad Max is back, plus the rest of our new reviews and notable screenings
Ad

Similar to Vaadin7 (20)

PDF
Vaadin 7 by Joonas Lehtinen
PDF
Vaadin 7 CN
PDF
PDF
Vaadin 7 Today and Tomorrow
PDF
Vaadin today and tomorrow
PDF
Vaadin 7
PDF
Vaadin 7
PDF
Vaadin intro
PDF
Vaadin7 modern-web-apps-in-java
PDF
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
PDF
Rc085 010d-vaadin7
PDF
Building web apps with vaadin 8
PPT
Introduction to Vaadin
PDF
Vaadin intro at GWT.create conference
PDF
Building web apps with Vaadin 8
PDF
Vaadin & Web Components
PDF
Vaadin Components
PDF
Introduction to Web application development with Vaadin 7.1 - Tzukanov
PDF
Vaadin codemotion2014rome
PDF
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Vaadin 7 by Joonas Lehtinen
Vaadin 7 CN
Vaadin 7 Today and Tomorrow
Vaadin today and tomorrow
Vaadin 7
Vaadin 7
Vaadin intro
Vaadin7 modern-web-apps-in-java
JavaCro'14 - Building interactive web applications with Vaadin – Peter Lehto
Rc085 010d-vaadin7
Building web apps with vaadin 8
Introduction to Vaadin
Vaadin intro at GWT.create conference
Building web apps with Vaadin 8
Vaadin & Web Components
Vaadin Components
Introduction to Web application development with Vaadin 7.1 - Tzukanov
Vaadin codemotion2014rome
Remote controlling Parrot AR Drone with Spring Boot & Vaadin (JavaCro15)
Ad

More from Joonas Lehtinen (19)

PDF
Web Components for Java Developers
PDF
Vaadin Components @ Angular U
PDF
Vaadin Introduction, 7.3 edition
PDF
Hybrid webinar
PDF
Vaadin 7.2
PDF
Hybrid applications
PDF
Notes on architecture
PDF
Vaadin roadmap-devoxx-2013
PDF
Beoynd Vaadin 7
PDF
Hackathon - Building vaadin add on components
PDF
Migration from vaadin 6 to vaadin 7 devoxx france 2013
PDF
Desingning reusable web components
PDF
Lecture: Vaadin Overview
PDF
Vaadin 7 what next
PDF
Client-Server Hybrid Apps with Vaadin
PDF
Building i pad apps in pure java with vaadin
PDF
Vaadin += GWT
PDF
Desingning reusable web components
PDF
Html5 with Vaadin and Scala
Web Components for Java Developers
Vaadin Components @ Angular U
Vaadin Introduction, 7.3 edition
Hybrid webinar
Vaadin 7.2
Hybrid applications
Notes on architecture
Vaadin roadmap-devoxx-2013
Beoynd Vaadin 7
Hackathon - Building vaadin add on components
Migration from vaadin 6 to vaadin 7 devoxx france 2013
Desingning reusable web components
Lecture: Vaadin Overview
Vaadin 7 what next
Client-Server Hybrid Apps with Vaadin
Building i pad apps in pure java with vaadin
Vaadin += GWT
Desingning reusable web components
Html5 with Vaadin and Scala

Recently uploaded (20)

DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Cloud computing and distributed systems.
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
Big Data Technologies - Introduction.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Electronic commerce courselecture one. Pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Empathic Computing: Creating Shared Understanding
PDF
Chapter 3 Spatial Domain Image Processing.pdf
The AUB Centre for AI in Media Proposal.docx
MYSQL Presentation for SQL database connectivity
Cloud computing and distributed systems.
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Understanding_Digital_Forensics_Presentation.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Dropbox Q2 2025 Financial Results & Investor Presentation
Big Data Technologies - Introduction.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Electronic commerce courselecture one. Pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Building Integrated photovoltaic BIPV_UPV.pdf
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Diabetes mellitus diagnosis method based random forest with bat algorithm
Mobile App Security Testing_ A Comprehensive Guide.pdf
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Approach and Philosophy of On baking technology
Empathic Computing: Creating Shared Understanding
Chapter 3 Spatial Domain Image Processing.pdf

Vaadin7