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

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

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

1

für Domino (und andere)

EntwicklerCamp 2015

René Winkelmeyer midpoints GmbH

Page 2: für Domino (und andere) - EntwicklerCamp · 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

Page 3: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 4: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 5: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 6: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

6

Stateless, stateful – server-side oder client-side?

§  xxx

Page 7: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

7

Stateless, stateful – server-side oder client-side?

§  xxx

HTML (1992)

JavaScript (1995)

CSS (1996)

Java (1995)

Page 8: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

8

Stateless, stateful – server-side oder client-side?

§  xxx

Page 9: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

9

Stateless, stateful – server-side oder client-side?

§  xxx

Page 10: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

10

Stateless, stateful – server-side oder client-side?

§  xxx

Page 11: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

11

Client-side Frameworks

Page 12: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

12

JVM Frameworks

Page 13: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

13

Stateless, stateful – server-side oder client-side?

§  xxx

Page 14: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

14

Page 15: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

15

DUMB vs.

KNOWS

Page 16: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

16

NEED DATA

Page 17: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

17

Person

Page 18: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

18

Stateless, stateful – server-side oder client-side?

Page 19: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

19

Stateless, stateful – server-side oder client-side?

Page 20: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

20

Stateless, stateful – server-side oder client-side?

Page 21: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

21

AngularJS HTML

Page 22: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

22

AngularJS script

Page 23: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

23

API Design

https://api.mycompany.com /people/all /people/<id> /people/<id> /people/<id>

Page 24: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

24

API Design

https://api.mycompany.com /people/all GET /people/<id> GET /people/<id> POST /people/<id> DELETE

Page 25: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

25

API Design

https://api.mycompany.com /people/all GET /people/<id> GET /people/update/<id> UPDATE /people/delete/<id> DELETE

Page 26: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

26

GET Person

Page 27: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

27

REST Handling

Page 28: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

28

Vaadin

Page 29: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

29

AngularFaces

Page 30: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

30

Serverside – RAM (Vaadin example)

500 – 1.000 kb / Session

8.000 aktive User == 8 GB

Page 31: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

31

Stateless, stateful – server-side oder client-side?

http://www.slideshare.net/cnbailey/ibm-interconnect-java-vs-javascript

Page 32: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 33: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 34: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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)

Page 35: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

35

XPages vs. Vaadin – Betriebssysteme

XPages Vaadin

•  Alle von Domino unterstützte

Betriebssysteme

•  Alle Betriebssysteme mit Java 6

und höher

Page 36: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

•  ...

Page 37: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 38: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

38

XPages vs. Vaadin – IDE

XPages Vaadin

•  IBM Domino Designer 8.5.2+, nur

Windows

•  Eclipse

•  IntelliJ

•  Netbeans

•  ...

Page 39: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

39

XPages vs. Vaadin – Programmiersprachen

XPages Vaadin

•  SSJS

•  JavaScript

•  Java

•  Java •  JavaScript

•  Scala

•  Jython

•  ...

Page 40: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 41: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 42: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

42

Vaadin – Addons

http://www.vaadin.com/directory

Page 43: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

43

Vaadin – Pro Tools

http://www.vaadin.com/tools-and-services

Page 44: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

44

Vaadin Grundlagen – Architektur

Page 45: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

45

Vaadin Grundlagen – Client-side communication

Page 46: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

46

Vaadin Grundlagen – Komponenten

Page 47: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 48: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 49: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 50: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

50

Vaadin Development – Basics

Page 51: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 52: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 53: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

53

Vaadin Development – IDE-Setup

Page 54: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

54

Vaadin Development – IDE-Setup

Page 55: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

55

Vaadin Development – IDE-Setup

Page 56: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

56

Vaadin Development – IDE-Setup

Page 57: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

57

Vaadin Development – IDE-Setup

Page 58: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 59: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

59

Vaadin Development – UI

Page 60: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

60

Vaadin Development – UI

Page 61: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

61

Vaadin Development – Components

§  Components werden über addComponent() und addComponents() hinzugefügt

§  Die Reihenfolge der Methodenaufrufe bestimmt die UI Anzeige

Page 62: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

62

Vaadin Development – Layouts

§  VerticalLayout

§  HorizontalLayout

§  GridLayout

§  FormLayout (+1 für Erfassungsmasken)

§  CssLayout

Page 63: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

63

Vaadin Development – Layouts

Page 64: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

64

Vaadin Development – Layouts

Page 65: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

65

Vaadin Development – Listener

§  Bekannt aus AWT, Swing, SWT etc.

§  „Listened“ auf eine User-Interaktion

§  Field enter

§  Button click

§  etc.

Page 66: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

66

Vaadin Development – per GUI-Designer

Page 67: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 68: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

68

Deployment auf Domino

§  Export als Plug-In-Project

§  Entweder via Domino UpdateSite oder direkt als File nach <dominodata>/workspace/applications/eclipse/plugins

Page 69: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

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

Page 70: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

70

Deployment - Ressource

http://www.slideshare.net/markmyers106/1-app-2-developers-3-servers

Page 71: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

71

DEMO

Page 72: für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René Winkelmeyer midpoints GmbH

72

Q & A!