AD106: Expand Your Apps And Skills To The Wider World. This was a discussion of where we've been as Domino developers and how we can move on from here.
13. The Situation Now
• XPages brought us forward
• …but only some of the way
• The core didn’t move forward
• OSGi can be peculiar
• The Java version lagged behind
• …and the IDE didn’t encourage it anyway
15. It’s a Big World
• Lots of languages: Java, JavaScript, Python, Ruby…
• Even more tools: Maven, Gradle, npm, gulp, grunt…
• Differing philosophies: pure client side/mixed,
microservices/monoliths
• It’s not just JavaScript: the state of the art everywhere
changes rapidly
• Just look at WWDC
• This can create choice paralysis
16. The Good News
• There’s a lot of overlap, both in tooling and in concepts
• It’s not necessary to go all-in on one stack
• The core concepts are more transferrable than ever
17. Maven Recap
• Build system for Java (and other) applications
• Handles dependencies automatically
• Similar in ways to OSGi, but with important differences
• There are newer systems, but it’s something of a baseline
• There’s a certain amount of pain when dealing with OSGi, but
that’s not entirely Maven’s fault
• Learning Maven gets you familiar with other related systems
19. Example Application: Social Analyzer
• AngularJS with Angular Material
• Runs on standalone Java servers, mobile devices, Bluemix,
and Azure
• Connects to third-party services such as Twitter and Slack
• Integrates with Bluemix services: Watson and DashDB
• Embeddable in Connections Cloud
20. AngularJS
• Client-side app framework
• Implies a technical split in the app between server-side REST
services and client-side JS
• Enforces a strong MVC programming model, with a
JavaScript flavor
21. Angular Material
• Angular implementation of Google’s Material Design
• One of several popular mobile/responsive UI toolkits
• Great for covering all devices*
* …assuming you’re okay with them all looking like Android
22. Third-party JS Libraries
• Angular Material, Chart.js, Font Awesome, and so forth
• Using npm, dependencies can be downloaded automatically
• Saves a TON of hassle compared to manually tracking down
and embedding dependencies
23. Deployment Servers
• As a servlet-based Java app, it can be deployed to standard
servers
• This provides a great deal of flexibility, and smooths the path
to cloud
• When in doubt, Tomcat does a fine job
24. Social Feeds
• One of the great benefits of Maven:
<dependency>
<groupId>com.ibm.watson.developer_cloud</groupId>
<artifactId>java-sdk</artifactId>
<version>3.0.0-RC1</version>
</dependency>
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-core</artifactId>
<version>[4.0,)</version>
</dependency>
<dependency>
<groupId>com.github.flowctrl</groupId>
<artifactId>slack-api</artifactId>
<version>v1.2.0.RELEASE</version>
</dependency>
<dependency>
<groupId>com.rometools</groupId>
<artifactId>rome</artifactId>
<version>1.6.0</version>
</dependency>
25. Bluemix and Connections Cloud
• Watson’s Tone Analyzer is just a REST API
• DashDB is just a JDBC-accessible database
• Development is done through embedded widgets
• The parent page provides an API to read (some) information
about the environment
• By using this, you can customize your app for the user and
community
• Since it’s “just” an iframe, the app can be deployed anywhere
26. Darwino.org
• A venture of OpenNTF
• Forthcoming sister site focusing on Darwino-related open-
source projects
• One way for OpenNTF to remain active and moving forward
27. Conclusion
• There’s a lot to learn
• …but you don’t have to learn all of it!
• The key is having an idea of what’s out there and learning the
common concepts
• Pick a moving platform and hop on it for a while