Technical blog

ARender : Release of version 3.0.0 ‘Xenon’

The ARender Team is proud to announce the release of ARender 3.0.0, codename Xenon.

This major release introduces exiting new features, API changes and prepares ARender for the future !

An online demo is available here.

New features introduced

MultiView (#1134)

View multiple document at the same time with ARender 3 !

More precisely, a right click on a thumb shows a menu with an action called “Open as new”. Trigger this action divides the document content into two, adding the selected document on the right side of the original one. Trigger this action a second time splits the document content into three with the same behavior as before !

Obviously, every ARender feature like annotate, print, or rotate a page are still available for the current document content.

This behavior demands the management of a selected document content. Graphically speaking, the difference is on the background :

  • White for the selected one,
  • Black for the others.

The selection of the document content is simply done by a click on it or by letting the mouse above for more than one second.


Document Compare (#2854)

Identify quickly the differences between two documents !

More precisely, a right click on a thumb shows a menu with an action called “Open as new and compare” (if it is not the same document than the selected one).

Trigger this action compares the textual information of the two documents. The graphical result is: highlighted text on both documents, following a simple color rule:

  • Green: same text on both documents,
  • Orange: the text is different on both documents,
  • Red: the text is only on one document.

Useful when you want to compare two close version of a document for example.

Technically speaking, this feature browses each position of the documents containing a text, and compares it with the text at this specific position on the other document (if it exists).

Moreover, the comparison follows ARender streaming behavior. In other words, trigger this action compares the three first pages of the documents. Then, when the user scroll, new pages are loaded (streamed), so as the comparison !



  • Arrow (Line) annotations can now have different end types (#3045). These ends can be changed in Edition mode
  • Annotation reload : after each save operation (both manual or automatic, depending on the value of the annotation.autosave attribute) now operates a full refresh on annotations as saved by the server. This allows dynamic AnnotationId generation, Annotation validation at server-side, and extra properties update (user name, …).
  • Postit Reply (#3003) : users can now reply to a postit annotation on the exact same area; this creates a discussion where all the previous texts are preserved and shown in chronological order, along with user name.


Major Architectural changes

Entry points and startup time :

  • A lot of effort has been made to reduce startup time within ARender. This implies using ARender.html as a frontpage, because most Application Servers handle .html caching much more efficiently than .jsp.
  • ARender.html and ARender.jsp now behave exactly the same (#3120). All calls previously made with ARender.jsp?{specific_arguments} can now be made with ARender.html using the same semantics.
  • ARender.jsp no longer supports forceNoAsync=true, because all operations previously operated (Profile and CSS changes) can now be made on-the-fly by ARender.html
  • ARender entry-point at client side used to first call the server for configuration, then open the document. This has been changed to a single client/server round-trip, providing the client both configuration and initial document to load in a single call.


Asynchronous bean instantiation :

  • ARender 2.x used to have a deffered module instantiation mechanism, to speed up main application loading time versus optional features (annotations, …). This has been changed in favor of a much more generic, application-wide asynchronous bean definition, speeding up the application loading time on a per-configuration basis.


Major API changes


DocumentService is the core interface to handle all Document-related operations within ARender. Several modifications have been made to this API, including :

  • Move all Annotation-related operations to AnnotationService. The only purpose of DocumentService is to provide a valid AnnotationAccessor to play with. (#2985)
  • Introduce new Capabilities API to allow Rendition and Connectors to advertise HMI about features available and actual product version. (#2998)
  • Support for ProgressiveDocumentLayout (#2978)
  • Support for explicit document eviction out of cache (#3055)
  • Methods loadDocumentAccessor() and loadDocument() used to return DocumentId, which was nonsense because arguments already brought their DocumentId. Make these methods return void for consistency.


Annotation Model (#2932)

The new ARender3 annotation is model is based on the XFDF document model


Reading from and saving to XFDF file format is now straightforward within ARender, because the very core model for Annotation objects respect the XFDF philosophy and model from the client to the server.


AnnotationAccessor (#2949)

To support transactional annotation saving along with the new Annotation Model introduced, the previous Annotation connector API (DocumentAnnotationAccessor) has dropped in favor of the new AnnotationAccessor API.

This new API is strictly CRUD-based (, handling multi-annotation operations in a single call.


Backward compatibility and Known incompatibilities

ARender HMI 3.0.x and ARender Rendition 2.x.y should continue to work for most operations, except when :

  • Rendition is involved in Annotation fetching / saving,
  • Rendition is invoked for creating a new document with annotations.


Known issues

IBM FileNet connector :

  • Annotations previously stored with the FileNet Annotation model (PropDesc) are not supported yet. This will be fixed in 3.0.1 Release.

Postit Reply feature :

  • The look-and-feel of this feature is still to be refined.