vaadin - rich web apps in server-side java without plug-ins or javascript

75
Joonas Lehtinen, PhD Vaadin Ltd - CEO [email protected] Rich Web Applications in Server-side Java without Plug-ins or JavaScript twitter: #vaadin @joonaslehtinen sunnuntaina 13. helmikuuta 2011

Upload: jojule

Post on 07-Dec-2014

10.419 views

Category:

Technology


1 download

DESCRIPTION

Vaadin Framework provides a desktop-like programming model on the server for creating Rich Internet Applications (RIAs) in plain Java - without the need for HTML, XML, plug-ins or JavaScript. In this session, one of the core Vaadin developers lays out the key concepts of the server-side RIA development model and shows how to build an application with Vaadin ground up.

TRANSCRIPT

Page 1: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Joonas Lehtinen, PhDVaadin Ltd - CEO

[email protected]

Rich Web Applications in Server-side Java without

Plug-ins or JavaScripttwitter: #vaadin @

joonaslehtinen

sunnuntaina 13. helmikuuta 2011

Page 2: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 3: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Vaadin is a UI framework

for desktop-like web apps

sunnuntaina 13. helmikuuta 2011

Page 4: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

New configs, taglibs and syntax!?!

JavaScript,DOM, Applet,plugins?

This is Java. Nothing else.{No!

sunnuntaina 13. helmikuuta 2011

Page 5: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

htmljava

sunnuntaina 13. helmikuuta 2011

Page 6: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

healthcare portal, 100 kloc of perl, .. web 1.0, netscape, ie5, ie6, ...

1998

sunnuntaina 13. helmikuuta 2011

Page 7: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

healthcare portal, 100 kloc of perl, .. web 1.0, netscape, ie5, ie6, ... object oriented design, desktop, Java, U and I ...thinking of

sunnuntaina 13. helmikuuta 2011

Page 8: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

object oriented design, desktop, Java, U and I ...thinking of

sunnuntaina 13. helmikuuta 2011

Page 9: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

object oriented design, desktop, Java, U and I ... desktop programming paradigm for web! found

sunnuntaina 13. helmikuuta 2011

Page 10: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

desktop programming paradigm for web! found millstone ajax google web toolkit re-released as

2000

2002

2005

2008

sunnuntaina 13. helmikuuta 2011

Page 11: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

millstone ajax goolge web toolkit re-released as

2009

sunnuntaina 13. helmikuuta 2011

Page 12: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Vaadin is now 21 months young and 10 years old

sunnuntaina 13. helmikuuta 2011

Page 13: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

ApacheLicense

sunnuntaina 13. helmikuuta 2011

Page 14: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Discussion

VaadinBig picture, Extending, Getting started

Server-side RIAWhat is it? Pros & cons?

In practiceCoding a Vaadin application step-by-step

Contents

sunnuntaina 13. helmikuuta 2011

Page 15: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Server-side RIA

sunnuntaina 13. helmikuuta 2011

Page 16: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

“Web 1.0”

DOM

Client Server

ViewHTML Page

over HttpResponse

Controller

Model

Parameters overHttpRequest

DB2

3

4

5

1

sunnuntaina 13. helmikuuta 2011

Page 17: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Client-side RIA

DOM

Client Server

View

Controller

Model

DB2

3

4

5

1

Requested datato view as

XML / JSON

Changes to modelencoded as parameters

sunnuntaina 13. helmikuuta 2011

Page 18: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

challengeweb is

not easy

sunnuntaina 13. helmikuuta 2011

Page 19: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

different featuresin different browsers

sunnuntaina 13. helmikuuta 2011

Page 20: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

different performancein different browsers

sunnuntaina 13. helmikuuta 2011

Page 21: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

different bugsin different browsers

sunnuntaina 13. helmikuuta 2011

Page 22: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Google Web Toolkit

sunnuntaina 13. helmikuuta 2011

Page 23: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Java toJavaScriptCompiler

Subset of

java.lang, java.util

Widgetset

Your Application UI

IE6

IE7

Firefox

Safari

sunnuntaina 13. helmikuuta 2011

Page 24: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

simpler• Java only• forget the web

sunnuntaina 13. helmikuuta 2011

Page 25: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

cost-effective stop debugging JavaScript spaghetti

sunnuntaina 13. helmikuuta 2011

Page 26: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

modular extensible♲

sunnuntaina 13. helmikuuta 2011

Page 27: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Building wonderful apps doesn’t require writing fat web clients.

sunnuntaina 13. helmikuuta 2011

Page 28: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Server-side RIA

DOM

Client Server

ViewHTML Pageover HttpResponse

Controller

Model

Parameters overHttpRequest

DB4

5

6

2

Term

inalAdapter

Term

inalAdapter

Automated bythe RIA framework

3

7

1

9

8

sunnuntaina 13. helmikuuta 2011

Page 29: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Server-side RIA

DOM

Client Server

ViewHTML Pageover HttpResponse

Controller

Model

Parameters overHttpRequest

DB4

5

6

2

Term

inalAdapter

Term

inalAdapter

Automated bythe RIA framework

3

7

1

9

8

Handled by the framework

sunnuntaina 13. helmikuuta 2011

Page 30: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Java

modularextensible

cost-effectiveno JavaScript debugging

simplerforget the web

the benefits of Java

♲sunnuntaina 13. helmikuuta 2011

Page 31: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

even simpler• forget the client-side • synchronous• server resources

sunnuntaina 13. helmikuuta 2011

Page 32: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

more flexible• all Java tools and libraries• any JVM languageScala Groovy

sunnuntaina 13. helmikuuta 2011

Page 33: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

more secure• code stays in server• less web services

sunnuntaina 13. helmikuuta 2011

Page 34: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

not as scalableUI state is stored in the server memory

sunnuntaina 13. helmikuuta 2011

Page 35: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Measured 12.000 active concurrent users per server for a ticketing app

[Amazon EC2-large; limited by storage layer]

sunnuntaina 13. helmikuuta 2011

Page 36: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

no offline modeserver is always required

sunnuntaina 13. helmikuuta 2011

Page 37: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

#1 benefitdevelopmentis really fast

sunnuntaina 13. helmikuuta 2011

Page 38: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Vaadin Framework

sunnuntaina 13. helmikuuta 2011

Page 39: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

1Great UI Components

sunnuntaina 13. helmikuuta 2011

Page 40: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 41: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Combined power of• Server-side RIA• Google Web Toolkit

sunnuntaina 13. helmikuuta 2011

Page 42: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

2Combined power of• Server-side RIA• Google Web Toolkit

sunnuntaina 13. helmikuuta 2011

Page 43: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Vaadin UI component architecture

Java

• Google Web Toolkit

“UI Component”• Button, Table, Tree, ...• Server-side data• Full Java API

“Widget”• Client-side peer for

the component• Runs on JavaScript

HTTP(S)

Java

• Compiled with JDK

sunnuntaina 13. helmikuuta 2011

Page 44: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Creating new UI components is really easy

sunnuntaina 13. helmikuuta 2011

Page 45: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 46: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Implement two classes

Automatic“UI Component”• Define API• Receive client events• Send UI updates

back

Server-side

“Widget”• Render to DOM• Collect user events

Client-side

sunnuntaina 13. helmikuuta 2011

Page 47: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 48: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 49: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 50: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 51: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 52: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 53: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

First classJava citizen

sunnuntaina 13. helmikuuta 2011

Page 54: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

3First classJava citizen

sunnuntaina 13. helmikuuta 2011

Page 55: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

ServletPortlet

App Engine

sunnuntaina 13. helmikuuta 2011

Page 56: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

EclipseMaven

NetbeansSpring Roo

sunnuntaina 13. helmikuuta 2011

Page 57: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

PRODUCTIVITYsunnuntaina 13. helmikuuta 2011

Page 58: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 59: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

persistence setup --provider HIBERNATE--database HYPERSONIC_IN_MEMORY

entity --class ~.domain.Toppingfield string --fieldName name --notNull

entity --class ~.domain.Pizzafield number --fieldName price

--type java.lang.Floatfield set --fieldName toppings

--type ~.domain.Topping

sunnuntaina 13. helmikuuta 2011

Page 60: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 61: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 62: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

vaadin setup --applicationPackage ~.web--baseName PizzaShop--themeName pizza--useJpaContainer false

vaadin generate all --package ~.web.ui --visuallyComposable true

sunnuntaina 13. helmikuuta 2011

Page 63: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 64: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 65: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 66: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 67: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 68: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

field string --class ~.domain.Pizza --notNull --fieldName name --sizeMin 3

sunnuntaina 13. helmikuuta 2011

Page 69: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 70: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

gettingstarted

sunnuntaina 13. helmikuuta 2011

Page 71: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

sunnuntaina 13. helmikuuta 2011

Page 72: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

Vaadin 6.4 Edition

US $24.95

Vaadin is an open source Java framework for building modern web applications that look great, perform well and make you and

your users happy. http://vaadin.com/

2675387895299

ISBN 978-952-92-6753-890000

GET A

FreeCopy

sunnuntaina 13. helmikuuta 2011

Page 73: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

By Marko Grönroos

ABOUT VAADIN

ww

w.d

zone

.co

m

G

et M

ore

Ref

card

z! V

isit

ref

card

z.co

m

#85

Getting Started with VaadinCONTENTS INCLUDE:

About VaadinCreating An ApplicationComponents Layout ComponentsThemesData Binding and more...

Vaadin is a server-side Ajax web application development framework that allows you to build web applications just like with traditional desktop frameworks, such as AWT or Swing. An application is built from user interface components contained hierarchically in layout components.

In the server-driven model, the application code runs on a server, while the actual user interaction is handled by a client-side engine running in the browser. The client-server communications and any client-side technologies, such as HTML and JavaScript, are invisible to the developer. As the client-side engine runs as JavaScript in the browser, there is no need to install plug-ins. Vaadin is released under the Apache License 2.0.

Figure 1: Vaadin Client-Server Architecture

If the built-in selection of components is not enough, you can develop new components with the Google Web Toolkit (GWT)

Figure 2: Architecture for Vaadin Applications

Hot Tip

You can get a reference to the application object from any component attached to the application with

Event ListenersIn the event-driven model, user interaction with user interface components triggers server-side events, which you can handle

Web BrowserClient-Side Engine

JavaWeb Server

VaadinUIComponents

YourJavaApplication

WebService

EJB

DB

Servlet Container

UserApplication

EventListener

DataModel

ApplicationThemes

ApplicationResources

DefaultTheme

FileResources

ExternalResources

Database

DataBinding

Inherits Events Changes

AJAX Requests

Inherits

UIComponent

JavaServlet

ApplicationClass

Web BrowserClient-Side Engine

brought to you by...

sunnuntaina 13. helmikuuta 2011

Page 74: Vaadin -  Rich Web Apps in Server-Side Java without Plug-ins or JavaScript

www.vaadin.comMap Overlay Nov 14, 2009 - Nov 13, 2010

Comparing to: Site

Visits1 102,776

799,821 visits came from 196 countries/territoriesSite Usage

Visits799,821% of Site Total: 100.00%

Pages/Visit5.58Site Avg: 5.58 (0.00%)

Avg. Time on Site00:06:53Site Avg: 00:06:53 (0.00%)

% New Visits34.64%Site Avg: 34.53% (0.32%)

Bounce Rate37.55%Site Avg: 37.55% (0.00%)

Country/Territory Visits Pages/Visit Avg. Time onSite

% New Visits Bounce Rate

United States 102,776 5.49 00:06:41 42.29% 39.51%

Finland 84,139 6.58 00:07:48 18.89% 35.29%

Germany 73,722 5.80 00:06:26 33.97% 38.19%

France 32,840 5.86 00:06:43 37.86% 35.90%

India 30,822 4.48 00:06:35 51.93% 44.48%

United Kingdom 29,735 5.55 00:06:21 33.64% 41.84%

Russia 29,402 6.01 00:07:07 24.38% 33.45%

Italy 27,904 5.96 00:06:36 34.25% 35.30%

Brazil 24,071 5.17 00:07:13 40.93% 35.94%

1 Google Analytics

Ask the[really active, world wide]

Community

Forums with1000 msgs/m

sunnuntaina 13. helmikuuta 2011