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 http://blog.winkelmeyer.com http://www.midpoints.de
• Mail [email protected] René Winkelmeyer [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 § xxx
Java JavaScript
7 Stateless, stateful – server-side oder client-side? HTML CSS § xxx (1992) (1996)
Java JavaScript (1995) (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“] -
§ 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/
50
API Design https://api.mycompany.com
/people/all GET /people/
51
API Design https://api.mycompany.com
/people/all GET /people/
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 Vaadin
• Bought by IBM in 2001 (XForms) • In 2001 newly developed as „Millstone Library“ (IT Mill) • Was „Workplace“ • Uses GWT since 2007 (IT Mill • Based on JSF Toolkit 4)
• Development by IBM (Core, closed • „Feels“ like SWT/AWT/Swing source) and partly by the community (ExtLib) • Further development by Vaadin Ltd. (open source, Apache licensed)
60 XPages vs. Vaadin – Operating systems
XPages Vaadin
• All Domino supportes operating • All operating systems with Java 6 systems 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 Vaadin
• Rely on Domino-Updates (Major, • New release (minor) all 4-5 weeks Minor, FP, IF) • Updates of the AppUpdates are • Updating the App-Server means independent from Vaadin – and vice Updating all XPages applications versa
• A server update affects all XPages • Vaadin-Updates can be done applications selectively on a per-applicatio base
63 XPages vs. Vaadin – IDE
XPages Vaadin
• IBM Domino Designer 8.5.2+, nur • Eclipse Windows • 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