<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<!-- -*- xhtml -*- -->
  <title>Meet a NetBeans Module Writer: Tom Wheeler</title>
  <link rel="stylesheet" type="text/css" href="https://netbeans.org/netbeans.css">
  <meta name="AUDIENCE" content="NBUSER">
  <meta name="TYPE" content="ARTICLE">
  <meta name="EXPIRES" content="N">
<meta name="AUTHOR" content="Geertjan Wielenga">
  <meta name="developer" content="gwielenga@netbeans.org">
  <meta name="indexed" content="y">
  <meta name="description"
 content="">
<!--      Copyright (c) 2005 Sun Microsystems, Inc. All rights reserved. -->
<!--     Use is subject to license terms.-->
</head>
<body>
<h1>Meet a NetBeans Module Writer: Tom Wheeler</h1>
<p><small><a href="mailto:nbdocs_feedback@usersguide.netbeans.org?subject=Feedback:%20Meet%20A%20NetBeans%20Module%20Writer:%20Tom">Feedback</a></small></p>

<table width="190" border="1" cellspacing="0" cellpadding="5" align="right" class="ltblue">
  <tbody>
  <tr>
    <td align="center"><img align="center" src="nbm_interviews/tom/tom_wheeler.jpg" alt="Tom's picture">

	    <br><b>Tom Wheeler</b></td>
  </tr>
  
  <tr>
	  <td>Related info on Tom:	
		
		  <ul><li><a href="http://www.ociweb.com/education/instructors/tom_wheeler.html">Bio</a>
			  <li><a href="http://www.tomwheeler.com/netbeans/">His NetBeans Site</a>
		  </ul>
		  <p>Tom's Articles:
   <ul><li><a href="http://www.ociweb.com/jnb/jnbSep2005.html">Getting Started with the NetBeans Platform</a>
			  <li><a href="http://www.ociweb.com/jnb/jnbOct2005.html">Building A Complete NetBeans Platform Application</a>
	  </ul>
	  <b>Note:</b> Tom's articles were written for NetBeans IDE 4.1, before comprehensive plug-in module development support
	  was available. Now, in <a href="https://netbeans.org/community/releases/50/index.html">NetBeans IDE 5.0</a>, the development approach you would
	  take is very different. (As described in <a href="https://platform.netbeans.org/tutorials/index.html">tutorials</a>, you now
	  start developing modules by using wizards and templates.)
	  However, the conceptual information provided by Tom is still applicable to NetBeans IDE 5.0.</td>

			
  </tr>
  </tbody>
</table>

<p>NetBeans interviewed Tom Wheeler, who is a Senior Software Engineer for <a href="http://www.ociweb.com/">Object Computing, Incorporated</a> (OCI),
which is based near St. Louis, Missouri in the midwestern United States.

<h3>Tom, tell us a bit about yourself and what you do.</h3>
<p>Well, OCI is probably most widely recognized for its training, development and support for open source CORBA tools like <a href="http://www.theaceorb.com/">TAO</a> and <a href="http://www.ociweb.com/products/jacorb">JacORB</a>, but the company also has broader consulting and training services that focus on design and development for object-oriented and distributed computing.



<p>
I've been doing a combination of progamming and training for about ten years.  Most of this time has been spent on Web development, UNIX/Linux systems management and distributed computing, but I've been doing a whole lot more Swing lately.  I've used at least half a dozen languages though Java accounts for 80% of the code I've written since 1999.
</p>

<h3>So, how did you first get started developing on the NetBeans Platform?</h3>
<p>
My current consulting assignment is in the engineering department of a large company.  Like others, they have a number of custom applications that were developed to accomplish a single task.  Since they were each created independently of one another, there's some overlap between them and they don't necessarily work well together.  As a result, the engineers wind up spending time converting data between different formats and switching from one tool to the next.
</p>

<p>
My project aims to consolidate these disparate programs into a more unified tool by making each of them a module within a larger framework.  Of course, one of the most obvious benefits is that it will make the engineers more productive, but it will also reduce long-term development costs.  Maintenance costs will be decreased since there will be a lot less duplication of code, and new features will take less time to develop because they'll be delivered as a module that plugs into the framework.  They won't have to write all the standard code that goes into a new monolithic application.
</p>

<p>

When I started working on this project, I came up with a list of more than twenty specific features that the framework would need to support.  I then examined the available frameworks to see how well they matched these criteria and a colleague suggested that I add the NetBeans Platform to my candidate list.  I'm glad I did because it had more of the features we needed than any of the others.
</p>

<h3>What sort of features were you looking for?</h3>
<p>
A lot of them were related to the modular development approach I mentioned earlier.  One of the most important was that we wanted to be able to add or update modules without redistributing the entire application.  We also wanted to know that the installed set of modules worked properly together, and that meant we needed version and dependency management.  I've had to write that sort of code in the past and know how hard it is to handle updates smoothly, so I wasn't looking forward to having to implement it again.  Luckily, I didn't have to because the NetBeans Platform provided it for me.
</p>

<p>
The company had a pretty heterogenous computing environment, so they've been doing Java development for years.  The existing tools were already in production and we didn't want to modify them any more than necessary.  We knew we'd be able to reuse existing Java code and run it on any computer because the NetBeans Platform is pure Java.
</p>

<h3>Can you describe your experience when you first started using the platform?</h3>
<p>
I got started just after NetBeans IDE 4.0 was released and, in all honesty, I found it difficult at first.  There were very few tutorials available back then and most of those were based on NetBeans IDE 3.x.  It was kind of ironic that many of the same changes that made NetBeans IDE 4.0 a better development platform made it harder for new developers because they rendered older examples obsolete.

</p>
<div style="float: left;"><img src="nbm_interviews/tom/quote1.png" alt="Tom quote"></div>
<h3>What did you do to overcome this?</h3>
<p>
Well, first I tried to find as much documentation as I could.  As I said, there was very little available in the form of tutorials, but the <a href="https://netbeans.org/download/dev/javadoc/">API documentation</a> helped a lot.  I also started looking at how the NetBeans IDE worked and studying the source code behind it.  But what probably helped me most was the <a href="http://www.netbeans.org/community/index.html">NetBeans community</a>.  The problems I had weren't usually unique and I was able to answer a lot of my questions by searching the mailing list archives.  When I still wasn't able to find what I needed, I posted to the mailing list and usually got several helpful responses.
</p>

<p>
It would be so much easier to get started developing with the NetBeans Platform now.  In addition to the Javadoc, IDE source code and mailing lists, there are now <a href="https://platform.netbeans.org/tutorials/index.html">a lot of tutorials</a> on the NetBeans Web site and <a href="http://www.planetnetbeans.org/">developer's blogs</a>.  NetBeans IDE 5.0 also has support for building platform-based applications and that makes it simple to generate much of the code you'd need to write.
</p>

<h3>Tom, you created a plug-in module for dog files? What on earth are those?</h3>

<p>Well, a few months ago, I needed to add support for a custom file type to my 
application built on the NetBeans Platform. I needed to be able to load and save it, 
as well as view and edit its information. Unlike most of the examples in the 
IDE source code tree, it was not a text file that could normally be opened in the Source Editor. 
<p>So, I created an example based on what I did so that others might be able to learn from it.
It edits files that represent information about a dog, such as the name, age and breed. It 
also makes use of the excellent JGoodies Data Binding framework, which I have packaged with it.
You can download the DogFile support module and JGoodies Data Binding module packaged as a suite for NetBeans 5.0 RC2,
by going to <a href="http://www.tomwheeler.com/netbeans/">Tom Wheeler's NetBeans Site</a>. (On my site, there's also
 an example of using the NetBeans System Option class, although I realize that this class is quite contentious
 and NetBeans developers are considering replacing it, which is why there's no tutorial on this subject.)

<h3>How have you been active in the community so far?</h3>
<p>
Since the problems I had getting started are still relatively fresh in my mind, my main goal has been to make it easier for new developers to get started by documenting the things I wish I'd known at first.
</p>

<p>
I work with a lot of really talented people at OCI and they're as passionate about technology as I am.  Each month one of us volunteers for the <a href="http://www.ociweb.com/articles/publications/jnb.html">Java News Brief</a> in which we write about a Java-related topic that we find interesting.  Last September, I wrote one that introduced the NetBeans Platform, explained its advantages and disadvantages, and concluded by showing exactly how to build an image viewer application from existing code.  I think that helped expose a lot of new people to the NetBeans Platform because I started getting e-mail from developers all over the world who thanked me for writing it.  
</p>

<p>
I followed up the first article with another that illustrated how to create several modules that work together to form a stock trading game. Here's
 a screenshot:

 <p><img src="nbm_interviews/tom/stocktrader-ss.png" alt="stocktrader-ss">

 <p>(By the way, I recently put a copy of the source code for the stock trader game as a
 NetBeans IDE 5.0 project on my <a href="http://www.tomwheeler.com/netbeans/">webpage</a>. I need to leave
 the NetBeans IDE 4.0 version there, but hopefully the new one might
 dissuade new people from using it!)
 <p>

<p>I also gave some advice for porting existing Swing code to NetBeans Platform applications based on my own experience.
</p>

<p>
In addition to the articles, I have also tried to help out by answering questions on the developer mailing list and updating the <a href="http://wiki.netbeans.info/wiki/view/NetBeansDeveloperFAQ">NetBeans Developer FAQ</a>.
</p>

<h3>How would you like to help in the future?</h3>
<p>
I plan to keep doing the things I listed above, but I'd also like to update and expand the stock trader game from my second article.  I think that in addition to being a good example to learn from, it could also be a pretty fun game.  On a related note, I also find technical analysis pretty interesting, so I might also get involved with the <a href="https://humaitrader.dev.java.net/">Humai Trader Platform Project</a> if I can find the time.
</p>
<div style="float: right;"><img src="nbm_interviews/tom/quote2.png" alt="Tom quote"></div>
<h3>If you could change one thing about module development, what would it be?</h3>
<p>
The new <a href="https://platform.netbeans.org/tutorials/index.html">tutorials</a> that have been published on the NetBeans Web site have been a tremendous help, but I'd like to see more open source applications based on the platform so I can learn from how they work.  The <a href="https://netbeans.org/products/platform/screenshots.html">Web site lists a number of applications</a> already, but most of the open source ones are outdated.  I'm sure that there are some out there, so perhaps it's just a matter of rounding them up and updating that page.

</p>


<h3>You wrote in your first article that you're an Eclipse user.  Have you tried the new NetBeans IDE 5.0?</h3>
<p>
I first used NetBeans IDE 5.0 just before the first beta came out and I keep finding myself using it more and more.  In addition to the wizards for creating platform applications I mentioned earlier, the Matisse GUI builder has also saved me a lot of time. I also look forward to trying out the Profiler and NetBeans IDE 5.0's built-in support for JSP files, EJB components, and Web Services.

</p>



<!-- ======================================================================================== -->

<h2><a name="nextsteps"></a>Further reading</h2>

<p>For information about creating and developing plug-in modules and rich-client applications, see the following resources: 
  <ul>
	  <p><li><a href="https://platform.netbeans.org/tutorials/quickstart-nbm.html">Introduction to NetBeans Module Development</a></li>
	  <p><li><a href="https://platform.netbeans.org/tutorials/nbm-paintapp.html">Introduction to Rich-Client Application Development</a></li>
	  <p><li><a href="https://platform.netbeans.org/tutorials/index.html">NetBeans Modules and Rich-Client Applications Learning Trail</a></li>
	  <p><li><a href="https://netbeans.org/download/dev/javadoc/">NetBeans API Javadoc (Current Development Version)</a></li></ul>
  </p>
  
  <hr>


</body>
</html>
