Geertjan is a DZone Zone Leader and has posted 466 posts at DZone. You can read more from them at their website. View Full User Profile

Oil & Gas Exploration on the NetBeans Platform

04.24.2009
| 10975 views |
  • submit to reddit

Below, an interview with Bernd Ruehlicke (pictured, right) about Vinland Software Suite, an application for geoscientists created at Eriksfiord. Bernd also shares many tips and tricks here, together with interesting insights and starting points for NetBeans Platform newbies.

Bernd was born in Germany, grew up in Denmark, and currently lives in the United States. He is a petrophysicist with a background in mathematics and computer science.

Hi Bernd, you're behind the Vinland Software Suite. What exactly is that?

Vinland is an application in the oil & gas exploration business. Simply put, oil and gas sits in rock. Rock has exciting (often frustrating) behavior, if it gets exposed to stresses – like when drilling a hole through it. (Very similar to drilling tunnels through the Alps). The science around rock and its behavior under stress is often covered with the term “Geomechanics”.

Lots of the applications/formulas in the geomechanical arena are either hugely over-designed and hopeless-to-use spreadsheets or very time consuming Finite Element models, often run on poorly performing 32-bit based Windows boxes. Even though you will need a numerical model later along in your analysis, like when adding plastic deformation for example, many of the initial questions to bracket the stress tensor can be solved analytically and hence much faster.

Vinland was created to solve this problem. Its mission is to make the daily life of geoscientists easier and to avoid forcing them to become spreadsheet addicts. Here is a screenshot to make this a little bit more exciting:

(Click to enlarge the above screenshot.)

The next screenshot shows "icon badging" in action. I have really found this to be a very nice way to give the user visual feedback on the status of objects:

Learn more about icon badging here.

What are some of the typical problems that an application for geoscientists needs to solve?

The range is too wide to discuss here – it stretches from simple equation solving over massive data loading and processing to gigantic 3D visualizations consuming gigabytes of memory.

Too much software in the geoscience arena is written by “techies”. Really cool software features, but very difficult to use and most of the time with very ugly cumbersome GUIs (if any). Very often the poor design and complicated GUI is excused by the fact that the software tries to solve really complicated real-life questions. It is of no use, however, if geoscientists spend more time on the technical intrigues of the software than on using their skills on interpreting a geological setting.

How does the NetBeans Platform help with these problems?

From my experience, many applications start with a brilliant idea by someone and a quick prototype is written. Now it increases in size as new features get thrown into the prototype, without a lot of consideration of how to support this in the long run or investing time in the underlying design.

After a while, memory management, software integrity, and dependencies, plus a lot of Window/GUI management becomes the primary time consuming part of the software development process, which totally remove the focus from the main purpose... which is the development of features solving geological problems.

Using NetBeans as a platform reduces this time by multiple orders of magnitude:

  1. It makes sure that you do not mix the underlying framework with your application and keeps a clear separation of the code, simply due to the fact that you are using the very well designed NetBeans APIs.

  2. The NetBeans Platform gives you all the plumbing needed to deliver a scalable suite of applications. As a consequence of running inside the same JVM, you can allow objects from the different applications to be shared, for example via the powerful Lookup API. No need to re-invent the wheel and write your own messaging or IPC protocol, which again sidetracks you from your real purpose. Not to mention that NetBeans Platform 6.7 even includes an installer framework.

All this gives you more time to focus on the core value-adding activities.

How did you decide to use the NetBeans Platform over its competitors?

Platform independence, 100% Java, fully Swing based, very well documented, and very strong on-line community.

I looked at Eclipse. Just locating the correct distribution already gave me a bad taste – but after I came across their SWT dependency I ran away as fast as I could.

The NetBeans Platform is really the only true Swing based application platform out there. And, by the way, the Ant-based build system is extremely useful and powerful in a bigger setting, with integration into continuous build systems.

But isn't Swing "really slow"?

Without starting a long unproductive discussion with some rendering 3D graphics gurus – it really boils down to: A) Good code design for the parts rendering/acquiring data and B) Memory and C) The graphic card.

All the rest of the discussion around this is just noise.

How has the development process on the NetBeans Platform been? What would you recommend to others starting to do the same thing?

As with any bigger mature API, it will take some time to get acquainted with all the possibilities. I would say to really get the hang of it – set aside a month.

After that, you will start to enjoy all the benefits and possibilities given to you by the NetBeans APIs. The best thing is to find something which really interests you and to start there. For me, it was the Visual Library which really started me using the NetBeans Platform. (Quick start for Visual Library is here.)

Take your time and go through the tutorials – check the Top 10 NetBeans APIs screencasts as a start. After that – make sure you understood what was said. Then try it out! Then, find a tutorial which fits the problem you currently have – for me it was the Povray series (soon to be re-released as a full-blown on-line course) which really got me started. If you are planning to write an application with project support, node selection, file support, etc, go through this course once it is released.

Of course - subscribe to the NetBeans Platform developer mailing list, which is a fantastic resource.

Please finish this sentence: "If I had known that..." :-)

... removing objects from the Lookup also triggers a "LookupEvent", I would have saved some time debugging slow performance. It is of course obvious that it should (doohh), but... I simply did not think about it in the beginning. I will write a "removeSilently(object)" method for this in my VinlandLookup. ;-)

Any tips or tricks for advanced NetBeans Platform users?

  1. In Heiko Boeck's book there is an example of how to make a context aware action which is really cute and I use it all over Vinland. I combined this info with the example for a DropDown action from Geertjan's blog (here), Antonio Vieiro added this to the NetBeans Wiki (here).

  2. Think about if your TopComponent(s) should be singleton(s) or rather allow multiple instances – go here for details.

Anything else you want to share?

Remember to create many modules and use the decoupling strategy explained in Part 2 of the Top 10 NetBeans APIs series, which explains how service providers and dependencies are handled in the NetBeans Platform. (Use a Factory in case you need to get multiple instances of a given object).

It is a huge advantage, not just for limiting possible spaghetti-code but also to allow updates of an already deployed application via the update center mechanism!

 

 

AttachmentSize
fig1.png3.32 KB
fig2.jpg34.96 KB
vinland-2.png70.98 KB
bernd.png26.34 KB
Published at DZone with permission of its author, Geertjan Wielenga.

Comments

Milos Silhanek replied on Sat, 2009/04/25 - 3:43pm

Hi, interesting.

Could you explain your problems of this paragraph, please ? 

 

"Please finish this sentence: "If I had known that..." :-)

... removing objects from the Lookup also triggers a "LookupEvent", I"

Bernd Ruehlicke replied on Sun, 2009/04/26 - 11:32am

Hi Milos, suppose you are using a Lookup very similar as Wade Chandlers "Central Lookup" example. (http://wiki.netbeans.org/WadeChandler) I.e. you extend the AbstractLookup and have a private InstanceContent to which you add and remove objects. Now, you have a thread creating numerous of objects which you sent to the Lookup so that different modules can listen to this and consume intermediate results in their respective resultChanged(LookupEvent lookupEvent) method. Now, when doing a remove(..) on this lookup all the resultChanged() will do (again) whatever they did before and iterate through all the instances in the returned Lookup.Result which is not what you want at all. It can be I just have not understood this fully, but I could not find a way to transport the information that this was a "remove" event so that the consumer module can act on it appropriate in its resultChanged() method - like by ignoring this particular event. Currently I use HashCodes to identify objects "already seen" to exclude those from the operations. This works, but I was more looking for a way of flagging this event to be a "remove" event. Thanx for your interest

Milos Silhanek replied on Thu, 2009/06/18 - 12:25am

Hi Bernd. What do you use for 3D rendering? Java3D, JOGL or your rendering engine? Milos

Bernd Ruehlicke replied on Fri, 2009/06/19 - 9:09pm in response to: Milos Silhanek

Milos,  no need for 3D rendering yet. Still - when time comes I will use Java3D to avoid native code.

Fulin Wang replied on Fri, 2011/02/18 - 3:14am

Hi Bernd.Since you last reply , two years has almost passed . I'd like to contact you for netbeans on oil, but I don't know if you can see this reply ? May You Come . Can you leave a email address ? or Or I'll give you my : 199200521@qq.com I am from China . Looking forward to your early reply ! Best wishes for you !

Carla Brian replied on Sun, 2012/04/08 - 9:41pm

I am new with this application. But i think it is really good to use. I will practice more on this. - The Balancing Act Lifetime

Danish12 Ali replied on Mon, 2013/07/08 - 5:52am

 I think that it will come sooner or later. It is very much like with the apartheid. People oppose change at first, but then accept it once the majority do  haynes t-shirt

Danish12 Ali replied on Sun, 2013/07/14 - 2:37am

 You got a really useful blog I have been here reading for about an hour. I am a newbie and your success is very much an inspiration for me.  Svenska Artiklar

Danish12 Ali replied on Sun, 2013/07/14 - 5:09am

 Early November is not too early to start looking for your new winter boyfriend! If you planned ahead and stored last year's model in a tiny box in your attic, use the weeks before Thanksgiving to air him out and repair any damage caused by moths or attic-rodent  find out more

Danish12 Ali replied on Tue, 2013/07/16 - 4:37am

 Nicolas Sarozy est-il en trains e préparer le terrain d’une exclusion de la Grèce de l’Espace Schengen s’il venait à faire passer "ses" réformes ?  Graphic designers Brisbane

Danish12 Ali replied on Tue, 2013/07/23 - 1:18pm

 We were able to provide you with some of the facts above but there is still plenty more to write about in subsequent articles.check cheap online booking in less rates  no flame

Danish12 Ali replied on Wed, 2013/07/31 - 2:16pm

 My friend mentioned to me your blog, so I thought I’d read it for myself. Very interesting insights, will be back for more !  more from the liz wolfe skintervention book

Danish12 Ali replied on Thu, 2013/08/01 - 4:51am

 Hello, I find certain excitement reading posts in this blog. It's so naturally written. I was actually going through the nice helpful tips from the blog..  e-cigs reviews

Danish12 Ali replied on Mon, 2013/08/12 - 6:38am

 Very nice post. I just stumbled upon your weblog and wished to say that I have truly enjoyed surfing around your blog posts.  Urlaubsreisen

Danish12 Ali replied on Sat, 2013/08/17 - 6:24am

  think the natural and biological sources of vitamins and minerals are best compared with other packaging and plastic products. Always try to push things you need in your home. It is not only going to be cheaper, but it will be much more beneficial to your health and your family.  Eu Voices

Danish12 Ali replied on Sun, 2013/08/18 - 7:03am

 We were able to provide you with some of the facts above but there is still plenty more to write about in subsequent articles.check cheap online booking in less rates  Graviditetstest

Danish12 Ali replied on Mon, 2013/08/19 - 6:45am

 This will be one of the most important festivals for many people. Everyone already knows that the quality of Apple is unquestionable. There are many people who are very dependent.  Warenwirtschaft

Danish12 Ali replied on Fri, 2013/08/23 - 1:50pm

 I've just decided to create a blog, which I have been wanting to do for a while. Thanks for this post, it's really useful!  Notebook Onlineshop

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.