für Domino (und andere) EntwicklerCamp 2015

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
Services
- Enterprise Mobility Service
- Mobile Device und Application Management
- IBM Notes Traveler und IBM Mobile Connect
René Winkelmeyer
Head of Development
2
About me
•  Skype
muenzpraeger
•  Twitter
muenzpraeger
•  LinkedIn
muenzpraeger
•  Slideshare
muenzpraeger
•  Web
•  Mail
René Winkelmeyer
http://blog.winkelmeyer.com
http://www.midpoints.de
[email protected]
[email protected]
Head of Development
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
Stateless, stateful – server-side oder client-side?
31
http://www.slideshare.net/cnbailey/ibm-interconnect-java-vs-javascript
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)
•  In 2001 neu entwickelt als
„Millstone Library“ (IT Mill)
•  War mal „Workplace“
•  Nutzung von GWT seit 2007 (IT Mill
Toolkit 4)
•  Hat seinen Ursprung in JSF
•  Weiterentwicklung erfolgt durch
IBM (Core, closed source) und teils
durch Community (ExtLib)
•  „Fühlt“ sich an wie SWT/Swing/
AWT
•  Weiterentwicklung erfolgt durch
Vaadin Ltd. (open source, Apache
licensed)
34
XPages vs. Vaadin – Betriebssysteme
XPages
•  Alle von Domino unterstützte
Betriebssysteme
Vaadin
•  Alle Betriebssysteme mit Java 6
und höher
35
XPages vs. Vaadin – Unterstützte App-Server
XPages
Vaadin
•  IBM Domino
•  Apache Tomcat 5+
•  XPages Buildpack (IBM Bluemix)
•  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
•  Abhängig von Domino-Updates
(Major, Minor, FP, IF)
Vaadin
•  Neues Release (Minor) alle 4-5
Wochen
•  Ein Update des App-Servers bringt •  Updates des App-Servers sind
auch immer ein Update der XPages
unabhängig von Vaadin – und vice
mit sich
versa
•  Ein Update wirkt sich auf alle
XPages-Anwendungen aus
•  Vaadin-Updates können selektiv
pro Applikation durchgeführt
werden
37
XPages vs. Vaadin – IDE
XPages
•  IBM Domino Designer 8.5.2+, nur
Windows
Vaadin
•  Eclipse
•  IntelliJ
•  Netbeans
•  ...
38
XPages vs. Vaadin – Programmiersprachen
XPages
Vaadin
•  SSJS
•  Java
•  JavaScript
•  JavaScript
•  Java
•  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 DominoUmfeld 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