app development – where should i go...
TRANSCRIPT
1
App Development – Where should I go now?
engage 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 Samsung 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
5
Stateless, stateful – server-side oder client-side?
§ xxx
6
Stateless, stateful – server-side oder client-side?
§ xxx
7
Stateless, stateful – server-side oder client-side?
§ xxx
HTML
JavaScript
CSS
Java
8
Stateless, stateful – server-side oder client-side?
§ xxx
HTML (1992)
JavaScript (1995)
CSS (1996)
Java (1995)
9
10
Stateless, stateful – server-side oder client-side?
§ xxx
11
Stateless, stateful – server-side oder client-side?
§ xxx
12
Stateless, stateful – server-side oder client-side?
§ xxx
13
http://serienjunkies.org/serie/sledge-hammer/
14
http://www.beautylish.com/videos/nails
15
Stateless, stateful – server-side oder client-side?
§ xxx
http://io9.com/the-history-channel-and-jeremy-renner-are-working-on-te-1693267727
16
Stateless, stateful – server-side oder client-side?
§ xxx
http://io9.com/the-history-channel-and-jeremy-renner-are-working-on-te-1693267727
17
ARE YOU
PREPARED?
18
https://www.flickr.com/photos/chuckcongdon/5647209408
19
http://io9.com/the-history-channel-and-jeremy-renner-are-working-on-te-1693267727
20
Programming Language Capabilities Notes/Domino
§ @Commands / @Functions
§ LotusScript
§ Procedural
§ OOP
21
Programming Language Capabilities Notes/Domino
§ JavaScript
§ On the web
§ In the client
§ CSS (not a language)
§ On the web
§ In the Client
22
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)
23
Self shooted
24
TIOBE Index
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
25
GitHut.info
26
GitHut.info
27
GitHut.info
28
GitHut.info
29
GitHut.info
30
GitHut.info
31
32
DUMB vs.
KNOWS
33
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
34
Skillsets – Frontend
§ HTML5
§ JavaScript
§ Modern frameworks like AngulaJS (even after 2.0), Backbone.js, Dojo, jQuery etc.
§ Node.js / Rhino
§ CSS3 / LESS / SASS
35
CSS2 vs. CSS3
§ New attribute selectors § element[foo^="bar“] - <element foo="barn" § element[foo$="bar“] - <element foo="rebar"> § element[foo*="bar“] - <element foo="rebaring">
§ New pseudo classes § :root § :nth-child(n) § :nth-last-child(n) § :enabled
§ Background style properties § background-clip § background-origin
36
LESS / SASS
§ CSS precompilers
§ Write in LESS or SASS – Output will be CSS
37
LESS
38
LESS
39
SASS
40
SASS
41
Client-side Frameworks
42
AngularJS HTML
43
AngularJS script
44
AngularFaces
45
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)
46
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)
47
API Design
48
API Design
49
API Design
50
API Design
https://api.mycompany.com /people/all /people/<id> /people/<id> /people/<id>
51
API Design
https://api.mycompany.com /people/all GET /people/<id> GET /people/<id> POST /people/<id> DELETE
52
API Design
https://api.mycompany.com /people/all GET /people/<id> GET /people/update/<id> UPDATE /people/delete/<id> DELETE
53
API Design
54
API Design
55
JVM Frameworks
56
Domino server – your unknown powerhorse!
57
Domino server – your unknown powerhorse!
58
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
59
Vaadin
60
XPages vs. Vaadin – History and Presence
XPages Vaadin
• Bought by IBM in 2001 (XForms)
• Was „Workplace“
• Based on JSF
• Development by IBM (Core, closed source) and partly by the community (ExtLib)
• In 2001 newly developed as
„Millstone Library“ (IT Mill)
• Uses GWT since 2007 (IT Mill Toolkit 4)
• „Feels“ like SWT/AWT/Swing
• Further development by Vaadin Ltd. (open source, Apache licensed)
61
XPages vs. Vaadin – Operating systems
XPages Vaadin
• All Domino supportes operating
systems
• All operating systems with Java 6
and higher
62
XPages vs. Vaadin – Supported AppServers
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
• ...
63
XPages vs. Vaadin – Release / Dependencies
XPages Vaadin
• Rely on Domino-Updates (Major,
Minor, FP, IF)
• Updating the App-Server means Updating all XPages applications
• A server update affects all XPages applications
• New release (minor) all 4-5 weeks
• Updates of the AppUpdates are independent from Vaadin – and vice versa
• Vaadin-Updates can be done selectively on a per-applicatio base
64
XPages vs. Vaadin – IDE
XPages Vaadin
• IBM Domino Designer 8.5.2+, nur
Windows
• Eclipse
• IntelliJ
• Netbeans
• ...
65
XPages vs. Vaadin – Programming languages
XPages Vaadin
• SSJS
• JavaScript
• Java
• Java • JavaScript
• Scala
• Jython
• ...
66
Vaadin
67
Serverside – RAM (Vaadin example)
500 – 1.000 kb / Session
8.000 active Users == 8 GB
68
Stateless, stateful – server-side oder client-side?
http://www.slideshare.net/cnbailey/ibm-interconnect-java-vs-javascript
69
70
Thank you!