Pluggable Seismic Data Visualizer on the NetBeans Platform
INTViewer is a NetBeans Platform based platform for the viewing, analysis, and QC of seismic data. Thanks to the powerful plugin architecture offered by the NetBeans Platform, INT's customers can easily extend the functionality of the application. Customers that develop plugins include large Oil & Gas companies that implement custom workflows to handle specialized tasks such as QC of seismic data acquisition or Signal/Noise analysis.
With the recent release of INTViewer 4, the time is ripe for an article about this application! Below follows an interview with Andrey Ilinykh, software architect for INTViewer.
Hi Andrey, what's your responsibility in the INTViewer project?
Our product is a NetBeans Platform based collection of modules. I work mostly on the core module (INTViewer Platform). It gives plugin developers an API to wire their extensions to the platform.
What's INTViewer in a nutshell and what makes it unique?
INTViewer is a platform for visualization, analysis, and QC of seismic data for the Oil & Gas industry.
What is unique about this product is its extensibility. Our main focus when building the application has been to provide first class data access and visualization along with a minimum set of analysis capability. Our customers can then tailor the application to match their specific needs.
We also host a site that contains optional plugins from INT or others contributed by our customers.
What are some specific problems that software for seismic data needs to deal with?
The biggest problem is the data size. Seismic datasets are large: they can easily be several terabytes in size.
Java, Swing, and the NetBeans Platform underpin this software. Why and how was this decision made?
We have been using Swing for many years. Most of our products are graphics libraries for visualization and interaction with complex data and they are Swing based. INTViewer is an application built on the top of these libraries. At some point, we realized we needed an extensible platform, and our choices were Eclipse or NetBeans. Eclipse is a great product, but it is SWT based. It doesn't work very well with Swing.
So, our choice was pretty natural.
What do you think of JavaFX in the context of INTViewer?
I don't think JavaFX is what we need. We use both data processing and data visualization. Our application is very CPU consuming.
What specific features of the NetBeans Platform are particularly useful to you?
- At the top of the list would have to be NetBeans' modular architecture. This allows us to break our application into small modules and greatly reduce the number of dependencies.
- Then, the Lookup concept. We extend our application by injecting new services. It could be data processing, adapters which convert data on the fly, or additional GUI panels. With Lookup we can add new features with the same level of complexity.
- DataLoader. Our application is data driven. Ability to plug in new data support is important. We extend DataObject a lot.
Why should someone start using the NetBeans Platform? Do you have tips/tricks for people starting with the NetBeans Platform?
NetBeans is a great product that offers a lot of useful functionality right out the box. It provides a solid architecture for developing truly modular applications. NetBeans makes it easy to do things right and it steers you away from bad practices.
Any things that surprised you (in a good way) about the NetBeans Platform?
The modularity. There are several functions in NetBeans which didn't precisely meet our needs. With the help of the documentation and user forums, we were always able to find clean ways to do what we need without having to resort to hacks or workarounds. For instance, we replaced the mime types resolver and plugged in our own selection model.
What could be improved about the NetBeans Platform?
We would like to see MDI support. But doubt it is on NetBeans team to do list. Performance while working with large projects could be improved.
What's new in the latest release, i.e., INTViewer 4?
From a "NetBeans" standpoint, one of the most interesting new features is the update center. We have created several repositories from which our customers can download all sorts of plugins, including community contributed plugins and optional tools from INT.
What are some new features planned for upcoming releases?
We are currently working with JOGL and GPU technology to improve the rendering speed for both our 2D and 3D displays.
Thanks Andrey and congratulations with the release of INTViewer 4!