Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo



Ähnliche Dokumente
Vaadin ein Erfahrungsbericht

- XPages 2.0? René Winkelmeyer

Einführung in Google Web Toolkit

für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

Einführung in das Google Web Toolkit am Beispiel eines Projektes aus der Verkehrstelematik

OpenSource Individualentwicklungsplattform für weborientierte/mobile Anwendungen

Mit dem Google-Web-Toolkit moderne Web-Anwendungen entwickeln

Be dynamic! RichClient-Funktionalitäten mit dem Google Web Toolkit

VAADIN, SPRING BOOT & REST

Forms Desktop Kooperation

Eclipse Scout Heute und Morgen. Jérémie Bresson BSI Business Systems Integration AG

Kompendium der Web-Programmierung

Moderne Web- Anwendungen mit

Wir bringen Ihre Notes/Domino Anwendungen sicher ins Web , Bilster Berg Drive Resort Michael Steinhoff, agentbase AG.

Javakurs für Fortgeschrittene

Hauptseminar Informatik. Java Web Frameworks Alexander Löser

Komponentenorientierte Software-Entwicklung. Seite 1 / 42

Moderne Web-Anwendungen mit Vaadin

Einführung in GUI-Programmierung. javax.swing

XPages - Core Technologie der Lotus Zukunft? 2011 IBM Corporation

Vaadin 10 der Sprung von GWT zu WebComponents

RAP vs. GWT vs. GAE/J + jquery. Web Technologien im Verlgeich

Java für Computerlinguisten

Multimedia im Netz Wintersemester 2012/13

Ereignisbasierte WebGUIs

Leichtgewichtige Web 2.0-Architektur für komplexe Business-Anwendungen Nicolas Moser PRODYNA AG

Funktionale und Objekt-Orientierte Programmierkonzepte

Schick statt altbacken Oberflächen-Modernisierung von Forms-Anwendungen

Recherchebericht. 2 Konzepte Client-Server-Modell Servlets-Architektur Google Web Toolkit... 5

Integration von UIS-Webdiensten

Nutzung von JavaFX. Wo? Wann? Wie?

Google Gears Offline Web?

Einführung in GUI-Programmierung. javax.swing

Erstellung eines mockbasierten Testframeworks für Saros. Philipp Cordes Masterarbeit

Lernen vom Page Designer. Auf den Spuren von Jules Verne

Mail: Web: juergen-schuster-it.de

XPages Good to know. Benjamin Stein & Pierre Hein Stuttgart 7. Mai 2015

Modulare Anwendungen und die Lookup API. Geertjan Wielenga NetBeans Team Deutschsprachige Überarbeitung, Aljoscha Rittner NetBeans Dream Team

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik GUI-Programmierung mit Swing

Diplomarbeit: GOMMA: Eine Plattform zur flexiblen Verwaltung und Analyse von Ontologie Mappings in der Bio-/Medizininformatik

Rich Internet Applications Technologien. Leif Hartmann INF-M3 Anwendungen 2 - Wintersemester 2007/ Januar 2008

Dirk Reinemann Working Student Sales Consulting

Remote Method Invocation

Andreas Hartmann, Stephan Müller adesso AG. JSF Testing: Tools und Technics

DCCS Lotusphere Nachlese 2012 Was sind XPages? Mobile Features für XPages

Eclipse und EclipseLink

Be dynamic! RichClient-Funktionalitäten mit dem Google Web Toolkit

Über mich. Daniel Bälz. Softwareentwickler (inovex GmbH) github.com/dbaelz

Introduction to JSF technology and Rapid Application Development Roland Zänger

Einsatz und Grenzen von Java Server Faces 2.0

Ein Leben ohne Notes Client Sven Hasselbach

Mathematik Seminar WS 2003: Simulation und Bildanalyse mit Java. Software-Architektur basierend auf dem Plug-in-Konzept

Einstieg in die Informatik mit Java

Openlaszlo. Rich Internet Application Platform

WebComponents. Bausteine des modernen Web

!!!! Mail: Web: juergen-schuster-it.de. ! APEX D-A-CH Facebook Group: bit.ly/apex_on_facebook

Praktikum Datenbanksysteme. Ho Ngoc Duc IFIS - Universität zu Lübeck

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel

Inhalt. Einführung RFC-Funktionsbausteine in ABAP Funktionsbausteine zum Lesen Aufruf per srfc 108

J a v a S e r v l e t s

Kapitel 8: Grafische Benutzerschnittstellen

Internettechnologien Vorlesung für Master-Studierende Geoinformatik/-management Sommersemester 2017

Vaadin TouchKit. W3L AG

Internet-basierendes Autorensystem zur Erschließung historischen Kulturguts. Thorsten Ludewig. Juni 2004

Echte Cross-Plattform Anwendungen mit Angular 2 in Action!

Node.js Einführung Manuel Hart

Web Modeler W3L AG Ein webbasiertes Modellierungswerkzeugs mit integrierter Plugin-Architektur

React.js flottes Front-End für Domino. Knut Herrmann

Sommersemester Implementierung III: GUI und Verhalten (Teil 2)

Entwicklung mit JavaFX

Android GUI Entwicklung

Indigo vs. Juno. Was ist neu für Eclipse 4.x RCP Entwickler? Hauptseminar 2012

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Rich Internet Applications mit Adobe Flex

Kai Wähner MaibornWolff et al GmbH

xflow Systemanforderungen Version 5.1.5

Programmiertechnik GUI Programmierung mit Java Swing

Web 2.0 Architekturen und Frameworks

Testgetriebenes Ajax. Johannes Link unabhängiger Softwarecoach Marco Klemm andrena objects ag

Handbuch für die Erweiterbarkeit

Seminar aus Informatik. Google Web Toolkit Supervisor: O.Univ.-Prof. Dipl.-Ing. Dr. Wolfgang PREE

Programmieren II. Java im Vergleich zu anderen Sprachen. Einführung: GUI. Einführung: Grafische Benutzeroberflächen. Dr.

ASP.NET: ATLAS -Framework. Nico Orschel Microsoft Student Partner, TU Ilmenau

UI / UX Designer (m/w)

Internettechnologien Vorlesung für Master-Studierende Geoinformatik/-management Sommersemester 2016

Einführung in die Programmierung für NF. Grafische Benutzeroberflächen

Programmiermethodik. Übung 7

bsc Education Center bsc solutions GmbH & Co. KG Industriestr. 50 b, Walldorf Tel:

Portale mit dem Java-Portlet-Standard JSR168, Jetspeed 2 und WSRP

Um asynchrone Aufrufe zwischen Browser und Web Anwendung zu ermöglichen, die Ajax Hilfsmittel DWR ist gebraucht.

Grundlagen Internet-Technologien INF3171

Cross Platform Development mit SharePoint

Oliver Brinkmann Java Swing-Applikationen & JApplets (mit NetBeans)

IDM: Identity Connector Framework (ICF) und SAP Connectors

Die Alternative zum Web-Form Modell

Von Forms auf Java in 10 Tagen Traum oder Wirklichkeit?

Transkript:

Webentwicklung mit Vaadin 7 Theoretische und praktische Einführung in Vaadin 7 Christian Dresen, Michael Gerdes, Sergej Schumilo

Agenda Allgemeines Architektur Client-Side Server-Side Vaadin UI Components Praktische Einführung Praktikum 2 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Allgemeines 3 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Allgemeines Was ist Vaadin? Freies Framework (Apache Lizenz 2.0) Server-seitige Ausführung Kein Browser-Plugin notwendig Quelle: http://www.digitalnext.de/wp-content/uploads/ 2013/01/top-best-browsers.jpg Client-Seite Ajax Framework Google Web Toolkit Java-to-JavaScript Compiler Quelle: http://www.have2code.com/wp-content/ uploads/2013/12/gwt1.png 4 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Allgemeines Was ist Vaadin? Gesamte Anwendung wird in Java implementiert Ereignisgesteuerte Programmierung Parallelen zu GUI-Programmierung Vaadin macht das Design Verwendung von Themes Quelle: http://www.chip.de/ii/7/8/7/ 9/6/2/0fc51f82e036e1d3.jpg Quelle: https://vaadin.com/demo 5 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Allgemeines Geschichte I 2002: quelloffenes Framework: Millstone 3 Ajax-basierte Client-Kommunikation und Renderengine 2006: Konzept separat als kommerzielles Produkt entwickelt Serverseitige Vaadin-API kompatibel mit Millstone API 2007: Produktname IT Mill Toolkit Version 4 freigegeben Proprietäre Ajax Implementation für die Clientseite Ende 2007: Proprietäre Ajax Implementation aufgegeben Google Web Tool Kit integriert für Darstellung von Client-Seitigen Komponenten Produktlizenz wurde auf die freie Apache 2.0 Lizenz geändert 6 Quelle: http://de.wikipedia.org/wiki/vaadin von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Allgemeines Geschichte II März 2009: Veröffentlichung einer Produktionsfähigen Version von IT Mill 5.0 Mai 2009: IT Mill Toolkit wird in Vaadin unbenannt Vorabfreigabe Version 6 März 2010 Vaadin Directory Ein Portal zur Verbreitung von kommerziellen und Open-Source Erweiterungen Februar 2011: Kommerzielles Supportmodell: Vaadin Pro Accounts März 2013: Vaadin 7 Erste Hauptversion seit der Umbenennung 2009 7 Quelle: http://de.wikipedia.org/wiki/vaadin von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Allgemeines Add-On s Top Downloads Stand 02. Dezember 2014, Datenquelle: vaadin.com 8 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Allgemeines Add-On s: Vaadin Charts Quelle: https://vaadin.com/directory#addon/vaadin-charts 9 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Technischer Hintergrund 10 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Architektur Strikte Trennung durch MVC-Modell Webbrowser Content repräsentiert die View Web Applikation repräsentiert den Controller Back-end repräsentiert das Modell Asynchrone JavaScript Kommunikation In Abhängigkeit der Komponenten, werden Veränderungen an den Server geschickt 11 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Architektur Vaadin Komponenten bestehen aus: Client-Side Code JavaScript Server-Side Code Java Entwickelt wird hauptsächlich Java-Code Abgesehen von CSS / HTML 12 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Client-Side (Web Browser) HTML und JavaScript Client-Side Engine basiert auf JavaScript Mithilfe des Vaadin Client Compiler übersetzt Dieser basiert auf dem Google Web Toolkit (GWT) Java-to-JavaScript Compiler Standardmäßig JSON Remote Procedure Calls (RPC) bei umfangreichen Übertragungen 13 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Client-Side (Web Browser) 14 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Client-Side (Web Browser) {"syncid":3, "changes":[[ "change",{"pid":"62"}, ["23",{ "id":"62", "locale":"de", "format":"dd.mm.yyyy", "strict":true, "wn":false, "parsable":true, "v":{ "day":10, "month":12, "year":2014 } } ]]], "state":{ "62":{ "errormessage":"<div>datum muss vor aktueller Zeit liegen<\/div>\n", "modified":true },"54":{ "centered":false, "positionx":460, "positiony":25 } },} 15 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Server-Side (Application Server) Quelle: https://vaadin.com/book/-/page/application.html 16 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Vaadin UI Components Quelle: https://vaadin.com/book/-/page/components.html 17 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Praktische Einführung 18 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Konfiguration über Annotationen @Theme("vaadin") public class VaadintestUI extends UI { @WebServlet(value = "/*", asyncsupported = true) @VaadinServletConfiguration(productionMode = false, ui = VaadintestUI.class) public static class Servlet extends VaadinServlet { } } @Override protected void init(vaadinrequest request) { } 19 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

View Programmierung Java AWT Vaadin 7 GridLayout layout = new GridLayout(3,0); this.setlayout(layout); final Label lblausgabe = new Label(); final TextField txteingabe = new TextField(); final Button btnsubmit = new Button( Click Me"); this.add(lblausgabe); this.add(txteingabe); this.add(btnsubmit); btnsubmit.addactionlistener(new ActionListener() { @Override public void actionperformed(actionevent arg0) { lblausgabe.settext(txteingabe.gettext()); } }); final VerticalLayout layout = new VerticalLayout(); this.setcontent(layout); final Label lblausgabe = new Label(); final TextField txteingabe = new TextField(); final Button button = new Button("Click Me"); layout.addcomponent(lblausgabe); layout.addcomponent(txteingabe); layout.addcomponent(button); button.addclicklistener(new Button.ClickListener() { @Override public void buttonclick(clickevent event) { lblausgabe.setvalue(txteingabe.getvalue()); } }); 20 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Model Auf Membervariablen zugreifen FormLayout form = new FormLayout(); form.setimmediate(true); BeanItem<MyBean> item = new BeanItem<MyBean>(myBean); BeanFieldGroup<MyBean> binder = new BeanFieldGroup<MyBean>(MyBean.class); binder.setitemdatasource(item); form.addcomponent(binder.buildandbind("membervariable","caption")); binder.getfield("membervariable").setrequired(true); binder.getfield("membervariable").setbuffered(false); BeanItem<MyBean> item = new BeanItem<MyBean>(myBean); item.getitemproperty("membervariable") 21 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Model Auswahlbox erstellen ArrayList<MyBean> mybeanlist = new ArrayList<MyBean>(); mybeanlist.add(new MyBean()); BeanItemContainer<MyBean> mybeancontainer; mybeancontainer = new BeanItemContainer<MyBean>(MyBean.class, mybeanlist); ComboBox cmbboxmybean = new ComboBox("cmbBoxMyBeanCaption"); cmbboxmybean.setcontainerdatasource(mybeancontainer); 22 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Session Scopes Zwei Scopes bei Vaadin UI Session Pro geöffnetes Fenster eine eigene Session zur Verwaltung des Fensterinhalts Zugriff mit UI.getCurrent().getSession().setAttribute(MyBean.class, new MyBean()); UI.getCurrent().getSession().setAttribute ( ValueID, Value ); VaadinSession Pro User eine Session, d.h. von allen Tabs und Fenstern eines Browsers Zugriff Thread-safe über try { VaadinSession.getCurrent().getLockInstance().lock(); VaadinSession.getCurrent().setAttribute(VALUE_ID, "some value"); } finally { VaadinSession.getCurrent().getLockInstance().unlock(); } 23 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Praktikumseinführung 24 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Vorbereitungen Benötigt wird Eclipse Kepler (Link in Praktikumsaufgabe) Separaten Workspace benutzen Vaadin Eclipse Plug-In herunterladen 25 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Praktikum Vorgegebener Quelltext Beinhaltet: Model das Modell Modell-Tests Grundgerüst Interfaces zur Nutzung 26 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014

Praktikumsaufgabe Demo 27 von 27 Dresen, Gerdes, Schumilo Vaadin 7 03.12.2014