blob: 3bbb1ee31d91b797a10b773a4277c77842968fc6 [file] [log] [blame]
<!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>