<html>
<HEAD>
<TITLE>Welcome on Board NetBeans Air</TITLE>
<meta NAME='keywords' CONTENT="Boeing,netbeans,platform,RCP,partner,framework,rich client application">
<meta NAME='description' CONTENT="Tim Boudreau met the platform specialist Tom Wheeler to chat about Tom's latest
        'little' project: He ports applications that analyse mass properties of aircraft for Boeing.">
<link rel="stylesheet" type="text/css" HREF="../../netbeans.css">
</HEAD>

    <BODY>
        
        <h1>Welcome on Board NetBeans Air!</h1>
        
            <p><a href="../../images_www/articles/boeing-platform/masstk_ss_full_01.png"><img 
                  src="../../images_www/articles/boeing-platform/masstk_ss_thumb_01.jpg" 
                  alt="colorcoded wireframe of aircraft" border="0"  width="180"
                  style="float:left;padding:10 20 20 0;"></a></p>

              <blockquote><em>Tim Boudreau met the platform specialist Tom Wheeler to chat about Tom's latest
                  "little" project: He ports applications that analyse mass properties of aircraft for Boeing.</em>
              </blockquote>
              
        <br style="clear:both" />
                        
        <h2>Tom, what kinds of applications did you port for Boeing, and why?</h2>
        
        <p /><p />
        In 2005, we began a project to consolidate several applications 
        that had been developed internally over the years.  
        Each did some type of mass properties analysis on aircraft. 
        But since they were created by different people at different times, 
        they didn't necessarily share data easily. 
        
        <div style="width:200px;float:right;padding:0 0 10 10;font-size:120%;font-weight:bold">&ldquo;Instead 
            of writing a whole program from scratch, 
            we'd simply create a module and it would automatically 
        take advantage of algorithms, components and other features of the framework.&rdquo;</div>
        <p />
        Consequently, the engineers who used these programs would constantly have to switch 
        between them and find ways to export data from one application that could be read by the next.  
        There was also a fair amount of duplication between them.
        <p />
        So we wanted to &quot;port&quot; these applications into a single integrated framework 
        that used the best features of each, 
        yet made it easier to solve problems than it was with several individual tools.
        <p />
        Not only would this approach practically eliminate code duplication, 
        it would also reduce the amount of time needed to create new applications in the future.  
        Instead of writing a whole new program from scratch, 
        we'd simply need to create a new module and it would automatically 
        take advantage of algorithms, components and other features of the framework.  
        <P />
        Even though integration projects like this sometimes grow too large, 
        we've found that NetBeans modularity also makes it easy 
        to pick and choose exactly what's included in the application.
        
        <h2>Tell us more about the application, what exactly was it?</h2>
        
        <p /><p />
        
        <div style="width:200px;float:right;padding:0 0 10 10;font-size:120%;font-weight:bold;">&ldquo;While 
            Crays are obviously very fast machines, Java on modern PCs 
        is more than fast enough for this application.  &rdquo;</div>
        <p />
        The application I mentioned is called <b>Mass Toolkit</b>. 
        As I mentioned before, it integrates many of our older tools, most of which were written in Java.  
        <p />
        However, we've also got an application that runs natively on a Cray supercomputer, 
        and Mass Toolkit should eventually replace that as well.  
        While Crays are obviously very fast machines, 
        Java on modern PCs is more than fast enough for this application.  
        <P />
        More importantly, Mass Toolkit's ability to visualize the input and output data 
        graphically &mdash; in 3D space &mdash; is something our users are excited about.
        <p />
       
    <div style="padding:10 20 10 20;background-color:#EEEEFF;font-size:90%;
            margin-right:auto;margin-left:10px;width:550px">
       <h3>Info: The Mass Properties Toolkit (MassTk)</h3> 
       <br />
            <p><a href="../../images_www/articles/boeing-platform/masstk_ss_full_02.png"><img 
                  src="../../images_www/articles/boeing-platform/masstk_ss_thumb_02.jpg" 
                  alt="aircraft fuel distribution graphic" border="0"  width="180"
                  style="float:left;padding:10 20 20 0;"></a></p>
            <p>The MassTk is an engineering analysis application by Boeing. It incorporates the functionality 
            from several legacy mass properties analysis applications that 
            were originally written in Java, Fortran, C, and even Perl.</p> 
            <p>MassTk is built on top of the NetBeans Platform 6.0. 
            It provides a rich GUI with custom editors for all business objects including 2D &amp; 3D visualization.</p> 
            <p>Boeing uses MassTk to perform
            payload balance solutions, loadability analysis, fuel management analysis, 
            fuel mass property analysis, and mass distribution to finite element models. 
            MassTk vastly improved pre- and post-processing of analyses, 
            it has a shallower learning curve, and lower maintenance costs.</p>
    </div>
        
        <h2>Inside Boeing, are there more applications in production that are NetBeans platform based?</h2>
        
        <p /><p />
        Yes. This January, another development team inside Boeing approached me 
        to ask about my experiences with the NetBeans platform.  
        They are supporting an in-house application called <b>CSW</b> 
        used by hundreds of engineers for structural analysis.  
        <p />
        I described the pros and cons of the NetBeans platform, 
        explained what alternatives exist, and finally showed Mass Toolkit to them.  
        Eventually we decided that our applications had a lot in common.  
        About half of Mass Toolkit's modules are general purpose libraries for 
        plotting, XML, mathematics and reusable user interface components, 
        so they'd be useful to CSW as well.  
        <p />
        I decided that instead of building Mass Toolkit on the NetBeans platform, 
        I could factor out these common parts into a new platform that extends the NetBeans platform.  
        
        <div style="width:200px;float:right;padding:0 0 10 10;font-size:120%;font-weight:bold;">&ldquo;I 
            was able to train him on basic platform concepts and help him port his prototype 
        to the platform in less than two days.&rdquo;</div>
        <p />
        In other words, I moved several modules upstream, 
        and also added some additional build and branding enhancements. 
        And now Mass Toolkit and the new version of CSW 
        are built from the result, which we call the <b>Boeing Shared Platform</b>.
        <p />
        Soon after I created the Boeing Shared Platform, 
        another developer needed to write a new application called <b>SIFT</b>.  
        He was interested in creating SIFT on top of the platform, 
        and though he's a very competent programmer, 
        this was his first exposure to the platform.  
        I was able to train him on basic platform concepts 
        and help him port his prototype to the platform in less than two days.  
        <p />
        Now SIFT has all of the platform features, including the window system, 
        declarative actions, service registration and dependency management.  
        <p />
        We expect Mass Toolkit and SIFT to be released for production this summer, 
        though both applications have already released several versions for user testing.   
        The next version of CSW, which is also built on the Boeing Shared Platform, 
        is still in early stages of development. 
        <p />
               
        
        <h2>What made Boeing choose the NetBeans platform?</h2>
        
        <p /><p />
        We started this project with a pretty blank slate.  
        We had functional requirements, but how we met them was largely up to the development team.  
        
        <div style="width:200px;float:right;padding:0 0 10 10;font-size:120%;font-weight:bold;">&ldquo;NetBeans 
            ultimately won because it would easily integrate 
        with all the Swing and Java3D code we already had.&rdquo;</div>
        <p />
        I first made a list of about twenty features that the ideal platform would provide, 
        looked at what was available and tracked what each one offered.  
        I quickly narrowed the list down to the NetBeans Platform and the Eclipse RCP.  
        <p />
        While each platform had advantages, NetBeans ultimately won 
        because it would easily integrate with all the Swing and Java3D code we already had.
        
        <br style="clear:both">
        
        <h2>What has the experience been like working with the NetBeans platform?<br />
        How has it impacted productivity?</h2>
        
        <p /><p />
        Frankly, we got off to a slow start because 2005 was the worst possible time 
        to begin learning and using the platform:
        The 4.1 IDE had just been released and it lacked support for creating platform applications.  
        There also wasn't much current documentation available.

        <div style="width:200px;float:right;padding:0 0 10 10;font-size:120%;font-weight:bold;">&ldquo;The 
            Matisse form editor helped speed up development.&rdquo;</div>
        
        <p />
        In 2006, the NetBeans 5.0 IDE was released, and it was a huge benefit for us.  
        The <a href="https://netbeans.org/kb/trails/platform.html">API support</a>
        features of the new IDE made it simple to create new actions and TopComponents.  
        The <a href="../../kb/55/quickstart-gui.html">Matisse form editor</a> also helped speed up development.  
        Like most people, we'd previously been writing GUI code by hand in Java.  
        <p />
        It's also a lot easier to find <a href="http://platform.netbeans.org/">documentation and examples</a> 
        now, plus the openide mailing list is a great resource where developers can help one another.
        
        <h2>What are the plans for the future with the NetBeans Platform?</h2>
        
        <p /><p />
        We're now moving towards the 6.0 IDE and platform.  
        We would have certainly appreciated new features for building platform application 
        in the new version, but we hope that will be forthcoming.  
        Meanwhile, we're looking forward to the new editor in the 6.0 IDE and 
        we're also pleased that the new <a href="https://netbeans.org/books/rcp.html">platform 
        book</a> is now available.
        <p />
        We'll continue refining the Boeing Shared Platform and perhaps be able 
        to port additional applications to it in the future.
        <p />
        
        
    <div style="padding:10 20 10 20;background-color:#EEEEFF;font-size:90%;
            margin-right:auto;margin-left:10px;width:550px">
       <h3>Info: The Boeing Shared Platform (BSP)</h3>
       <br />
            <p><a href="../../images_www/articles/boeing-platform/masstk_ss_full_00.png"><img 
                  src="../../images_www/articles/boeing-platform/masstk_ss_thumb_03.jpg" 
                  alt="aircraft payload loading diagram" border="0"  width="180"
                  style="float:left;padding:10 20 20 0;"></a></p>
            <p>The Boeing Shared Platform is a logical outgrowth of building MassTk on top of the NetBeans Platform: 
            BSP is a feature-rich platform created by factoring out the modules from MassTk 
            that are not specific to mass properties analysis, 
            but are useful to engineering analysis applications in general. </p>
            <p>In addition to the NetBeans Platform, the BSP includes a number of 
            third-party open-source libraries, as well as a number of Boeing-developed modules. </p>
            <p>Currently there are a total of four applications being built with the BSP.</p>
    </div> 
    </body>
</html>