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. 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

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“] -

§ 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, , 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/ /people/ /people/

50

API Design https://api.mycompany.com

/people/all GET /people/ GET /people/ POST /people/ DELETE

51

API Design https://api.mycompany.com

/people/all GET /people/ GET /people/update/ UPDATE /people/delete/ 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 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/ 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