App Development – Where should I go now? engage 2015

App Development – Where should I go now?
engage 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
Samsung 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
4
Stateless, stateful – server-side oder client-side?
§  xxx
5
Stateless, stateful – server-side oder client-side?
§  xxx
6
Stateless, stateful – server-side oder client-side?
HTML
CSS
Java
JavaScript
§  xxx
7
Stateless, stateful – server-side oder client-side?
§  xxx
HTML
(1992)
CSS
(1996)
Java
(1995)
JavaScript
(1995)
8
9
Stateless, stateful – server-side oder client-side?
§  xxx
10
Stateless, stateful – server-side oder client-side?
§  xxx
11
Stateless, stateful – server-side oder client-side?
§  xxx
12
13
http://serienjunkies.org/serie/sledge-hammer/
14
http://www.beautylish.com/videos/nails
Stateless, stateful – server-side oder client-side?
§  xxx
15
http://io9.com/the-history-channel-and-jeremy-renner-are-working-on-te-1693267727
Stateless, stateful – server-side oder client-side?
§  xxx
16
http://io9.com/the-history-channel-and-jeremy-renner-are-working-on-te-1693267727
ARE
YOU
PREPARED?
17
18
https://www.flickr.com/photos/chuckcongdon/5647209408
19
http://io9.com/the-history-channel-and-jeremy-renner-are-working-on-te-1693267727
Programming Language Capabilities Notes/Domino
§  @Commands / @Functions
§  LotusScript
§  Procedural
§  OOP
20
Programming Language Capabilities Notes/Domino
§  JavaScript
§  On the web
§  In the client
§  CSS (not a language)
§  On the web
§  In the Client
21
Programming Language Capabilities Notes/Domino
§  Java
§  In Agents
§  In XPages
§  As OSGi HTTP Plugins for Equinox
§  As OSGi HTTP Plugins for Expeditor
§  As OSGi HTTP Plugins for DOTS (Domino OSGi Tasklet Service)
22
23
Self shooted
TIOBE Index
24
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
GitHut.info
25
GitHut.info
26
GitHut.info
27
GitHut.info
28
GitHut.info
29
GitHut.info
30
31
DUMB
vs.
KNOWS
32
Skillsets – Frontend
§  Strong eye for UI design
§  Love to move pixels
§  Working around Browser behaviour
§  Open to adapt new frameworks and behavior frequently
§  Experience in consuming APIs
33
Skillsets – Frontend
§  HTML5
§  JavaScript
§  Modern frameworks like AngulaJS (even after 2.0), Backbone.js,
Dojo, jQuery etc.
§  Node.js / Rhino
§  CSS3 / LESS / SASS
34
CSS2 vs. CSS3
§  New attribute selectors
§  element[foo^="bar“]
§  element[foo$="bar“]
§  element[foo*="bar“]
- <element foo="barn"
- <element foo="rebar">
- <element foo="rebaring">
§  New pseudo classes
§  :root
§  :nth-child(n)
§  :nth-last-child(n)
§  :enabled
§  Background style properties
§  background-clip
§  background-origin
35
LESS / SASS
§  CSS precompilers
§  Write in LESS or SASS – Output will be CSS
36
LESS
37
LESS
38
SASS
39
SASS
40
Client-side Frameworks
41
AngularJS HTML
42
AngularJS script
43
AngularFaces
44
Skillsets – Backend
§  Good understanding of application based security
§  KnowHow in SQL and NoSQL (i. e. MongoDB, CouchDB) databases
§  Minimum Java 7 knowledge, Java 8 preferred
§  Source control usage is a must (Git)
45
Skillsets – Backend
§  Experience with modern web development frameworks
(JavaServerFaces, GWT, Spring, Vaadin, JavaFX)
§  Hands-on experience with Junit testing, build tools (Maven) and
Continous Integration (CI) tool like Jenkins or Bamboo
§  Knowledge in designing secure, but also easily consumable APIs
§  Experience with J2EE AppServers (Tomcat, Liberty, Glassfish)
46
API Design
47
API Design
48
API Design
49
API Design
https://api.mycompany.com
/people/all
/people/<id>
/people/<id>
/people/<id>
50
API Design
https://api.mycompany.com
/people/all
/people/<id>
/people/<id>
/people/<id>
GET
GET
POST
DELETE
51
API Design
https://api.mycompany.com
/people/all
/people/<id>
/people/update/<id>
/people/delete/<id>
GET
GET
UPDATE
DELETE
52
API Design
53
API Design
54
JVM Frameworks
55
Domino server – your unknown powerhorse!
56
Domino server – your unknown powerhorse!
57
Domino server – the unknown powerhorse!
§  IBM has introduced with 8.5.3 a „new“ J2EE engine to the Domino
server
§  Expeditor WebContainer
§  Fulfills Servlet 2.5 specification
§  You can use standard Web Applications (aka Web Application
Archive == WAR) in a modified version
§  More information is here available
http://www.slideshare.net/fiorep/domino-osgi-development
58
Vaadin
59
XPages vs. Vaadin – History and Presence
XPages
•  Bought by IBM in 2001 (XForms)
Vaadin
•  In 2001 newly developed as
„Millstone Library“ (IT Mill)
•  Was „Workplace“
•  Based on JSF
•  Development by IBM (Core, closed
source) and partly by the
community (ExtLib)
•  Uses GWT since 2007 (IT Mill
Toolkit 4)
•  „Feels“ like SWT/AWT/Swing
•  Further development by Vaadin Ltd.
(open source, Apache licensed)
60
XPages vs. Vaadin – Operating systems
XPages
•  All Domino supportes operating
systems
Vaadin
•  All operating systems with Java 6
and higher
61
XPages vs. Vaadin – Supported AppServers
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
•  ...
62
XPages vs. Vaadin – Release / Dependencies
XPages
•  Rely on Domino-Updates (Major,
Minor, FP, IF)
Vaadin
•  New release (minor) all 4-5 weeks
•  Updating the App-Server means
Updating all XPages applications
•  Updates of the AppUpdates are
independent from Vaadin – and vice
versa
•  A server update affects all XPages
applications
•  Vaadin-Updates can be done
selectively on a per-applicatio base
63
XPages vs. Vaadin – IDE
XPages
•  IBM Domino Designer 8.5.2+, nur
Windows
Vaadin
•  Eclipse
•  IntelliJ
•  Netbeans
•  ...
64
XPages vs. Vaadin – Programming languages
XPages
Vaadin
•  SSJS
•  Java
•  JavaScript
•  JavaScript
•  Java
•  Scala
•  Jython
•  ...
65
Vaadin
66
Serverside – RAM (Vaadin example)
500 – 1.000 kb / Session
8.000 active Users == 8 GB
67
Stateless, stateful – server-side oder client-side?
68
http://www.slideshare.net/cnbailey/ibm-interconnect-java-vs-javascript
69
Thank you!
70