<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><!--Copyright © 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.-->



  
  
  
  
  
  
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">






  
  
  
  
  
  
  <meta name="description" content="Matt Thompson, Senior Director of Sun's Developer Cloud Tools, discusses why NetBeans continues to matter for Sun, and offers a look ahead for the IDE.">






  
  
  
  
  
  
  <meta name="keywords" content="NetBeans, IDE, integrated development environment, cloud, cloud services">






  
  
  
  
  
  
  <link rel="stylesheet" type="text/css" href="../../../netbeans.css">






  
  
  
  
  
  
  
  
  <style type="text/css">
            <!--
            .callout {width:200px;float:left;color:gray;padding:0px 14px 10px 0px;line-height:110%;font-size:120%;font-weight:bold;}
            .photo {float:right;padding:10px 0px 10px 14px;}
            -->
        </style>
  <title>NetBeans IDE for the Cloud and Beyond: A Conversation with Matt Thompson</title>

  

  

  

  

  
</head><body>

        
<h1>NetBeans IDE for the Cloud and Beyond: A Conversation with Matt Thompson</h1>




<span style="font-style: italic;">
March 2009</span><br>







<span style="font-style: italic;"><br>
</span><img style="width: 207px; height: 259px;" alt="Matt Thompson" src="../../../images_www/articles/interviews/matt-thompson.jpg" align="right"><span style="font-style: italic;">In
this interview, we speak with Matt Thompson, the Senior Director of
Sun's Developer Cloud Tools, a group that includes NetBeans. Matt
discusses the importance of the NetBeans IDE to Sun's emerging cloud
space, and what the NetBeans community can expect as the IDE continues
to evolve. And he has a message for developers who have yet to try
NetBeans!<br>
</span>
<br>














        
<h2>Matt, Welcome to the NetBeans Team! Please tell us about your background.</h2>




I have been at Sun for 18 years total. I started out as an engineer for
developer tools, working on C/C++, LISP and COBOL. I left for a few
years to work for other companies, then returned to run Partner
engineering for the Java Tools space. This was followed by a seven-year
tenure overseeing Sun's Developer Outreach Program—tapping into a
network of millions of developers who use Sun technologies and helping
them to build software. As of last Fall, my focus is now on Sun's Cloud
Tools, which includes the all-mighty NetBeans!<br>




<br>













        
 
<h2>From your outreach experience, what do you know that developers care most about?</h2>














        
<p>Great technologies and an easy road to market. Sun has great
technologies, but&nbsp; admittedly our road to market has not always
been smooth. Apple, for example, does a good job of this with its
iPhone, which developers can create apps for and make money as a
result. Sun wants to help developers take their JavaFX, Java and Cloud
apps to market successfully, and we are learning about how to give
developers more opportunities to market what they build. <br>
</p>





NetBeans plays a prominent role in this goal—the IDE is an ideal
launch pad for developers to start using Sun's technologies to easily
create web services and web apps, as well as access cloud services. And
when developers build applications that leverage Sun infrastructure
then we know we're doing a good job.<br>




<br>




<h2>Has the current financial downturn changed Sun's commitment to NetBeans?<br>
</h2>
















        



        
<div class="callout">“With its strong support for dynamic languages... NetBeans is <span style="text-decoration: underline;">the</span> IDE for Sun's Cloud.”</div>





Sun's
commitment to NetBeans continues to be strong, if not stronger. Yes,
there's an economic slowdown, but it has also created opportunities.
There is no better time to launch a start-up than now. Startup risks
remain high, but the investment costs when it comes to technology is
lower than ever before. Why? Cloud technology helps start-ups launch at
less cost.<br>






<br>






Start-ups differentiate themselves by what they create and
sell—services and software. When they do it better and faster than
anyone else they make money. Therefore their success metrics depend on
writing quality software fast, which is where good tooling software
comes in.<br>






<br>






Put together the need for access to cloud services and a great tool to
create quality software—you've got NetBeans to the rescue.
With its strong support for dynamic languages—the primary languages
used in the cloud—NetBeans is the way for developers to build
software for Sun's cloud. NetBeans is <span style="text-decoration: underline;">the</span> IDE for Sun's cloud.<br>




<br>




<h2>What's the short term roadmap for NetBeans?</h2>














        
We sent out a <a href="https://netbeans.org/servlets/NewsItemView?newsItemID=1346">message</a> to the NetBeans community in February that we
want to deliver smaller pieces of innovation more quickly, to release
chunks of NetBeans functionality on a rapid schedule. We'll have a
release around JavaOne and another in the Fall/early Winter. We don't want the
community to have to wait six or seven months for releases.<br>




<br>




<h2>Give us your assessment of NetBeans: its strengths and where you see opportunities for growth.<br>
</h2>



<div class="callout">"Expect to see Cloud and JavaFX support around JavaOne, and improved JavaEE
support in the Fall."</div>













An
obvious strength that NetBeans has is its community. Ask developers
about tooling and they're either neutral (“<span style="font-style: italic;">Oh, I use Eclipse</span>”) or they
get very animated—if they love the tool they are using. And NetBeans
users are passionate about the IDE. It's fun to write software with
NetBeans. It's a very agile tool, not bloated; you can get just the
pieces you want and leave out the rest.<br>






<br>






NetBeans supports a wide range of dynamic languages, mobile development
tools, and the best cloud development environment the world has ever
seen. It really is "the only IDE you ever need", which explains why
developers are passionate about it.<br>






<br>






Looking ahead, we want to grow in the areas where we do well. So expect
to see Cloud and JavaFX support around JavaOne, and improved JavaEE
support in the Fall.<br>




<br>




<h2>What would you say to Eclipse users to give NetBeans a look?</h2>














        
<div class="callout">"[NetBeans is] a much more enjoyable and streamlined experience."</div>
To be fair, there is room for more than one IDE in the
development space. We have programs at Sun that support Eclipse and
offer Eclipse plugins. A number of Sun runtimes support tooling through
Eclipse and NetBeans. GlassFish and OpenSolaris do as well. There's
also an Early Access JavaFX plugin for Eclipse. Ultimately, the aim is
to give as many developers as is possible access to Sun technology even
if they're struggling with a cumbersome tool like Eclipse.<br>






<br>






So to Eclipse users I would say: “Try NetBeans as well. It's a
much more enjoyable and streamlined experience. But we understand why
you may not have a choice [professionally] but to use Eclipse.”<br>




<br>




<h2>So why is Sun sponsoring EclipseCon? </h2>





Sun's participation is
about giving all developers access to our technologies—Java, JavaFX,
GlassFish, Solaris and so on. We want Sun runtimes to be the dominant
runtimes, not only for the NetBeans community, but also for the Eclipse
crowd and others. We are not excluding developers who have to or want to use Eclipse.<br>




<br>






<h2>Should we expect more partner relationships centered on support for features that NetBeans will no longer provide? </h2>






An adjunct to our new strategy around the NetBeans engineering process 
becoming more agile is that we also can't do everything ourselves. There are places in the NetBeans portfolio where it makes
sense for us to partner with other companies who provide extensive
support for certain features. We're not backtracking; we are expanding support for a richer development environment.<br>


<br>


<h2>We miss the NetBeans WorldTour! How can users find out about what's new with NetBeans?</h2>







The NetBeans WorldTour stops were wonderful events. Through them we
learned that NetBeans enthusiasts existed all over the world and really
wanted to interact with us. But in keeping with NetBeans's evolution, the WorldTour has been folded
into the larger <a href="http://developers.sun.com/events/techdays/index.jsp">Sun Tech Days</a> agenda. <br>


<br>


NetBeans is now a full-fledged
and successful member of Sun's technology portfolio, and is probably
the most featured technology at Sun Tech Days events. It would be
difficult to find a Tech Day presentation that does not make use of the
IDE. Instead of a single day devoted to what's new and cool about
NetBeans you now have three days—NetBeans showcased and in action every day,
in almost every session.<br>




<br>






<h2>Going forward, how can the NetBeans community help the project?</h2>

<div class="callout">"Let us know how we can build on our success..."</div>

We need lots of help to continue to learn more about YOU. Help us
identify and understand what are the key things that drive more
adoption of
NetBeans. We don't just want more users, we also want to know what
works and doesn't for these users. Why has NetBeans been successful in
your company? If there's a single NetBeans user in a large sea of
Eclipse users, what is keeping us out of that space? How can NetBeans
gain ground? Let us know how we can build on our success in areas like
JavaEE, JavaFX, cloud,
Java runtime, mobile, and so on. <br>






<br>






In the coming months the NetBeans team will be implementing new
community programs that will let us expand the number of conversations
we can have with users. I look forward to my role as the lead
evangelist for NetBeans and the opportunity to meet people who use
NetBeans, understand why they like it and help make it the top
development tool.<br>




<br>




<h2>Matt, Thank you for the interview.</h2>






<br>







<br>



</body></html>