Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Water Cooler Talks: A Look into a Developer's W...

Water Cooler Talks: A Look into a Developer's Workbench [Co-speaker]

OpenNTF August Webinar - August 2020

"...Serdar Basegmez utilizes Domino to create RESTful APIs for his clients. He will present his development environment and share some tips on Eclipse configuration, deployment and testing Domino plugins..."

sbasegmez

August 20, 2020
Tweet

More Decks by sbasegmez

Other Decks in Programming

Transcript

  1. TODAY’S SPECIAL ON MY WORKBENCH • RESTful API for Domino

    databases • Visit speakerdeck.com/sbasegmez • Designing JAX-RS services for Domino applications • OSGi plugins based on Apache Wink servlets. • Sample applications: • Node.js front-end, accessing Domino data • Customer-facing interfaces (PHP Website, native mobile applications, etc.) interacting internal systems
  2. DEVELOPMENT ENVIRONMENT Using… for… Eclipse IDE on Mac [Neon] OSGi

    plugin development OpenNTF XPages SDK Plugin Help to configure Eclipse PDE for Domino environment HCL Domino Designer on Windows NSF design, sandboxing and testbed HCL Domino Server 10.x / 11.x on CentOS Development, testing, staging and deployment Paw, Postman, Node.js scripts Testing (functional, scalability, performance, etc.) Stoplight Studio, Ulysses Documentation SourceTree + Bitbucket/Github Source Control OpenNTF Domino API Plugin Civilised way to use Java for Domino OpenNTF XLogback Plugin Logging
  3. DEVELOPMENT ENVIRONMENT Using… for… Eclipse IDE on Mac [Neon] OSGi

    plugin development OpenNTF XPages SDK Plugin Help to configure Eclipse PDE for Domino environment HCL Domino Designer on Windows NSF design, sandboxing and testbed HCL Domino Server 10.x / 11.x on CentOS Development, testing, staging and deployment Paw, Node.js scripts Testing (functional, scalability, performance, etc.) Stoplight Studio, Ulysses Documentation SourceTree + Bitbucket/Github Source Control OpenNTF Domino API Plugin Civilised way to use Java for Domino OpenNTF XLogback Plugin Logging Today’s focus
  4. THE ART OF ECLIPSE CONFIGURATION… • Using Eclipse vs Domino

    Designer • Better version, better tooling, more integrated • Configuring Eclipse to develop for Domino can be tricky! • This is the key step for efficient development. • I found my way among many possibilities
  5. THE ART OF ECLIPSE CONFIGURATION… • We aim to… •

    Compile successfully (Accessing domino packages) • Deploy using PDE (Run on Server) • Run locally (Manual/automated unit testing) • Overall… • JVM to be used (Notes or Domino) • Target Platform to be configured • File access to the Domino needed • Notes setup is nice to have
  6. THE ART OF ECLIPSE CONFIGURATION… • Target Platform is the

    key… • “The target platform specifies the set of bundles used to compile and build against within the Eclipse PDE (plugin development environment).” (Eclipse Wiki) • Java API for Domino is also needed [Notes.jar] • Build a plugin or add it to the JRE • Pain in the neck! Compiling Successfully
  7. THE ART OF ECLIPSE CONFIGURATION… • XPages SDK will configure

    the Domino OSGi platform to deploy your plugins directly into Domino Server. Domino Server Eclipse IDE Selected Projects [Eclipse Workspace] Target Platform [Eclipse Settings] XPages SDK Temporary Configuration for the Domino OSGi [pde.launch.ini] Deploy using PDE Points
  8. THE ART OF ECLIPSE CONFIGURATION… • Classical Scenario Eclipse IDE

    and Domino Server on Windows Target Platform Plugins Eclipse Workspace Domino OSGi Eclipse IDE OpenNTF XPages SDK Configuration
  9. THE ART OF ECLIPSE CONFIGURATION… • Alternative Scenario • Eclipse

    on Mac, Domino on Linux VM Domino Server on VM Eclipse IDE on Mac OpenNTF XPages SDK Configuration Target Platform Plugins Eclipse Workspace Domino OSGi Eclipse IDE Target Platform Plugins
  10. THE ART OF ECLIPSE CONFIGURATION… • Eclipse IDE can run

    Java code utilizing Domino Java API • More practical than restarting HTTP every time • Quick testing for your business logic • Unit testing for your API • Difficulties: • XSP / HTTP resources will not be available • Domino classes needs native libraries • Difficult to configure (especially on Mac) • Some capabilities might not work well Run Locally
  11. PRODUCTION AND DEPLOYMENT • Deploy to Production using Update Site

    replication • It works well if you release less frequently… • Feature-Update Site deployment might be tricky • If you touch plugin.xml, test on staging. • Sometimes, small differences between production and testing might become nasty • There are ways to automate this process as well.
  12. FURTHER ENHANCEMENTS • Maven / p2 repositories • Automated build,

    CI/CD pipelines • Headless Designer • Docker Runtime
  13. CHALLENGES • Using Eclipse on Mac is a challenge! •

    Notes for Mac is “different” • Obviously, no Designer / Domino on Mac • Even EOL differences needs to be considered • Domino Upgrades • Target platform needs to be updated on upgrades • If you use custom target platform, that’d be an issue • Document your setup on every step…