SlideShare una empresa de Scribd logo
1 de 101
Descargar para leer sin conexión
Rich Web Applications in
Server-side Java without
  Plug-ins or JavaScript
           Joonas Lehtinen, PhD
               Vaadin Ltd - CEO
                   vaadin.com/vaadin

                 @joonaslehtinen
Vaadin is a
UI framework
 for rich web
 applications
java   html
History behind Vaadin
healthcare portal, >100 kloc of perl,
  89
19
web 1.0, netscape, ie5, ie6, ...
thinking of
object oriented design, desktop, Java, U and I ...
desktop programming paradigm for web!
found         millstone ajax google web toolkit
 00




                          08
         02




                    05
20




        20




                   20



                         20
re-released as
       09
      20
Used by >50.000
                       developers in >150
                       countries

                       Building apps for
                       fortune 500, startups,
                       governments, ...
                       across all industries

                       Collaborating by
                       conributing > 200
                       plug-ins and helping
plug-ins, mainstream   each other on a forum
                       with >1500 posts / m
    10




                11




                       Backed by 50+ person
   20




               20




                       full-time team
see our transparent vaadin.com/roadmap
                         12
                        20
Apache
License
Contents

Server-side                                        Discussion
RIA
What is it? Pros & cons?



                           Vaadin
                           Technology, Features, Getting started
In practice
Coding a Vaadin
application step-by-step
Server-side RIA
“Web 1.0”

Client           5
                                      Server
            HTML Page
DOM      over HttpResponse     View                4


                                                        3
                                          Model

           Parameters over
            HttpRequest
                             Controller
                                               2
                                                       DB
                 1
client-side ria

fat client
Client-side RIA

Client                 4                     Server
                 Requested data
  View             to view as
                  XML / JSON
       5

  DOM                                Model
                                                 3
       1

               Changes to model
Controller   encoded as parameters
                                                      DB
                       2
challenge
  web is
not easy
Refactoring?



                            Compile-
Automated
API docs?   weak typing       time
                            checking?


                Code
             completion?
> 1 developers
                     +
JavaScript
facilitated    weak typing
spaghetti            +
               > 10k SLOC
performance
       browsers
          are      bugs
       different


     features
Google Web Toolkit
Subset of                       IE6
java.lang, java.util

                         Java to     IE7
    Widgetset          JavaScript
                        Compiler
                                    Firefox

Your Application UI                 Safari
simpler
• 100% Java
• Static typing
• Object oriented
• Excellent tooling
less bugs
• Stop debugging
  JavaScript spaghetti
• Ignore most
  browser differences
client-side
• UI in client
• Asyncronous RPC
• Services (for UI)
Building wonderful
apps doesn’t
require writing fat
web clients.
server-side ria

thin client
Server-side RIA

    Client                              8
                                                                                Server
          9                                                            7
              TerminalAdapter




                                                     TerminalAdapter
                                   HTML Page
                                over HttpResponse                            View            6


                                   Automated by                                                   5
    DOM                          the RIA framework                                      Model

Handled by the framework         Parameters over
                                  HttpRequest                              Controller
          1                                                                              4
                                                                       3                         DB
                                        2
High level
              simpler
              • 100% Java
Strong        • Strong typing
              • Object oriented
programming   • Excellent tooling
model

              less bugs
              • No JavaScript debugging
              • Ignore browsers
server enviroment
• Access any library
• Use any language
• Runtime is not
  limited by browser
• Trusted
• Well defined
simplified
communications
• No RPC layer
• No services (for UI)
• Synchronous
• Direct access to
  server API
secure
• Code stays in server
• No services (for UI)
• Predictable runtime
not as scalable
UI state is stored in
the server memory
Measured 12.000
  active concurrent
  users per server
  for a ticketing app
* Amazon EC2-large; 20.622 Ajax requests /
minute peak; limited by storage layer
no offline mode
connection to server
is always required
#1 benefit
development
 is really fast
2 Java class files
~ 50 LOC + imports
no HTML
no CSS
no JavaScript
no Cut-n-Paste
https://github.com/
jojule/DocumentManager
Vaadin
Framework
Developer
        experience
goals   User
        expecience
        Scalability
123
 ideas
1
amazing
components
User Inteface
Data Source
   Theme
User Inteface
Data Source
   Theme
Reindeer
  Runo
Chameleon
 Custom
User Inteface
Data Source
   Theme
InMemory, Bean, Method,
Collection, JDBC, JPA,
Hibernate, TextFile,
FileSystem, Properties,
EclipseLink, Lucene,
Mockups, GAE, ... Your’s
example

SQLContainer
Table
or any other UI component


SQLContainer


FreeformQuery

      JDBC

       SELECT * FROM ...
connectionPool =
   new SimpleJDBCConnectionPool(
      "org.hsqldb.jdbc.JDBCDriver",
      "jdbc:hsqldb:mem:sqlcontainer",
      "password", "", 2, 2);
SQLContainer container =
   new SQLContainer(
      new FreeformQuery(
        "SELECT * FROM people",
        Arrays.asList("ID"),
        connectionPool));
Table table = new Table(null, container);
Table
or any other UI component


SQLContainer


TableQuery

      JDBC

        Database Table
• lazy loading
• advanced filtering
• sorting
• connection pooling
• transactions
• optimistic locking
• autocommit mode
• HSQLDB
• MySQL
• PostgreSQL
• Oracle
• MS SQL Server
2
combine power of
• Server-side RIA
• Google Web Toolkit
Layers of abstraction
                   backend frontend
                                                  RPC         browser browser
                    server   server
                   any language   any language   json / xml     java   ➠   javascript
ExtJS GWT Vaadin




                   required       required       optional     optional     optional


                   required       required       required     required     optional


                   required       required       required        X         required
How does it
work, really?
•   Initial HTML
•   CSS (theme)
•   Images
•   JavaScript

830k total
       compress

250k
       reduced
       widgetset

120k
• name=”Joonas”
• button clicked
150 bytes
• name=”Joonas”
• button clicked
150 bytes



• Add
  notification
466 bytes
Vaadin UI component
architecture
                             HTTP(S)
“UI Component”                         “Widget”
• Button, Table, Tree, ...             • Client-side peer for
• Server-side data                       the component
• Full Java API                        • Runs on JavaScript




  Java                                  Java

  • Compiled with JDK                   • Google Web Toolkit
Creating new UI
components is
really easy
Implement two classes

Server-side                            Client-side

 “UI Component”            Automatic    “Widget”
 • Define API                            • Render to DOM
 • Receive client events                • Collect user events
 • Send UI updates
   back
Vaadin += GWT
GWT
Compatible
Serve
         ucr-od
              ize
                    Pr
                    tim
                       Op

                                             f or
                                        ed
      tiv
                                     iz
            df
        or
ity
                                  tim
                               e rol
                                Op
                                  t-


                            s d ont
                             i C
                               ien
                             Cl
Client
        Co
              Op

      -     im   t
     ntr
                                       f or
ol    ize
  df
                             iz   ed          iv ity
or
                          tim          c t
                 sid
                        Op
                                 u
                               od
                          r-
                    e
                         P   r
                       rve
                     Se
Commercial
Support
3
embrace
java
Any JVM
Language
Scalawith Scaladin add-on
val layout =
  new VerticalLayout(width = 100 pct, height = 100 pct) {
      add(new Label(content = "Persons"))
      add(new Table(width = 100 pct, height = 100 pct),
          ratio = 1)
      add(new HorizontalLayout(spacing = true) {
          add(new Button("Edit selected", _ => editClicked()))
          add(new Button("Add new", _ => addNewClicked()))
       })
  }
getMainWindow.setContent(layout)
Internet Explorer
6..
         Chrome
          Firefox
           Safari
           Opera
             iOS
         Android
No
  browser
   plugins
Nothing to
    install
Servlet
      Portlet
(most) clouds
Apache Tomcat, version 4.1 or later
Oracle WebLogic Server, version 9.2 or later
Oracle WebLogic Portal, version 10gR3
IBM WebSphere Application Server, version 6.1 or later
IBM WebSphere Portal, version 6.1 and 7.0
JBoss Application Server, version 3.2.8 or later
Jetty, version 5 or later
Glassfish, version 2 or later
Liferay Portal 5.2 or later
GateIn Portal 3.1
eXo Platform 3
Google App Engine
Vaadin supports Java Servlet API 2.3
 and JSR-168 and JSR-286 Portlet
Specifications and should work with
any Java application server that conforms
to these standards.
Eclipse
IntelliJ IDEA
   Netbeans
       Maven
           Ant
 Spring Roo
            ∙∙∙
Maven
 mvn archetype:generate
 -DarchetypeGroupId=com.vaadin
 -DarchetypeArtifactId=
   vaadin-archetype-clean

 mvn package          yourproject-1.0.war
getting
started
vaadin.com/download
vaadin.com/comparison
Download for Free
          vaadin.com/book




     Vaadin is
                a
    for build n open source
              ing mod        J
   look gre          ern web ava framework
             at,            applicat
   your use perform well a           ion
             rs happ        nd make s that
                    y.                you and
    http://va
             adin.com
                     /



SBN 978
        -9   52-92-67
                     53-8
                            90000

9 7 8 95 2
           9    267538
 $29.95




                                                4th Editio
                                                          n




          674 pages
brought to you by...
#85
 Get More Refcardz! Visit refcardz.com


                                         CONTENTS INCLUDE:
                                         About Vaadin


                                                                                   Getting Started with Vaadin
                                         Creating An Application
                                         Components
                                         Layout Components
                                         Themes
                                         Data Binding and more...
                                                                                                                                                            By Marko Grönroos

                                              ABOUT VAADIN                                                         Web
                                                                                                                   Browser                                                              External
                                                                                                                   Client-Side                                                          Resources
                                          Vaadin is a server-side Ajax web application development                 Engine
                                          framework that allows you to build web applications just like                     AJAX Requests

                                          with traditional desktop frameworks, such as AWT or Swing. An                                         Servlet Container
                                                                                                                   Java                                                                 File
                                          application is built from user interface components contained            Servlet                                                              Resources
                                          hierarchically in layout components.
                                                                                                                                                        Data
                                          In the server-driven model, the application code runs on                 Application            UI            Binding     Default
                                                                                                                   Class                  Component                 Theme
                                          a server, while the actual user interaction is handled by a
                                          client-side engine running in the browser. The client-server           Inherits        Events     Changes               Inherits

                                          communications and any client-side technologies, such as                 User             Event        Data              Application   Application
                                          HTML and JavaScript, are invisible to the developer. As the              Application      Listener     Model             Themes        Resources
                                          client-side engine runs as JavaScript in the browser, there is no
                                          need to install plug-ins. Vaadin is released under the Apache                                            Database
                                          License 2.0.
                                           Web             Java         Vaadin          Your             Web    Figure 2: Architecture for Vaadin Applications
                                           Browser         Web          UI              Java          Service
                                           Client-Side     Server       Components      Application
                                                                                                                                  You can get a reference to the application object
 .dzone.com




                                           Engine                                                        EJB          Hot
                                                                                                                      Tip         from any component attached to the application with
                                                                                                          DB

                                                                                                                Event Listeners
                                          Figure 1: Vaadin Client-Server Architecture
                                                                                                                In the event-driven model, user interaction with user interface
                                          If the built-in selection of components is not enough, you can
                                                                                                                components triggers server-side events, which you can handle
Questions?
Comments?


joonas@vaadin.com
  vaadin.com/joonas
    @joonaslehtinen
            #vaadin    Expert services
                                       Better
                       Online support
                                       Results
                              Training
 Slides available on                   Faster
         slideshare             Tools

                              vaadin.com/pro

Más contenido relacionado

La actualidad más candente

Java keynote preso
Java keynote presoJava keynote preso
Java keynote presoArtur Alves
 
Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platformAlfresco Software
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 RecipesJosh Juneau
 
[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration[English version] JavaFX and Web Integration
[English version] JavaFX and Web IntegrationKazuchika Sekiya
 
Java EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJava EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJosh Juneau
 
Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DayTechMaster Vietnam
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6Bert Ertman
 
Ajax World Oct2008 Jrd
Ajax World Oct2008 JrdAjax World Oct2008 Jrd
Ajax World Oct2008 Jrdrajivmordani
 
Egl Rui Ajax World
Egl Rui Ajax WorldEgl Rui Ajax World
Egl Rui Ajax Worldrajivmordani
 
Introducing WebLogic 12c OTN Tour 2012
Introducing WebLogic 12c OTN Tour 2012Introducing WebLogic 12c OTN Tour 2012
Introducing WebLogic 12c OTN Tour 2012Bruno Borges
 
Three WEM Dev Tricks
Three WEM Dev TricksThree WEM Dev Tricks
Three WEM Dev TricksGabriel Walt
 
Web Technologies in Java EE 7
Web Technologies in Java EE 7Web Technologies in Java EE 7
Web Technologies in Java EE 7Lukáš Fryč
 
AK 3 web services using apache axis
AK 3   web services using apache axisAK 3   web services using apache axis
AK 3 web services using apache axisgauravashq
 
Was 5.1 To 6.1 Updated
Was 5.1 To 6.1 UpdatedWas 5.1 To 6.1 Updated
Was 5.1 To 6.1 Updatedtsmanyam
 

La actualidad más candente (20)

Java keynote preso
Java keynote presoJava keynote preso
Java keynote preso
 
Developer’s intro to the alfresco platform
Developer’s intro to the alfresco platformDeveloper’s intro to the alfresco platform
Developer’s intro to the alfresco platform
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 Recipes
 
[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration
 
Java EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVCJava EE 8 Web Frameworks: A Look at JSF vs MVC
Java EE 8 Web Frameworks: A Look at JSF vs MVC
 
Social Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech DaySocial Photos - My presentation at Microsoft Tech Day
Social Photos - My presentation at Microsoft Tech Day
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6
 
Ajax World Oct2008 Jrd
Ajax World Oct2008 JrdAjax World Oct2008 Jrd
Ajax World Oct2008 Jrd
 
Egl Rui Ajax World
Egl Rui Ajax WorldEgl Rui Ajax World
Egl Rui Ajax World
 
Cloud Computing2
Cloud Computing2Cloud Computing2
Cloud Computing2
 
Introducing WebLogic 12c OTN Tour 2012
Introducing WebLogic 12c OTN Tour 2012Introducing WebLogic 12c OTN Tour 2012
Introducing WebLogic 12c OTN Tour 2012
 
Three WEM Dev Tricks
Three WEM Dev TricksThree WEM Dev Tricks
Three WEM Dev Tricks
 
jsf2 Notes
jsf2 Notesjsf2 Notes
jsf2 Notes
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
Drive dam
Drive damDrive dam
Drive dam
 
Web Technologies in Java EE 7
Web Technologies in Java EE 7Web Technologies in Java EE 7
Web Technologies in Java EE 7
 
Santosh_Resume_Java
Santosh_Resume_JavaSantosh_Resume_Java
Santosh_Resume_Java
 
AK 3 web services using apache axis
AK 3   web services using apache axisAK 3   web services using apache axis
AK 3 web services using apache axis
 
Was 5.1 To 6.1 Updated
Was 5.1 To 6.1 UpdatedWas 5.1 To 6.1 Updated
Was 5.1 To 6.1 Updated
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 

Destacado

JSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian HlavatsJSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian Hlavatsjaxconf
 
Architecting Android Apps: Marko Gargenta
Architecting Android Apps: Marko GargentaArchitecting Android Apps: Marko Gargenta
Architecting Android Apps: Marko Gargentajaxconf
 
The Evolution of Java Persistence in EclipseLink: Shaun Smith
The Evolution of Java Persistence in EclipseLink: Shaun SmithThe Evolution of Java Persistence in EclipseLink: Shaun Smith
The Evolution of Java Persistence in EclipseLink: Shaun Smithjaxconf
 
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...jaxconf
 
From Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEFrom Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEjaxconf
 
Understanding Java Garbage Collection and What You Can Do About It: Gil Tene
Understanding Java Garbage Collection and What You Can Do About It: Gil TeneUnderstanding Java Garbage Collection and What You Can Do About It: Gil Tene
Understanding Java Garbage Collection and What You Can Do About It: Gil Tenejaxconf
 
What you need to know about Lambdas - Jamie Allen
What you need to know about Lambdas - Jamie AllenWhat you need to know about Lambdas - Jamie Allen
What you need to know about Lambdas - Jamie Allenjaxconf
 
Building an Impenetrable ZooKeeper - Kathleen Ting
Building an Impenetrable ZooKeeper - Kathleen TingBuilding an Impenetrable ZooKeeper - Kathleen Ting
Building an Impenetrable ZooKeeper - Kathleen Tingjaxconf
 
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta jaxconf
 
The Spring 4 Update - Josh Long
The Spring 4 Update - Josh LongThe Spring 4 Update - Josh Long
The Spring 4 Update - Josh Longjaxconf
 
The New Reality: the Role of PaaS in Technology Innovation - Franklin Herbas
The New Reality: the Role of PaaS in Technology Innovation - Franklin HerbasThe New Reality: the Role of PaaS in Technology Innovation - Franklin Herbas
The New Reality: the Role of PaaS in Technology Innovation - Franklin Herbasjaxconf
 
Future of the Web - Yehuda Katz
Future of the Web - Yehuda KatzFuture of the Web - Yehuda Katz
Future of the Web - Yehuda Katzjaxconf
 
The economies of scaling software - Abdel Remani
The economies of scaling software - Abdel RemaniThe economies of scaling software - Abdel Remani
The economies of scaling software - Abdel Remanijaxconf
 
Multi Client Development with Spring - Josh Long
Multi Client Development with Spring - Josh Long Multi Client Development with Spring - Josh Long
Multi Client Development with Spring - Josh Long jaxconf
 
Java PaaS Comparisons - Khanderao Kand
Java PaaS Comparisons - Khanderao KandJava PaaS Comparisons - Khanderao Kand
Java PaaS Comparisons - Khanderao Kandjaxconf
 
Apache Hadoop and its role in Big Data architecture - Himanshu Bari
Apache Hadoop and its role in Big Data architecture - Himanshu BariApache Hadoop and its role in Big Data architecture - Himanshu Bari
Apache Hadoop and its role in Big Data architecture - Himanshu Barijaxconf
 

Destacado (16)

JSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian HlavatsJSF2 Composite Components - Ian Hlavats
JSF2 Composite Components - Ian Hlavats
 
Architecting Android Apps: Marko Gargenta
Architecting Android Apps: Marko GargentaArchitecting Android Apps: Marko Gargenta
Architecting Android Apps: Marko Gargenta
 
The Evolution of Java Persistence in EclipseLink: Shaun Smith
The Evolution of Java Persistence in EclipseLink: Shaun SmithThe Evolution of Java Persistence in EclipseLink: Shaun Smith
The Evolution of Java Persistence in EclipseLink: Shaun Smith
 
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...
MVC on the Server and on the Client: How to Integrate Spring MVC and Backbone...
 
From Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEEFrom Tomcat to Java EE, making the transition with TomEE
From Tomcat to Java EE, making the transition with TomEE
 
Understanding Java Garbage Collection and What You Can Do About It: Gil Tene
Understanding Java Garbage Collection and What You Can Do About It: Gil TeneUnderstanding Java Garbage Collection and What You Can Do About It: Gil Tene
Understanding Java Garbage Collection and What You Can Do About It: Gil Tene
 
What you need to know about Lambdas - Jamie Allen
What you need to know about Lambdas - Jamie AllenWhat you need to know about Lambdas - Jamie Allen
What you need to know about Lambdas - Jamie Allen
 
Building an Impenetrable ZooKeeper - Kathleen Ting
Building an Impenetrable ZooKeeper - Kathleen TingBuilding an Impenetrable ZooKeeper - Kathleen Ting
Building an Impenetrable ZooKeeper - Kathleen Ting
 
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta Getting started with Websocket and Server-sent Events using Java - Arun Gupta
Getting started with Websocket and Server-sent Events using Java - Arun Gupta
 
The Spring 4 Update - Josh Long
The Spring 4 Update - Josh LongThe Spring 4 Update - Josh Long
The Spring 4 Update - Josh Long
 
The New Reality: the Role of PaaS in Technology Innovation - Franklin Herbas
The New Reality: the Role of PaaS in Technology Innovation - Franklin HerbasThe New Reality: the Role of PaaS in Technology Innovation - Franklin Herbas
The New Reality: the Role of PaaS in Technology Innovation - Franklin Herbas
 
Future of the Web - Yehuda Katz
Future of the Web - Yehuda KatzFuture of the Web - Yehuda Katz
Future of the Web - Yehuda Katz
 
The economies of scaling software - Abdel Remani
The economies of scaling software - Abdel RemaniThe economies of scaling software - Abdel Remani
The economies of scaling software - Abdel Remani
 
Multi Client Development with Spring - Josh Long
Multi Client Development with Spring - Josh Long Multi Client Development with Spring - Josh Long
Multi Client Development with Spring - Josh Long
 
Java PaaS Comparisons - Khanderao Kand
Java PaaS Comparisons - Khanderao KandJava PaaS Comparisons - Khanderao Kand
Java PaaS Comparisons - Khanderao Kand
 
Apache Hadoop and its role in Big Data architecture - Himanshu Bari
Apache Hadoop and its role in Big Data architecture - Himanshu BariApache Hadoop and its role in Big Data architecture - Himanshu Bari
Apache Hadoop and its role in Big Data architecture - Himanshu Bari
 

Similar a Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joonas Lehtinen

vFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS AppsvFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS AppsVMware vFabric
 
A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)Ralf Sternberg
 
Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Alexandre Morgaut
 
Web前端性能分析工具导引
Web前端性能分析工具导引Web前端性能分析工具导引
Web前端性能分析工具导引冰 郭
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkecker
 
Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 javatwo2011
 
Uni Paa S Overview
Uni Paa S  OverviewUni Paa S  Overview
Uni Paa S OverviewArik
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014Ryan Cuprak
 
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...MskDotNet Community
 
JavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJoe Kutner
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applicationsSC5.io
 
Java in web 2 0 presentation
Java in web 2 0 presentationJava in web 2 0 presentation
Java in web 2 0 presentationPRAVEEN KUMAR
 
Java in web 2 0 presentation
Java in web 2 0 presentationJava in web 2 0 presentation
Java in web 2 0 presentationVarun Jain
 
Server rendering-talk
Server rendering-talkServer rendering-talk
Server rendering-talkDaiwei Lu
 
JAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScriptJAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScriptmartinlippert
 
Modern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScriptModern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScriptmartinlippert
 

Similar a Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joonas Lehtinen (20)

20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
vFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS AppsvFabric - Ideal Platform for SaaS Apps
vFabric - Ideal Platform for SaaS Apps
 
A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)A look ahead at RAP (ESE 2010)
A look ahead at RAP (ESE 2010)
 
Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29Wakanda - apps.berlin.js - 2012-11-29
Wakanda - apps.berlin.js - 2012-11-29
 
Web前端性能分析工具导引
Web前端性能分析工具导引Web前端性能分析工具导引
Web前端性能分析工具导引
 
20120802 timisoara
20120802 timisoara20120802 timisoara
20120802 timisoara
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Framework
 
Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望 Java EE 與 雲端運算的展望
Java EE 與 雲端運算的展望
 
Uni Paa S Overview
Uni Paa S  OverviewUni Paa S  Overview
Uni Paa S Overview
 
JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014JavaFX Versus HTML5 - JavaOne 2014
JavaFX Versus HTML5 - JavaOne 2014
 
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...Дмитрий Тежельников  «Разработка вэб-решений с использованием Asp.NET.Core и ...
Дмитрий Тежельников «Разработка вэб-решений с использованием Asp.NET.Core и ...
 
Scala and Lift
Scala and LiftScala and Lift
Scala and Lift
 
JavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor AppJavaOne 2015: 12 Factor App
JavaOne 2015: 12 Factor App
 
Building single page applications
Building single page applicationsBuilding single page applications
Building single page applications
 
Java in web 2 0 presentation
Java in web 2 0 presentationJava in web 2 0 presentation
Java in web 2 0 presentation
 
Java™ in Web 2.0
Java™ in Web 2.0Java™ in Web 2.0
Java™ in Web 2.0
 
Java in web 2 0 presentation
Java in web 2 0 presentationJava in web 2 0 presentation
Java in web 2 0 presentation
 
Server rendering-talk
Server rendering-talkServer rendering-talk
Server rendering-talk
 
JAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScriptJAX 2012: Moderne Architektur mit Spring und JavaScript
JAX 2012: Moderne Architektur mit Spring und JavaScript
 
Modern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScriptModern Architectures with Spring and JavaScript
Modern Architectures with Spring and JavaScript
 

Último

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 

Último (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 

Vaadin, Rich Web Apps in Server-Side Java without Plug-ins or JavaScript: Joonas Lehtinen

  • 1. Rich Web Applications in Server-side Java without Plug-ins or JavaScript Joonas Lehtinen, PhD Vaadin Ltd - CEO vaadin.com/vaadin @joonaslehtinen
  • 2.
  • 3. Vaadin is a UI framework for rich web applications
  • 4. java html
  • 6. healthcare portal, >100 kloc of perl, 89 19
  • 7. web 1.0, netscape, ie5, ie6, ...
  • 8. thinking of object oriented design, desktop, Java, U and I ...
  • 10. found millstone ajax google web toolkit 00 08 02 05 20 20 20 20
  • 11. re-released as 09 20
  • 12. Used by >50.000 developers in >150 countries Building apps for fortune 500, startups, governments, ... across all industries Collaborating by conributing > 200 plug-ins and helping plug-ins, mainstream each other on a forum with >1500 posts / m 10 11 Backed by 50+ person 20 20 full-time team
  • 13. see our transparent vaadin.com/roadmap 12 20
  • 15. Contents Server-side Discussion RIA What is it? Pros & cons? Vaadin Technology, Features, Getting started In practice Coding a Vaadin application step-by-step
  • 17. “Web 1.0” Client 5 Server HTML Page DOM over HttpResponse View 4 3 Model Parameters over HttpRequest Controller 2 DB 1
  • 19. Client-side RIA Client 4 Server Requested data View to view as XML / JSON 5 DOM Model 3 1 Changes to model Controller encoded as parameters DB 2
  • 20. challenge web is not easy
  • 21. Refactoring? Compile- Automated API docs? weak typing time checking? Code completion?
  • 22. > 1 developers + JavaScript facilitated weak typing spaghetti + > 10k SLOC
  • 23. performance browsers are bugs different features
  • 25. Subset of IE6 java.lang, java.util Java to IE7 Widgetset JavaScript Compiler Firefox Your Application UI Safari
  • 26. simpler • 100% Java • Static typing • Object oriented • Excellent tooling
  • 27. less bugs • Stop debugging JavaScript spaghetti • Ignore most browser differences
  • 28. client-side • UI in client • Asyncronous RPC • Services (for UI)
  • 29. Building wonderful apps doesn’t require writing fat web clients.
  • 31. Server-side RIA Client 8 Server 9 7 TerminalAdapter TerminalAdapter HTML Page over HttpResponse View 6 Automated by 5 DOM the RIA framework Model Handled by the framework Parameters over HttpRequest Controller 1 4 3 DB 2
  • 32. High level simpler • 100% Java Strong • Strong typing • Object oriented programming • Excellent tooling model less bugs • No JavaScript debugging • Ignore browsers
  • 33. server enviroment • Access any library • Use any language • Runtime is not limited by browser • Trusted • Well defined
  • 34. simplified communications • No RPC layer • No services (for UI) • Synchronous • Direct access to server API
  • 35. secure • Code stays in server • No services (for UI) • Predictable runtime
  • 36. not as scalable UI state is stored in the server memory
  • 37. Measured 12.000 active concurrent users per server for a ticketing app * Amazon EC2-large; 20.622 Ajax requests / minute peak; limited by storage layer
  • 38. no offline mode connection to server is always required
  • 40.
  • 41. 2 Java class files ~ 50 LOC + imports no HTML no CSS no JavaScript no Cut-n-Paste
  • 44. Developer experience goals User expecience Scalability
  • 48.
  • 49.
  • 50.
  • 54.
  • 55. InMemory, Bean, Method, Collection, JDBC, JPA, Hibernate, TextFile, FileSystem, Properties, EclipseLink, Lucene, Mockups, GAE, ... Your’s
  • 57. Table or any other UI component SQLContainer FreeformQuery JDBC SELECT * FROM ...
  • 58. connectionPool = new SimpleJDBCConnectionPool( "org.hsqldb.jdbc.JDBCDriver", "jdbc:hsqldb:mem:sqlcontainer", "password", "", 2, 2); SQLContainer container = new SQLContainer( new FreeformQuery( "SELECT * FROM people", Arrays.asList("ID"), connectionPool)); Table table = new Table(null, container);
  • 59. Table or any other UI component SQLContainer TableQuery JDBC Database Table
  • 60. • lazy loading • advanced filtering • sorting • connection pooling • transactions • optimistic locking • autocommit mode
  • 61. • HSQLDB • MySQL • PostgreSQL • Oracle • MS SQL Server
  • 62. 2 combine power of • Server-side RIA • Google Web Toolkit
  • 63. Layers of abstraction backend frontend RPC browser browser server server any language any language json / xml java ➠ javascript ExtJS GWT Vaadin required required optional optional optional required required required required optional required required required X required
  • 64. How does it work, really?
  • 65.
  • 66. Initial HTML • CSS (theme) • Images • JavaScript 830k total compress 250k reduced widgetset 120k
  • 67. • name=”Joonas” • button clicked 150 bytes
  • 68.
  • 69. • name=”Joonas” • button clicked 150 bytes • Add notification 466 bytes
  • 70. Vaadin UI component architecture HTTP(S) “UI Component” “Widget” • Button, Table, Tree, ... • Client-side peer for • Server-side data the component • Full Java API • Runs on JavaScript Java Java • Compiled with JDK • Google Web Toolkit
  • 71. Creating new UI components is really easy
  • 72.
  • 73. Implement two classes Server-side Client-side “UI Component” Automatic “Widget” • Define API • Render to DOM • Receive client events • Collect user events • Send UI updates back
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 80.
  • 82. Serve ucr-od ize Pr tim Op f or ed tiv iz df or ity tim e rol Op t- s d ont i C ien Cl
  • 83. Client Co Op - im t ntr f or ol ize df iz ed iv ity or tim c t sid Op u od r- e P r rve Se
  • 87. Scalawith Scaladin add-on val layout = new VerticalLayout(width = 100 pct, height = 100 pct) { add(new Label(content = "Persons")) add(new Table(width = 100 pct, height = 100 pct), ratio = 1) add(new HorizontalLayout(spacing = true) { add(new Button("Edit selected", _ => editClicked())) add(new Button("Add new", _ => addNewClicked())) }) } getMainWindow.setContent(layout)
  • 88. Internet Explorer 6.. Chrome Firefox Safari Opera iOS Android
  • 89. No browser plugins Nothing to install
  • 90. Servlet Portlet (most) clouds
  • 91. Apache Tomcat, version 4.1 or later Oracle WebLogic Server, version 9.2 or later Oracle WebLogic Portal, version 10gR3 IBM WebSphere Application Server, version 6.1 or later IBM WebSphere Portal, version 6.1 and 7.0 JBoss Application Server, version 3.2.8 or later Jetty, version 5 or later Glassfish, version 2 or later Liferay Portal 5.2 or later GateIn Portal 3.1 eXo Platform 3 Google App Engine Vaadin supports Java Servlet API 2.3 and JSR-168 and JSR-286 Portlet Specifications and should work with any Java application server that conforms to these standards.
  • 92. Eclipse IntelliJ IDEA Netbeans Maven Ant Spring Roo ∙∙∙
  • 93.
  • 94. Maven mvn archetype:generate -DarchetypeGroupId=com.vaadin -DarchetypeArtifactId= vaadin-archetype-clean mvn package yourproject-1.0.war
  • 96.
  • 99. Download for Free vaadin.com/book Vaadin is a for build n open source ing mod J look gre ern web ava framework at, applicat your use perform well a ion rs happ nd make s that y. you and http://va adin.com / SBN 978 -9 52-92-67 53-8 90000 9 7 8 95 2 9 267538 $29.95 4th Editio n 674 pages
  • 100. brought to you by... #85 Get More Refcardz! Visit refcardz.com CONTENTS INCLUDE: About Vaadin Getting Started with Vaadin Creating An Application Components Layout Components Themes Data Binding and more... By Marko Grönroos ABOUT VAADIN Web Browser External Client-Side Resources Vaadin is a server-side Ajax web application development Engine framework that allows you to build web applications just like AJAX Requests with traditional desktop frameworks, such as AWT or Swing. An Servlet Container Java File application is built from user interface components contained Servlet Resources hierarchically in layout components. Data In the server-driven model, the application code runs on Application UI Binding Default Class Component Theme a server, while the actual user interaction is handled by a client-side engine running in the browser. The client-server Inherits Events Changes Inherits communications and any client-side technologies, such as User Event Data Application Application HTML and JavaScript, are invisible to the developer. As the Application Listener Model Themes Resources client-side engine runs as JavaScript in the browser, there is no need to install plug-ins. Vaadin is released under the Apache Database License 2.0. Web Java Vaadin Your Web Figure 2: Architecture for Vaadin Applications Browser Web UI Java Service Client-Side Server Components Application You can get a reference to the application object .dzone.com Engine EJB Hot Tip from any component attached to the application with DB Event Listeners Figure 1: Vaadin Client-Server Architecture In the event-driven model, user interaction with user interface If the built-in selection of components is not enough, you can components triggers server-side events, which you can handle
  • 101. Questions? Comments? joonas@vaadin.com vaadin.com/joonas @joonaslehtinen #vaadin Expert services Better Online support Results Training Slides available on Faster slideshare Tools vaadin.com/pro