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
© Copyright 2024