Architecture

INTViewer is a desktop application designed to facilitate geoscience QA/QC tasks. It is built on top of Java and the NetBeans platform and inherits lots of the design elements of that platform. Both Java and the NetBeans platform are industry standards that are OS-agnostic, allowing INTViewer to run on any operating system.

When you write a plugin for INTViewer, your base component is the INTViewer platform. This platform consists of a set of plugins coming from the NetBeans platform and another set of plugins written by INT. The INT plugins customize the NetBeans platform to INTViewer's look and feel and provide essential geoscience services such as data access, visualization and tools that INT is specialized in.

As a result of this unique combination, many aspects of INTViewer's architecture are leveraging well-known elements. At its core, NetBeans is based upon the Java Swing API (Application Programming Interface) for its user interface elements. The Swing API is very mature and already known by most Java developers. The NetBeans platform adds its own modular architecture to the Java API. This modular aspect is key to INTViewer: customers can modify behaviors without changing INTViewer itself: they only have to write plugins. There is only one distribution of INTViewer and multiple plugins to customize the user experience. The plugins that customers write don't need to be shared with INT: they can contain proprietary formats, science or workflows without any risk of being used by a competitor.

Plugins can remove, modify or add behaviors. While the ability to add features is an obvious benefit, the ability to modify of even remove services is key as well. The extent of customization capabilities is such that customers have successfully revamped the entire user interface to narrow INTViewer to only a small set of features, streamlined for target users.

Built on NetBeans

The modular design of the NetBeans platform is not the only aspect that is being leveraged by INTViewer. Mundane architectural considerations such as how to integrate menus, dialogs, help, keyboard shortcuts, option panels, wizards and windows are facilitated by the NetBeans API. Complex design concerns such as caching are also covered. It is easy to learn this API as the NetBeans platform has a large body of documentation and sample code. By using this API, plugin developers take advantage of years of experience brought by thousands of contributors. Developers will spend their time on geoscience, not on infrastructure code.

Another benefit is that INTViewer comes with its own development environment: the NetBeans IDE (Integrated Development Environment). This popular IDE provides many tools that enhance developer productivity, including the Swing UI editor to build dialogs graphically without getting into the fine details of the Swing layout API.

There are various ways that plugins written on top of the INTViewer platform can be distributed. While sending plugins by email is always possible, the favored way is to share plugins on an update center. An update center is a static web site where your plugin files are posted. Plugins found in that update center can be installed from INTViewer's user interface and users are notified of updates automatically. Update centers are the way that INT distributes optional plugins to all INTViewer users. Virtually all plugins can be updated through an update center, not just optional plugins. Another way that plugins can be distributed is to embed them into your own application, with your own branding.

While this site is dedicated to Java development with INTViewer, another important aspect of INTViewer's architecture is that it also allows automation through Python. There is a dedicated web site where you can find more about Python scripting with INTViewer.

Proceed to the pre-requirements to get started with your first plugin!