14. Used by >100.000 developers
in >150 countries
Building apps for fortune 500,
startups, governments, ...
across all industries
Collaborating by contributing
~300 plug-ins and helping each
other on a forum with ~1500
posts / m
add-ons, mainstream, 7
Backed by 60 person full-time
team in Fi, Us & De
10
12
11
20
20
20
69. HTTP(S)
âUI Componentâ âWidgetâ
⢠Button, Table, ⢠Client-side peer for
Tree, ... the component
⢠Server-side data ⢠Runs on JavaScript
Java Java
⢠Compiled with JDK ⢠Google Web Toolkit
70.
71. Widget
7
Connector
client
State
server
RPC
Component
72. public interface ButtonRpc extends ServerRpc {
public void click(MouseEventDetails details);
}
private ButtonRpc rpc = new ButtonRpc() {
public void click(
private ButtonRpc rpc =
MouseEventDetails details) {
RpcProxy.create(ButtonRpc.class, this);
// do stuff
}
public void onClick(ClickEvent event) {
};
rpc.click(
new MouseEventDetails(event));
public Button() {
}
registerRpc(rpc);
}
client server
80. Publish API from Java
getPage().getJavaScript().addCallback("myCallback",
new JavaScriptCallback() {
public void call(JSONArray arguments) throws JSONException {
// Do something with the arguments
}
});
Use from JavaScript
window.myCallback('foo', 100);
81. 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);
}
});
}
82. Server-side Java API for Widget
public class MyWidget extends AbstractJavaScriptComponent {
public MyWidget() {
registerCallback("plotClick", new JavaScriptCallback() {
public void call(JSONArray arguments) throws JSONException {
// Do something with the event
}
});
}
public static class MyWidgetState extends ComponentState {
public List<List<List<Double>>> plotSeriesData =
new ArrayList<List<List<Double>>>();
// getters & setters
}
}
91. 24% 17% 12%
Business Services Technology Financial and Insurance
9% 9% 8%
Education Healthcare Telecommunication
7% 5% 9%
Industrial Goods Transport Other
92.
93.
94.
95. OSC Enquiry System (TNT)
Logistics
OSC (Operational Service Capabilities) Enquiry provides a single
source for obtaining operational âdoor-to-doorâ service capabilities
for all international and domestic products sold to TNT Express
OSC Enquiry provides POJO software services that can be
integrated into consuming applications to support their service
capability enquiry transactions.
The OSC Enquiry User Interface developed in Vaadin technology
also consumes some of the OSC Enquiry Services required by the
Service Quality users at TNT Express (150 or so).
The UI users are responsible for measuring operational service
performance by comparing actual achieved service against
estimated transit times quoted to customers. Corrective
maintenance actions can then be taken to improve the published
transit times. Comparison of our transit times to our competitorsâ is
also facilitated this way.
https://vaadin.com/showcase/osc-enquiry-system-tnt
96.
97.
98. JavaOne
edition 2012
applications
Download
vaadin.com/dock
world of web
Introducing
Best of clie Vaadin += G
nt and serv
er developm
entWT
Get inspire
Web Applic d by our ca
se studies
Vaadin ation Scala
bility: