für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René...
Transcript of für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René...
1
für Domino (und andere)
EntwicklerCamp 2015
René Winkelmeyer midpoints GmbH
2
René Winkelmeyer Head of Development
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 Services - Enterprise Mobility Service - Mobile Device und Application Management - IBM Notes Traveler und IBM Mobile Connect
About me
3
• Skype
muenzpraeger • Twitter
muenzpraeger • LinkedIn
muenzpraeger • Slideshare
muenzpraeger
• Web http://blog.winkelmeyer.com http://www.midpoints.de
• Mail [email protected] [email protected]
OpenNTF • File Navigator • Generic NSF View Widget for IBM Connections
About me
René Winkelmeyer Head of Development
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
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
6
Stateless, stateful – server-side oder client-side?
§ xxx
7
Stateless, stateful – server-side oder client-side?
§ xxx
HTML (1992)
JavaScript (1995)
CSS (1996)
Java (1995)
8
Stateless, stateful – server-side oder client-side?
§ xxx
9
Stateless, stateful – server-side oder client-side?
§ xxx
10
Stateless, stateful – server-side oder client-side?
§ xxx
11
Client-side Frameworks
12
JVM Frameworks
13
Stateless, stateful – server-side oder client-side?
§ xxx
14
15
DUMB vs.
KNOWS
16
NEED DATA
17
Person
18
Stateless, stateful – server-side oder client-side?
19
Stateless, stateful – server-side oder client-side?
20
Stateless, stateful – server-side oder client-side?
21
AngularJS HTML
22
AngularJS script
23
API Design
https://api.mycompany.com /people/all /people/<id> /people/<id> /people/<id>
24
API Design
https://api.mycompany.com /people/all GET /people/<id> GET /people/<id> POST /people/<id> DELETE
25
API Design
https://api.mycompany.com /people/all GET /people/<id> GET /people/update/<id> UPDATE /people/delete/<id> DELETE
26
GET Person
27
REST Handling
28
Vaadin
29
AngularFaces
30
Serverside – RAM (Vaadin example)
500 – 1.000 kb / Session
8.000 aktive User == 8 GB
31
Stateless, stateful – server-side oder client-side?
http://www.slideshare.net/cnbailey/ibm-interconnect-java-vs-javascript
32
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
33
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
34
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)
35
XPages vs. Vaadin – Betriebssysteme
XPages Vaadin
• Alle von Domino unterstützte
Betriebssysteme
• Alle Betriebssysteme mit Java 6
und höher
36
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
• ...
37
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
38
XPages vs. Vaadin – IDE
XPages Vaadin
• IBM Domino Designer 8.5.2+, nur
Windows
• Eclipse
• IntelliJ
• Netbeans
• ...
39
XPages vs. Vaadin – Programmiersprachen
XPages Vaadin
• SSJS
• JavaScript
• Java
• Java • JavaScript
• Scala
• Jython
• ...
40
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
41
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
42
Vaadin – Addons
http://www.vaadin.com/directory
43
Vaadin – Pro Tools
http://www.vaadin.com/tools-and-services
44
Vaadin Grundlagen – Architektur
45
Vaadin Grundlagen – Client-side communication
46
Vaadin Grundlagen – Komponenten
47
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
48
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
49
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
50
Vaadin Development – Basics
51
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
52
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
53
Vaadin Development – IDE-Setup
54
Vaadin Development – IDE-Setup
55
Vaadin Development – IDE-Setup
56
Vaadin Development – IDE-Setup
57
Vaadin Development – IDE-Setup
58
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
59
Vaadin Development – UI
60
Vaadin Development – UI
61
Vaadin Development – Components
§ Components werden über addComponent() und addComponents() hinzugefügt
§ Die Reihenfolge der Methodenaufrufe bestimmt die UI Anzeige
62
Vaadin Development – Layouts
§ VerticalLayout
§ HorizontalLayout
§ GridLayout
§ FormLayout (+1 für Erfassungsmasken)
§ CssLayout
63
Vaadin Development – Layouts
64
Vaadin Development – Layouts
65
Vaadin Development – Listener
§ Bekannt aus AWT, Swing, SWT etc.
§ „Listened“ auf eine User-Interaktion
§ Field enter
§ Button click
§ etc.
66
Vaadin Development – per GUI-Designer
67
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
68
Deployment auf Domino
§ Export als Plug-In-Project
§ Entweder via Domino UpdateSite oder direkt als File nach <dominodata>/workspace/applications/eclipse/plugins
69
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
70
Deployment - Ressource
http://www.slideshare.net/markmyers106/1-app-2-developers-3-servers
71
DEMO
72
Q & A!