<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #256 - Sep 04, 2006</title>
<META NAME="description" CONTENT="Newsletter 2006-09-04">

<link rel="stylesheet" type="text/css" href="/netbeans.css">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">

<!-- ====================================================== -->
<!-- Please do not edit this file by hand, it is rebuilt    -->
<!-- automatically and your changes will be lost.  Contact  -->
<!-- webmaster for details.  Rebuilt at                     -->
<!-- #TIMESTAMP# 04-Sep 16:11 CEST                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #256 - Sep 04, 2006</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #256 - Sep 04, 2006<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2006-09-04.html'>https://netbeans.org/community/news/newsletter/2006-09-04.html</a>&gt;<br>
Interested in becoming a newsletter editor?  We're always looking<br>
for editors to help out. Contact <a href='mailto:nbnews_contrib@netbeans.org'>nbnews_contrib@netbeans.org</a><br>
Please send news contributions to <a href='mailto:nbnews_contrib@netbeans.org'>nbnews_contrib@netbeans.org</a><br>
<hr><pre>September 6th - NetBeans Day Seattle, Washington
The NetBeans WorldTour is a no cost event and exciting learning
opportunity. See first-hand how NetBeans IDE can help you become more
productive with its unmatched out-of-the-box experience. Register today.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=740">http://services.netbeans.org/newsletter/story.php?id=740</a>&gt;
For more information on the agenda and the upcoming Shanghai and
Beijing, China locations follow here:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=741">http://services.netbeans.org/newsletter/story.php?id=741</a>&gt;

NetBeans Governance Board Elections - Last Call for Nominations
This is the last call for making your nominations for the NetBeans
Governance Board elections. For the list of current nominees and
information on how to nominate candidates continue here:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=742">http://services.netbeans.org/newsletter/story.php?id=742</a>&gt;

Feedback Wanted: HeapWalker Added to NetBeans Profiler
The NetBeans Profiler developers have added the new HeapWalker feature
to Milestone 2 of NetBeans 6.0. This new feature is still being defined
and the developers are very open to feedback. To make it even easier to
try it out, they even created a small web-startable version of the
HeapWalker that you can access here:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=743">http://services.netbeans.org/newsletter/story.php?id=743</a>&gt;
For full details, check out the NetBeans Profiler Milestone 2 project
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=744">http://services.netbeans.org/newsletter/story.php?id=744</a>&gt;

NetBeans Hacks (Part 1)
Know the IDE like the back of your hand? Show us your everyday hacks
and tricks, and learn new ones, too! This collection of editor and
navigation hacks is the first in a series of the best tech tips
collected by the NetBeans community.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=745">http://services.netbeans.org/newsletter/story.php?id=745</a>&gt;

NetBeans Server-Skeleton Module Tutorial
NetBeans IDE provides support (out of the box!) for the Sun Java System
Application Server, JBoss, WebLogic, and Tomcat. But what if you're
using a different server? Why not work on creating a NetBeans module for
your favorite server? This tutorial gives you a skeleton -- a framework,
on top of which you can build your own server support module. Now
updated for NetBeans IDE 5.5 Beta 2! Downloadable source code included!
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=746">http://services.netbeans.org/newsletter/story.php?id=746</a>&gt;

The Future of NetBeans
Artima spoke with NetBeans evangelist Tim Boudreau about new NetBeans
features and about the NetBeans community. In Part I of this interview,
he discusses upcoming features of NetBeans 6.0, and compares the
NetBeans and Eclipse approaches to open-source IDE development.
Part  I - &lt;<a href="http://services.netbeans.org/newsletter/story.php?id=747">http://services.netbeans.org/newsletter/story.php?id=747</a>&gt;
In the second installment of his interview with Artima, Tim talks about
the NetBeans rich-client platform, how the NetBeans Matisse UI builder
and GroupLayout layout manager address the challenges of cross-platform
and internationalized UI design, and about support for languages other
than Java in NetBeans.
Part II - &lt;<a href="http://services.netbeans.org/newsletter/story.php?id=748">http://services.netbeans.org/newsletter/story.php?id=748</a>&gt;

179 Java Teachers to Teach NetBeans in China!
This is true. 179 Java teachers in China indicate that they are going
to teach NetBeans in their Java classes in the coming Fall semester!
Qingye Jiang (John) provides some interesting insight from the NetBeans
team in China.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=749">http://services.netbeans.org/newsletter/story.php?id=749</a>&gt;

NetBeans Podcast #13
Topics include: Mobility Pack Open-Sourced, Enterprise pack features,
learning trails, Creator performance fix, findbugs module and more...
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=750">http://services.netbeans.org/newsletter/story.php?id=750</a>&gt;

Hey! You Got Jini In My Grid!
DanT's GridBlog writes: "There's a really cool project that's been
developed by the Jini technology team for use on Sun Grid. It's called
ComputeServer. The idea is very simple but very powerful. If you're
interested in the Java platform and grid computing, you need to know
about ComputeServer..." which is available as a NetBeans plug-in.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=751">http://services.netbeans.org/newsletter/story.php?id=751</a>&gt;

NetBeans Wiki Pages
Lukas writes, "I like wiki very much. It's easy to add/edit/update your
pages in a wiki. You don't have to edit it in an external editor. You
work directly in your browser. I like that it's collaborative tool as
well. When I made a mistake (grammar, typo etc.) anybody can fix it in
my document (I can do the same for others)..."
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=752">http://services.netbeans.org/newsletter/story.php?id=752</a>&gt;

JUnit Test Support Changed to Use JMUnit Library in Mobility Pack
JUnit Test support was added in Mobility Pack 5.5 Beta 2. The support
used J2MEUnit library. It happened that the library was changed to
JMUnit library after the Beta 2. The main reasons was that it's newer
and the code is maintained. It shouldn't influence end users too much.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=753">http://services.netbeans.org/newsletter/story.php?id=753</a>&gt;

Visual Library 2.0: Do you know what it is?
It hasn't been released yet, but you can already build it and use it to
test out its functionality. Geertjan has been doing just that and the
results of his investigations are divided in the following sections,
including many colorful illustrations featuring... the Simpsons! Here's
the list of topics in his blog so far, in chronological order from
first to last:
 * Capturing the Simpsons:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=754">http://services.netbeans.org/newsletter/story.php?id=754</a>&gt;
 * In Place Editor in Visual Library 2.0:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=755">http://services.netbeans.org/newsletter/story.php?id=755</a>&gt;
 * Zoom and Pan in Visual Library 2.0:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=756">http://services.netbeans.org/newsletter/story.php?id=756</a>&gt;
 * Alignment and Satellite View in Visual Library 2.0:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=757">http://services.netbeans.org/newsletter/story.php?id=757</a>&gt;
 * Selection and Connection in Visual Library 2.0:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=758">http://services.netbeans.org/newsletter/story.php?id=758</a>&gt;
 * Other NetBeans APIs, Swing, and Visual Library 2.0:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=759">http://services.netbeans.org/newsletter/story.php?id=759</a>&gt;
 * Maps and Visual Library 2.0:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=760">http://services.netbeans.org/newsletter/story.php?id=760</a>&gt;
 * Swing Components and Visual Library 2.0:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=761">http://services.netbeans.org/newsletter/story.php?id=761</a>&gt;
 * NetBeans Project Samples and Visual Library 2.0:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=762">http://services.netbeans.org/newsletter/story.php?id=762</a>&gt;

UPDATED: JPDA (Java) Debugger Call Stack View Enhancements Module
The following new popup actions is now supported by the module:*** *
Show Classes... Show the table of all classes loaded in the debugee.
Each row in Classes table shows Class name, Package name and the value
returned by the toString() method of class's ClassLoader. This can be
useful for debugging applications such as App Servers, IDE Frameworks
(e.g. NetBeans itself), that employ a complex multi-ClassLoader
architecture. This view helps you determine which ClassLoader loaded the
class. To invoke the action right click on any call stack frame row in
the Calls Stack view of the debugger.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=763">http://services.netbeans.org/newsletter/story.php?id=763</a>&gt;

Favorite File Types in Custom NetBeans Projects
Projects are at the heart of NetBeans and there are tonnes of Project
types in NetBeans for different types of programming needs in Java. You
have a project type in NetBeans for writing a Java Application, one for
a class library and some project types for web applications and if you
ever get so lucky (like me) to code some NetBeans modules, you will be
using project types! What's more, you can create your own project types.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=764">http://services.netbeans.org/newsletter/story.php?id=764</a>&gt; </pre><hr>This issue of NetBeans Weekly News was brought to you by Robber Demmer.<br>
The next editor will be Robber Demmer. (New volunteers are welcome!)<br>
Please send news contributions to <a href='mailto:nbnews_contrib@netbeans.org'>nbnews_contrib@netbeans.org</a></BODY>
</HTML>