Skip to content

Designing for the Future

jadrake75 edited this page Jul 30, 2018 · 3 revisions

Summary

As the Java Webstart technology enters its 18th year, Oracle is preparing to do away with it in future versions of Java. While this technology has served the Image Bursting Application well, it has at times made the "seamless" upgrade not so seamless contending with system compatibility issues etc. Most of the support "time" has been spent resolving WebStart install issues with users.

To that end, a new direction is needed. The following is a brief outline on the proposal to validate the new approach and lead to a new solution

Spikes/Phases

Phase 1 - Electron Project.

Using the Electron Project setup a new build project that allows for a native Windows application to be generated. The purpose here is to learn the best practices of project setup for this technology.

Status - Validated

Phase 2 - ES6 UX in Electron

there are existing articles out there and this is not a concern but we need to ensure we can create a User Interface preferably using a modern ES6 based framework like Aurelia.io, Vue.js or React. This spike is to prove the ability to do so and include appropriate build tooling for handling SCSS stylesheets etc.

Status - Validated

Phase 3 - Java Integration

while the User Interface would be JavaScript, the actually MEAT of Image Burster is the use of NASA's ImageJ image processing library. The same library used to help process Hubel images, and the medical industry to process CT scans etc. Integrating this library into the Electron project is the KEY technology path. This spike should be used to validate that I can send some image buffer in and receive some post-processing results out (for example coordinates of stamps). This logic is pretty well wrapped today so should be relatively easy to extract from the current Image Bursting code. The real challenge is the Java integration in Electron. Does it work? Do you need to bundle a JRE in the application? Can it use a platform one? What is the best practice. If this spike fails to result in a workable solution I will need to look into other solutions.

Status - Validated

Phase 4 - NodeJS file and image handling capabilities in Electron

Can I take a coordinate from the image processing and extract a sub-image and write this to disk? What about image utilities in Node JS for setting DPI and other kind of pre-save processing not related to image bursting...

Phase 5 - Canvas Manipulation of Images

Using the JavaScript canvas to manipulate the regions found by the Image processing. Not too worried here, but since we are using zooming, I need to account for coordinate systems

If all of these investigations check out, I will go full into releasing a new version of the application as a standalone Windows install application.

Key Benefits

  • No dependency on WebStart. There will be a dependency on Java, but whether that is provided or is a pre-requisite is unclear. However it will be just the JRE needed
  • No Internet Connection needed to run. I will likely look at add a "check for update" kind of function, but this would be manually driven.
  • Modern better supported application using latest APIs and Security updates.