für Domino (und andere) - EntwicklerCamp · 1 für Domino (und andere) EntwicklerCamp 2015 René...

Preview:

Citation preview

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 mail@winkelmeyer.com rene.winkelmeyer@midpoints.de

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!

Recommended