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

<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# 19-Sep 13:10 CEST                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #258 - Sep 19, 2006</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #258 - Sep 19, 2006<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2006-09-19.html'>https://netbeans.org/community/news/newsletter/2006-09-19.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>NetBeans Governance Board Elections - Last Call to Vote
It's time again to elect a new NetBeans Governance Board! The final
list of candidates include: Iwan Eising, Frank-Michael Moser, Edson
Carlos Ericksson Richter, David Strupl, Rich Unger and Gregg Wonderly.
Voting ends September 21, 2006 midnight last time zone. Vote today!
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=781">http://services.netbeans.org/newsletter/story.php?id=781</a>&gt;

First Meeting of NUG in Munich
The very first NetBeans User Group (NUG) meeting will happen on October
17 in Munich, Germany. For more information visit Roumen's blog:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=782">http://services.netbeans.org/newsletter/story.php?id=782</a>&gt;

NetBeans WorldTour - Shanghai & Beijing China
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. Detailed
agendas, venue and contact information as well registration is now
available for both events: Space is limited so reserve your spot today!
* Shanghai, China - September 22, 2006
* Beijing, China - September 29, 2006
Further information and upcoming locations:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=783">http://services.netbeans.org/newsletter/story.php?id=783</a>&gt;

James Gosling: For Ruby or Ajax or SOA, it's NetBeans
Rich Seeley, a news writer for SearchWebServices.com writes, "What does
the Father of Java think of the emerging interest in rival languages
such as Ruby? A lover of diversity, James Gosling says he's played
around with Ruby enough to understand the attraction, but his heart
belongs to Java and what Sun Microsystems Inc. is pulling together
under the NetBeans tent. He understands why Ajax coders are frustrated
with JavaScript, but he says the answer will be found in NetBeans."
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=784">http://services.netbeans.org/newsletter/story.php?id=784</a>&gt;

Ask the Java Pros: NetBeans Rocks!
In this JavaPro review of Eclipse and NetBeans, Michael Yuan writes,
"For many projects and teams NetBeans might just be the perfect
developer tool." The title is Meeting the Challenge: Eclipse is
arguably more popular, but watch out for NetBeans.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=785">http://services.netbeans.org/newsletter/story.php?id=785</a>&gt;

Net Talk: UML in NetBeans
In this NetTalk, Java Developer Tools Evangelist Ashwin Rao provides an
overview of the UML features available to NetBeans users with the
NetBeans Enterprise Pack. In this Net Talk Take 10, Ashwin outlines the
NetBeans development environment from the standpoint of UML development
and highlights features including: ease of use, markerless code, and
language-independent abstract modeling.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=786">http://services.netbeans.org/newsletter/story.php?id=786</a>&gt;

Recognizing a File Type Tutorial
This tutorial shows you how to write a module that lets the IDE (or any
other application built on the NetBeans Platform) recognize a new file
type, using the Nodes API. File types that are recognized in the IDE
have their own icons, menu items, and behavior.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=787">http://services.netbeans.org/newsletter/story.php?id=787</a>&gt;

NetBeans Hacks (Part 2)
Part two of our collection of the best hacks and tech tips collected
from NetBeans-related blogs. This time we focus on project hacks, GUI
builder hacks, and Look&Feel hacks. You've got more? Send us your
everyday tricks, and learn some new ones, too!
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=788">http://services.netbeans.org/newsletter/story.php?id=788</a>&gt;

No comprendo? NetBeans in Your Language!
The NetBeans community is providing NetBeans in more languages everyday.
NetBeans 5.0 is offered in five languages, including Russian and Korean.
The NetBeans 5.5 Beta has been translated into Simplied Chinese and
Japanese.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=789">http://services.netbeans.org/newsletter/story.php?id=789</a>&gt;

Hacking javac
Tom Ball has a blog entry on the new javac improvements, including how
they are used in NetBeans. Be sure to check this out!
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=790">http://services.netbeans.org/newsletter/story.php?id=790</a>&gt;

Do you deploy to JOnAS?
The Java Open Application Server is one of the few deployment servers
that NetBeans IDE doesn't support yet. Stepan Herold, the NetBeans
engineer responsible for the server area in NetBeans, has recently
created a plug-in for this server. He has open sourced it and you can
download it, try it out, and join the project! If you're interested,
check out Stepan's project on SourceForge:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=791">http://services.netbeans.org/newsletter/story.php?id=791</a>&gt;

5.5 Q-Build of Mobility Pack
This build contains the SVG support and JMUnit support. These are the
main new features of Mobility Pack in 5.5 release.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=793">http://services.netbeans.org/newsletter/story.php?id=793</a>&gt;

JavaZone 2006 in Oslo, Norway
Gregg Sporar provides an overview of the events that took place and
provides some photos and many links to more information.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=792">http://services.netbeans.org/newsletter/story.php?id=792</a>&gt;

Setting Up Freetar In NetBeans
There is a new tutorial on how to setup Freetar in NetBeans. The
important steps are setting up the required libraries and
-Djava.library.path options for those of you using other IDE’s. Lots
of pics!
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=794">http://services.netbeans.org/newsletter/story.php?id=794</a>&gt; </pre><hr>This issue of NetBeans Weekly News was brought to you by Robert Demmer.<br>
The next editor will be Robert 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>