für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH 1
About me midpoints GmbH http://www.midpoints.de IBM Advanced Business Partner IBM Design Partner (Notes Domino, Mobile, Verse) Apple Enterprise Developer und MDM Group Member Samsunt Enterprise Alliance Partner René Winkelmeyer Head of Development Services - Enterprise Mobility Service - Mobile Device und Application Management - IBM Notes Traveler und IBM Mobile Connect 2
About me Skype muenzpraeger Twitter muenzpraeger LinkedIn muenzpraeger Slideshare muenzpraeger Web http://blog.winkelmeyer.com http://www.midpoints.de René Winkelmeyer Head of Development Mail mail@winkelmeyer.com rene.winkelmeyer@midpoints.de OpenNTF File Navigator Generic NSF View Widget for IBM Connections 3
Agenda Stateless, stateful server-side oder client-side? XPages vs. Vaadin Vaadin Grundlagen Vaadin Development per Code und per GUI-Designer Deployment auf Domino und Liberty 4
Agenda Stateless, stateful server-side oder client-side? XPages vs. Vaadin Vaadin Grundlagen Vaadin Development per Code und per GUI-Designer Deployment auf Domino und Liberty 5
Stateless, stateful server-side oder client-side? xxx 6
Stateless, stateful server-side oder client-side? xxx HTML (1992) CSS (1996) Java (1995) JavaScript (1995) 7
Stateless, stateful server-side oder client-side? xxx 8
Stateless, stateful server-side oder client-side? xxx 9
Stateless, stateful server-side oder client-side? xxx 10
Client-side Frameworks 11
JVM Frameworks 12
Stateless, stateful server-side oder client-side? xxx 13
14
DUMB vs. KNOWS 15
NEED DATA 16
Person 17
Stateless, stateful server-side oder client-side? 18
Stateless, stateful server-side oder client-side? 19
Stateless, stateful server-side oder client-side? 20
AngularJS HTML 21
AngularJS script 22
API Design https://api.mycompany.com /people/all /people/<id> /people/<id> /people/<id> 23
API Design https://api.mycompany.com /people/all /people/<id> /people/<id> /people/<id> GET GET POST DELETE 24
API Design https://api.mycompany.com /people/all /people/<id> /people/update/<id> /people/delete/<id> GET GET UPDATE DELETE 25
GET Person 26
REST Handling 27
Vaadin 28
AngularFaces 29
Serverside RAM (Vaadin example) 500 1.000 kb / Session 8.000 aktive User == 8 GB 30
http://www.slideshare.net/cnbailey/ibm-interconnect-java-vs-javascript Stateless, stateful server-side oder client-side? 31
Agenda Stateless, stateful server-side oder client-side? XPages vs. Vaadin Vaadin Grundlagen Vaadin Development per Code und per GUI-Designer Deployment auf Domino und Liberty 32
Vaadin die Entscheidung Beschäftigung mit Vaadin seit 2013 Selektion als Basis-Platform für Web-Anwendungen von midpoints (anstatt XPages) https://vaadin.com/certificate/-/view/48b183a61884e0bced560ed20b580295 33
XPages vs. Vaadin Historie und Gegenwart XPages Vaadin Zukauf der IBM in 2001 (vormals XForms) War mal Workplace Hat seinen Ursprung in JSF Weiterentwicklung erfolgt durch IBM (Core, closed source) und teils durch Community (ExtLib) In 2001 neu entwickelt als Millstone Library (IT Mill) Nutzung von GWT seit 2007 (IT Mill Toolkit 4) Fühlt sich an wie SWT/Swing/ AWT Weiterentwicklung erfolgt durch Vaadin Ltd. (open source, Apache licensed) 34
XPages vs. Vaadin Betriebssysteme XPages Vaadin Alle von Domino unterstützte Betriebssysteme Alle Betriebssysteme mit Java 6 und höher 35
XPages vs. Vaadin Unterstützte App-Server XPages Vaadin IBM Domino XPages Buildpack (IBM Bluemix) Apache Tomcat 5+ IBM WebSphere (Full/Liberty) 7+ JBoss 4+ Liferay Portal 5.2 Oracle WebLogic 10.3+ WildFly 8+ Java Servlet 2.4 / JSR-286... 36
XPages vs. Vaadin Release / Abhängigkeiten XPages Vaadin Abhängig von Domino-Updates (Major, Minor, FP, IF) Ein Update des App-Servers bringt auch immer ein Update der XPages mit sich Ein Update wirkt sich auf alle XPages-Anwendungen aus Neues Release (Minor) alle 4-5 Wochen Updates des App-Servers sind unabhängig von Vaadin und vice versa Vaadin-Updates können selektiv pro Applikation durchgeführt werden 37
XPages vs. Vaadin IDE XPages Vaadin IBM Domino Designer 8.5.2+, nur Windows Eclipse IntelliJ Netbeans... 38
XPages vs. Vaadin Programmiersprachen XPages Vaadin SSJS JavaScript Java Java JavaScript Scala Jython... 39
Agenda Stateless, stateful server-side oder client-side? XPages vs. Vaadin Vaadin Grundlagen Vaadin Development per Code und per GUI-Designer Deployment auf Domino und Liberty 40
Vaadin Valo, Sampler und Github Demo Valo-Theme http://demo.vaadin.com/valo-theme/ Demo Sampler http://demo.vaadin.com/sampler Github https://github.com/vaadin 41
Vaadin Addons http://www.vaadin.com/directory 42
Vaadin Pro Tools http://www.vaadin.com/tools-and-services 43
Vaadin Grundlagen Architektur 44
Vaadin Grundlagen Client-side communication 45
Vaadin Grundlagen Komponenten 46
Agenda Stateless, stateful server-side oder client-side? XPages vs. Vaadin Vaadin Grundlagen Vaadin Development per Code und per GUI-Designer Deployment auf Domino und Liberty 47
Vaadin Development IDE-Setup IBM hat mit 8.5.x eine J2EE-Engine dem Domino-Server hingezfügt Expeditor WebContainer Erfüllt Servlet 2.5 Spezifikation Ermöglicht den Einsatz von Standard-WebApps (aka Web Application Archive == WAR) in etwas abgewandelter Form Setup-Prozedur ist hier beschrieben (wir wollen ja keinen alten Kaffee aufkochen) http://www.slideshare.net/fiorep/domino-osgi-development 48
Vaadin Development IDE-Setup OpenNTF Workflow for XPages Setzt den Activiti Explorer ein, welcher auf Vaadin basiert http://www.openntf.org/main.nsf/project.xsp?r=project/workflow %20for%20XPages/summary 49
Vaadin Development Basics 50
Vaadin Development IDE-Setup Eclipse J2EE Vaadin Eclipse Plug-In Alle Installations-Varianten (verschiedene IDEs, Vorgehensweisen) sind im Book of Vaadin beschrieben https://vaadin.com/book/-/page/getting-started.html 51
Vaadin Development IDE-Setup Im Idealfall wird das Vaadin Eclipse-Plug-In für die Erstellung einer neuen App eingesetzt Fügt weitere Abhängigkeiten und Toolings hinzu wie Maven oder Tycho, daher nur mit deutlichem Mehraufwand im Domino- Umfeld einzusetzen Für Domino empfiehlt sich das Deployment innerhalb des Plug-In (ungünstig, aber möglich) oder als dediziertes Plug-In, welches die Vaadin-Klassen exportiert 52
Vaadin Development IDE-Setup 53
Vaadin Development IDE-Setup 54
Vaadin Development IDE-Setup 55
Vaadin Development IDE-Setup 56
Vaadin Development IDE-Setup 57
Vaadin Development UI Eine Applikation kann mehrere UI s haben Ein UI gibt es immer in einer Instanz pro User Vaadin verfolgt einen Single-Page-Approach Ohne manuelle Zuarbeit kein URL-Navigation 58
Vaadin Development UI 59
Vaadin Development UI 60
Vaadin Development Components Components werden über addcomponent() und addcomponents() hinzugefügt Die Reihenfolge der Methodenaufrufe bestimmt die UI Anzeige 61
Vaadin Development Layouts VerticalLayout HorizontalLayout GridLayout FormLayout (+1 für Erfassungsmasken) CssLayout 62
Vaadin Development Layouts 63
Vaadin Development Layouts 64
Vaadin Development Listener Bekannt aus AWT, Swing, SWT etc. Listened auf eine User-Interaktion Field enter Button click etc. 65
Vaadin Development per GUI-Designer 66
Agenda Stateless, stateful server-side oder client-side? XPages vs. Vaadin Vaadin Grundlagen Vaadin Development per Code und per GUI-Designer Deployment auf Domino und Liberty 67
Deployment auf Domino Export als Plug-In-Project Entweder via Domino UpdateSite oder direkt als File nach <dominodata>/workspace/applications/eclipse/plugins 68
Deployment auf WebSphere Liberty WebSphere Liberty == IBM s Antwort auf Tomcat & Co. Speed-Demoing heute abend! Export aus Eclipse als WAR und Ablage in das Unterverzeichnis dropins des WebSphere Liberty Servers 69
Deployment - Ressource http://www.slideshare.net/markmyers106/1-app-2-developers-3-servers 70
DEMO 71
Q & A! 72