Vaadin ein Erfahrungsbericht



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

Moderne Web- Anwendungen mit

Moderne Web-Anwendungen mit Vaadin

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

- XPages 2.0? René Winkelmeyer

Dokumentation für Popup (lightbox)

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

Weboberflächen testen

Server-centric vs. Client-centric Web Applications. BITKOM Software Summit 2014, Frankfurt

Hochschule Heilbronn Technik Wirtschaft Informatik

Vaadin TouchKit. W3L AG

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

Gliederung. Responsive Design Begriffserklärung und Übersicht. Frameworks Einführung in HTML / CSS Frameworks.

Integrierte und automatisierte GUI-Tests in Java

Struts 2 Das Imperium schlägt zurück?

Mobiles SAP für Entscheider. Permanente Verfügbarkeit der aktuellen Unternehmenskennzahlen durch den mobilen Zugriff auf SAP ERP.

Erfahrungsbericht. Sven Koschnicke Christian Wulf Florian Fittkau Universeller Aufgabenclient

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

Mail: Web: juergen-schuster-it.de

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

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

Björn Heinemann Leiter Entwicklung Energiewirtschaft

Einführung Internettechnologien. - Clientseitige Programmierung -

Ein UI in zwei Welten - Controls in HTML5 und WPF. Timo Korinth

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

Workshop Java Webentwicklung Tapestry. Ulrich Stärk

Implementation of a Framework Component for Processing Tasks within Threads on the Application Level

DataSpace 2.0 Die sichere Kommunikations-Plattform für Unternehmen und Organisationen. Your Data. Your Control

Die Alternative zum Web-Form Modell

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

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

EPO Consulting GmbH. Ihr Partner für HTML5 und SAP UI5 Apps. Stand 2015/04. EPO Consulting GmbH - 1 -

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

INDIVIDUELLE SOFTWARELÖSUNGEN CUSTOMSOFT CS GMBH

NCDiff Testmanagement leicht gemacht

Graphen in Apex von Thomas Hernando.

C O C O O N. Wo ist Cocoon in die Apache Projekte einzureihen?

Einführung in Google Web Toolkit

Zentrale Objekte zur Programmierung graphischer Benutzeroberflächen (GUI)

Das Content-Management-System OpenCms im Vergleich mit TYPO3 und Joomla. Seminarvortrag von Wolfgang Neuß

Online Kataloge. Wie binde ich einen SGVSB-Online-Katalog in eine Webseite ein. Versionsnummer: 1.0 Änderungsdatum:

Vaadin. Der kompakte Einstieg für Java-Entwickler. von Joachim Baumann, Daniel Arndt, Frank Engelen, Frank Hardy, Carsten Mjartan. 1.

ASP: Active Server Pages

Object Web ein Ansatz für Collaborative Engineering

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

c t HTML 5 App Werbemittelanforderung

AJAX DRUPAL 7 AJAX FRAMEWORK. Was ist das Ajax Framework? Ein typischer Ablauf eines Ajax Requests Die Bestandteile des Ajax Frameworks.

Automatisches Exploratives Testen von Webanwendungen

Abacus Formula Compiler (AFC)

XML Technologien Seminar WS 2011/ Einführung in HTML5 1

Verteidigung Masterarbeit Evaluating the Use of a Web Browser to Unify GUI Development for IDE Plug-ins

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Apollo Überblick. Klaus Kurz. Manager Business Development Adobe Systems Incorporated. All Rights Reserved.

Hilfe, ich verstehe meine APEX Seite nicht mehr! DOAG Development Konferenz, Düsseldorf

Abschlussarbeiten für StudentInnen

Open Source. Hendrik Ebbers 2015

Webinar Oracle Applications Testing Suite 6. November 2013 Jens Bielenberg, Andreas Böttcher

Webinar: Einführung in ICEfaces

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

Das HMS-Reporting-Framework Schneller Zugang zu relevanten Reports

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Browserbasiertes, kollaboratives Whiteboard

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

C# im Vergleich zu Java

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern

Effizenzsteigerung bei Villeroy & Boch durch den Einsatz von Magento und Zend

38 / 100 Schneller gemacht

Ein mobiler Electronic Program Guide

DH-Portal dhdashboard.de (R 7.7)

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

<Insert Picture Here> Schnelle Anwendungen mit Oracle Application Express

Praktikum: Einstieg: Arbeitsplatz, JCreator

Einführung Responsive Webdesign

App Entwicklung mit Hilfe von Phonegap. Web Advanced II - SS 2012 Jennifer Beckmann

Objektorientierte Programmierung

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

Applets I. Grundlagen der g Applet-Programmierung

Plattformunabhängige App-Entwicklung - Eine für alle?

ArcObjects-Programmierung mit Delphi. Marko Apfel, Team Entwicklung

Windows Presentation Foundation (WPF) -Grundlagen -Steuerelemente. Dr. Beatrice Amrhein

Application Frameworks

Cross-Platform Mobile mit.net

AJAX Implementierung mit Joomla!

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen

Anforderungsgetriebene Webentwicklung mit Grails:

Graphic Coding. Klausur. 9. Februar Kurs A

Rolf Behrens (B.Sc.) FH Osnabrück

Die Entwicklung des Open-Source. Source-Tools. zum Datenbankabgleich von Karsten Panier. Inhalt

Java Webentwicklung (mit JSP)

Datenbanksysteme SS 2007

Design Patterns MVC. Marcus Köhler Markus Merath Axel Reusch. Design Patterns MVC Marcus Köhler Markus Merath Axel Reusch Seite 1

Design Patterns 2. Model-View-Controller in der Praxis

MEHRWERK. Web Collaboration

TRACK II Datenmanagement Strategien & Big Data Speicherkonzepte BI Operations Erfolgsfaktoren für einen effizienten Data Warehouse Betrieb

Nutzung von JavaFX. Wo? Wann? Wie?

Aus unserer Projekt- und Schulungserfahrung Oracle TechNet

Benutzeroberflächen. Java Teil 4

SERVICE SUCHE ZUR UNTERSTÜTZUNG

Transkript:

Vaadin ein Erfahrungsbericht JUG SWITZERLAND 5. Februar 2013 Benjamin Schupp / Markus Kinzler mp technology consulting GmbH

Speakers Benjamin Schupp Lead Architect, konzipiert und entwickelt Java-basierte Lösungen seit 15 Jahren Markus Kinzler Senior Software Engineer, entwickelt seit 10 Jahren mit Java und Web Technologien mp technology, Zürich www.mptechnology.ch Individual-Software für Intranet und Internet und Mobile seit 2003 Beratung, Analyse, Konzepte, Architektur, Implementierung Zertifizierter Vaadin Solution Partner Aktuell: Offizielle Vaadin Schulungen in Zürich 2. 3. April: Vaadin Fundamentals 4.-5. April: Advanced Vaadin https://vaadin.com/services#vaadintraining mp technology 05.02.2013 Page 2

Agenda Motivation Vaadin - ein Überblick Projektvorstellung Einige Anwendungsfälle Erkenntnisse und Ausblick Fragen / Diskussion mp technology 05.02.2013 Page 3

Mission Umsetzung einer Intranet Geschäftsanwendung zur Planung von Verkaufsfilialen (Einzelhandel) Rahmenbedingungen: Multi-user Web Frontend mit hohem Bedienkomfort, der vergleichbar ist mit herkömmlichen Desktop-Applikationen (RIA) MS-Excel gewohnte Nutzer Flexible Darstellung grosser Zahlentabellen zum visuellen Vergleich Keine graphischen Design Vorgaben Moderate Anforderungen an Leistung: < 50 parallele Sitzungen Implementierung von Algorithmen zur automatisierten Flächenplanung Integration verschiedener IT Systeme der Firma mp technology 05.02.2013 Page 4

Anforderungen an das Web-Framework Interaktive Web-Applikation (RIA) Umfangreiche Komponentenbibliothek Schnelle Entwicklung Werkzeuge / IDE Unterstützung Wartbarkeit / Erweiterbarkeit / Testbarkeit mp technology 05.02.2013 Page 5

Warum Vaadin?? Organisation Lizenz Firma / Support Architektur Server/Client UI Komponentenbibliothek Skalierbarkeit Entwicklung Verwendete Programmiersprachen / Programmiermodell Lernkurve / Schnelligkeit Ausbau / Eigenbau von Komponenten Community Dokumentation mp technology 05.02.2013 Page 6

Pro Vaadin Ansprechendes Programmiermodel: 100% Java Strenge Typisierung Refactoring Compile-time checking Code completion Automated API docs Kein Javascript / Html Code Browser unabhängig Gute Testbarkeit Vereint Vorteile von Server-seitiger Applikationsentwicklung GWT Komponentenbibliothek für Browser mp technology 05.02.2013 Page 7

Mit Vaadin Versprechungen / Erwartungen Reifes Framework mit aktiver Community und Doku Solide Komponentenbibliothek und Add-ons Einfache und schnelle Entwicklung! Kritische Punkte Skalierbarkeit? Verhalten bei schlechtem Netzwerk? Komplexität von Entwicklung eigener Komponenten? mp technology 05.02.2013 Page 8

Vaadin - Geschichte Millstone Library 1.0 IT Mill Toolkit Release 5 GWT Apache License 2 IT Mill wird gegründet IT Mill Toolkit Release 4 AJAX Re-named Vaadin Vaadin 7 Beta 2000 2006 2008 2009 2012 2013 mp technology 05.02.2013 Page 9

Vaadin - Architektur UI Model als Komponentenbaum auf Server Rendering im Browser mittels GWT Widgets Kommunikation mittels json (UIDL) mp technology 05.02.2013 Page 10

Vaadin UI Komponenten Architektur Server UI Component - Button, Table, Tree, - Komplette Java API http / JSON Browser Widget - Client-seitige Komponente - Javascript Java - Compile with JDK Java - Compile with GWT mp technology 05.02.2013 Page 11

public class SampleApplication extends Application { TextField textfield; Button button; int counter = 0; @Override public void init() { setmainwindow(new Window("Sample Application")); textfield = new TextField("Counter"); button = new Button("Increment"); button.addlistener(new Button.ClickListener() { public void buttonclick(clickevent event) { textfield.setvalue(++counter); } }); } } // layout VerticalLayout layout = new VerticalLayout(); layout.setspacing(true); layout.addcomponent(textfield); layout.addcomponent(button); getmainwindow().setcontent(layout); mp technology 05.02.2013 Page 12

Laden der Applikation 1. Lade Seite HTML Skelett JavaScript (GWT) Resources (Images,CSS) 830k 2. Lade UI Beschreibung via Ajax UIDL?repaintAll=1&sh=1200 < json > 1.3k 3. Rendern der Widgets (js) mp technology 05.02.2013 Page 13

Interaktion 1. Button Klick: XHR POST UIDL?windowName=1 Daten: ef2024db-ac97-47ca-ac62- f6dc084f4955435pid0 Changes 800b 2. Aktualisieren der UI auf Basis von UIDL mp technology 05.02.2013 Page 14

UI Layouting Fühlt sich an wie in Swing Komponenten werden über verschiedene Layouts angeordnet Vertical Horizontal Layout GridLayout FormLayout CssLayout AbsoluteLayout Sub-Windows mp technology 05.02.2013 Page 15

UI Komponenten Vaadin Bibliothek Plugins Directory URL: http://demo.vaadin.com/sampler mp technology 05.02.2013 Page 16

Datenmodell mp technology 05.02.2013 Page 17

Projektvorstellung mp technology 05.02.2013 Page 18

Projektliste mp technology 05.02.2013 Page 19

View Projektliste // init searchfield ClearableSearchField searchfield = new ClearableSearchField( geti18n().getmessage("button.filter"), geti18n().getmessage("button.delete")); // bind click event geteventbinder().bindlistener(searchfield, "valuechange", "filtersearch"); BeanItemContainer<Project> datasource = getitemcontainer(); // init table Table projectstable = new Table(); projectstable.setcontainerdatasource(datasource); projectstable.setvisiblecolumns( new String[]{"name", "gm", "created", "..."}); projectstable.setselectable(true); projectstable.setimmediate(true); projectstable.setpagelength(0); Presenter // event handler public void onfiltersearch(valuechangeevent event) { } String searchstring = view.getsearchvalue(); projectscontainer.removeallitems(); List<Project> projects = projectrepository.find(searchstring); projectscontainer.addall(projects); mp technology 05.02.2013 Page 20

Kontextmenu View final Action ACTION_MANAGE = new Action(getI18N().getMessage("action.manage")); final Action ACTION_DELETE = new Action(getI18N().getMessage("action.delete")); projectstable.addactionhandler(new Action.Handler() { public Action[] getactions(object target, Object sender) { return new Action[]{ ACTION_MANAGE, ACTION_DELETE }; } }); public void handleaction(action action, Object sender, final Object target) { if (ACTION_MANAGE == action) { geteventbus().manageproject(((project)target).getid()); } else if (ACTION_DELETE == action) { geteventbus().deleteproject(((project)target).getid()); } } mp technology 05.02.2013 Page 21

TreeTable Bedenken wegen Geschwindigkeit Prototyp 15 Spalten, 2000 Einträge, ~Styling mp technology 05.02.2013 Page 22

TreeTable B mp technology 05.02.2013 Page 23

TreeTable Geschwindigkeit Vorher: 4.06 sec Nachher: 721ms mp technology 05.02.2013 Page 24

CustomLayout Html <div class="tooltip"> <span location="1"></span> <span location="2"></span> <span location="3"></span> <span location="4"></span> <span location="5"></span> </div> Java CustomLayout layout = new CustomLayout(templateStream); layout.addcomponent(label1, "1"); layout.addcomponent(textfield1, "2"); Vergleich: HorizontalLayout HorizontalLayout layout = new HorizontalLayout (); layout.addcomponent(label1); layout.addcomponent(textfield1); mp technology 05.02.2013 Page 25

HorizontalLayout / CustomLayout CustomLayout Horizontal Layout <div style="border: none; margin: 0px; padding: 0px; width: 280px;" class="v-customlayout"> <div class="tooltip"> <span location="1" > <div class="v-label ">B</div> <div style="overflow: hidden; width: 225px; height: 19px;" class="horizontallayout"> <div style="width: 225px; height: 19px; "> <div style="height: 19px; width: 50px; "> <div style="float: left; margin-left: 0px;"> <div class="v-label v-label-inline5 inline5" style="width: 50px;">B</div> ~ 50 x pro Zeile ~ 1500 x im Screen mp technology 05.02.2013 Page 26

UI Herausforderungen: Table Mehrere Spalten zusammenfassen für gemeinsames Drag and Drop Farbige/Mehrzeilige Header -> Anpassungen an GWT Clientcode mp technology 05.02.2013 Page 27

UI Herausforderungen Scrolling / Scrollbars Browser Back / Bookmarks (#fragment) Multiple Browser Windows Browser Performance (IE7,IE8) mp technology 05.02.2013 Page 28

Verwendete Vaadin Add-Ons I18n Refresher ConfirmDialog EasyUploads Notifique mp technology 05.02.2013 Page 29

Erkenntnisse Stabiles Framework mit vielen guten Add-Ons Schnelle Entwicklung (vor allem mit JRebel) Layouting: Vorsicht Falle, nicht alles möglich Anpassungen vom GWT-Client Code zeitaufwändig Langsames Netzwerk beeinträchtigt Usability mp technology 05.02.2013 Page 30

Mit Vaadin Versprechungen / Erwartungen Reifes Framework mit aktiver Community und Doku Solide Komponentenbibliothek und Add-ons Einfache und schnelle Entwicklung!! Kritische Punkte Skalierbarkeit? Hat Probleme bei schlechtem Antwortverhalten?! Komplexität von Entwicklung eigener Komponenten?! mp technology 05.02.2013 Page 31

Ausblick: Vaadin 7 Layout Berechnungen vom Browser Kein Support mehr für IE 6 und 7 Verkleinerung des DOM Baumes Bessere Performance CSS mit Sass Variablen, Funktionen, Vererbung Neue API/Abstraktion für Client-Server Kommunikation Einfachere Erweiterbarkeit Einfacher JavaScript / 3rd Party Widgets zu integrieren Wird viele der Probleme von Vaadin 6 lösen Mehr Flexibilität beim Einsatz von JS-Frontend-Erweiterungen mp technology 05.02.2013 Page 32

Kontakt Benjamin Schupp schupp@mptechnology.ch Markus Kinzler kinzler@mptechnology.ch Offizielle Vaadin Schulungen in Zürich 2. 3. April 2013: Vaadin Fundamentals 4. 5. April 2013: Advanced Vaadin Anmeldung über https://vaadin.com/services#vaadintraining mp technology 05.02.2013 Page 33