Mindoo Blog - Cutting edge technologies - About Java, Lotus Notes and iPhone

    • News Update from Mindoo Land: Domino JNA / JNX

      Karsten Lehmann  26 July 2021 13:15:43
      In a pandemic (in particular with two young kids of 5 and 7 years), times flies by even faster than in regular times, so it's no surprise that this blog has not seen many updates for a very long time.

      Just wanted to let you know that we are still very busy, leveraging and improving the Domino AppDev platform.

      The biggest project I have been working on in 2020 and so far in 2021 has to do with our Domino JNA codebase. For the project itself, we released 11 new versions since the beginning of 2020.

      We added functionality that we needed for our own development projects and the project got additional traction because it was used by the HCL Innovation Labs initially for Project Keep, now called HCL Domino REST API and in public beta for a few week.

      After the first few internal Keep versions, the HCL Innovation Labs team decided that having a modern Java API for Domino would not just be relevant for their own projects but for every developer out there and that this should (hopefully) become the new standard for Java development on Domino.

      That's why we teamed up with Jesse Gallagher to build something even better than Domino JNA - called Domino JNX.

      Let's call it Domino JNA on steroids. We took the codebase of Domino JNA and built a powerful API that is both easy to use and has even more features than Domino JNA.

      Some examples:
      • automatic garbage collection for Domino C handles (based on Java's PhantomReference)
      • leverages modern Java language features like Generics, lambda expressions, the Stream API and Optional's
      • more APIs, e.g. to read the database design and current efforts to provide write access as well
      • JSON serialization support
      • extensible, e.g. to store your own objects in Domino documents

      JNX is the foundation for the HCL Domino REST API which itself is the foundation for other cool projects like the OpenClient initiative that will provide a native EWS/JMAP API for Domino and therefore native access for Microsoft Outlook, the Apple Mail client and others.

      There are ongoing efforts to give you, the Domino developer community, access to the JNX API (not just as part of the existing public beta release of the Domino REST API).

      So stay stuned for upcoming announcements! :-)
      Comments

      1Jesper Kiaer  26.07.2021 14:46:20  News Update from Mindoo Land: Domino JNA / JNX

      Sound great!

      2Bernd Hort  29.07.2021 8:29:53  News Update from Mindoo Land: Domino JNA / JNX

      Is the Domino JNA API similar to the Domino JNX API?

      Or to put it another way: is it possible to start with Domino JNA and then switch to Domino JNX later as soon as it is available?

      3Karsten Lehmann  29.07.2021 9:20:08  News Update from Mindoo Land: Domino JNA / JNX

      There‘s no migration path and the objects have different names, e.g. NotesNote vs. Document, NotesDatabase vs. Database. Most functionality is similar, JNA is more low-level, e.g. all C API constants are available. First JNX release probably has no OSGi plugin yet like there is for the XPages extension library / Domino JNA to use the code in SSJS/NSF code, but that’s on the todo list.

      I would suggest you wait a couple of days. Hopefully JNX will then be on Maven Central.

      4Marcelo Castro  01.08.2021 15:45:30  News Update from Mindoo Land: Domino JNA / JNX

      Karsten,

      In your opinion, how would you compare AppDev Pack, Domino REST and JNX?

      If you would us Domino as a Database with all the ACL functionalities. which would be the way to go?

      Tks for all the work!

      5Karsten Lehmann  01.08.2021 18:47:22  News Update from Mindoo Land: Domino JNA / JNX

      The comparison should be between AppDevPack, Domino Data Access REST API and Project Keep ("HCL Domino REST API", leveraging the JNX API internally).

      I cannot really compare them, because I haven't used them so far (using custom application specific REST APIs in OSGi plugins here).

      AppDevPack seems to be a bit hard to set up (a couple of certificates here and there and three separate components to deal with: Domino with Proton, IAM server, NodeJS application using the domino-db module).

      It's a very low level access to Domino data (like the Domino Data Access REST API), while Keep gives you much more control over which user/role can read/write which data.

      The gRPC protocol of the AppDevPack has advantages regarding throughput and latency compared to classic HTTP requests like in the Domino Data Access REST API and Keep.

      If you want an easy and graphical solution to build app specific REST APIs for Domino that you can also give to external consumers like partner companies or frontend developers, I would say Keep is the way to go.

      For a high performance remote access to Domino data, the AppDevPack might be the better solution but you have to check if it's now possible to get sorted data back. Last time I checked you could only get unsorted data back which is a no-go for our frontend app requirements.

      The new QueryResultsProcessor API of 12.0.0 is able to filter/sort/categorize/aggregate Domino data. As soon as that has been added to the AppDevPack, that gap would be filled.

      6Karsten Lehmann  04.08.2021 8:37:38  News Update from Mindoo Land: Domino JNA / JNX

      The repository is now public and the package available on Maven Central:

      https://github.com/HCL-TECH-SOFTWARE/domino-jnx

      7Patrick Kwinten  16.08.2021 8:57:48  News Update from Mindoo Land: Domino JNA / JNX

      I get a 404 message when accessing the URL...

      What do you mean with "<b>graphical solution</b> to build app specific REST APIs for Domino"?

      Hopefully there will be a REST consumer in XPages one day?

      8Karsten Lehmann  16.08.2021 9:32:18  News Update from Mindoo Land: Domino JNA / JNX

      The repo was switched back to private by HCL. Don‘t know details, maybe some remaining legal discussions.

      Maven repo is here:

      https://search.maven.org/artifact/com.hcl.domino/domino-jnx

      Regarding „graphical solution“:

      I meant AFAIK there‘s a user interface to configure the endpoints and their access rights.