<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #227 - Feb 02, 2006</title>
<META NAME="description" CONTENT="Newsletter 2006-02-02">

<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# 02-Feb 16:39 CET                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #227 - Feb 02, 2006</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #227 - Feb 02, 2006<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2006-02-02.html'>https://netbeans.org/community/news/newsletter/2006-02-02.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>[ANNOUNCE] NetBeans 5.0 Is Now Available
The final release version of NetBeans IDE 5.0, NetBeans Platform 5.0,
NetBeans Mobility Pack 5.0 and NetBeans Profiler 5.0 are now available.
For immediate download visit:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=271">http://services.netbeans.org/newsletter/story.php?id=271</a>&gt;
To learn more about 5.0 features follow here:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=272">http://services.netbeans.org/newsletter/story.php?id=272</a>&gt;

NetBeans 5.0 Tutorials, Guides, and Articles
The NetBeans IDE has extensive on-line help in the IDE itself, available
under the Help menu. For more resources on NetBeans.org visit:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=273">http://services.netbeans.org/newsletter/story.php?id=273</a>&gt;

New: Technical Support for NetBeans
Introduced for the first time, Technical Support for NetBeans will now be
available through the Expert Assistance - a new Sun Developer Network
Program. Through this program, a developer can get assistance for Sun
developer tools, the Java SE platform and NetBeans IDE. Diagnostic and
coding advice, workarounds, and best practices guidance are all available
free while this support program is in Beta.  More info at:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=275">http://services.netbeans.org/newsletter/story.php?id=275</a>&gt;

Get Buttons & Banners
Add NetBeans buttons and banners to your blog, web site or your email
signature and help promote NetBeans 5.0. You can even get a new desktop
background. Check it out:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=274">http://services.netbeans.org/newsletter/story.php?id=274</a>&gt;

AutoUpdate Survey Invitation - Please Take a Minute or Two
The NetBeans Platform team is looking for your experiences with the
AutoUpdate feature in NetBeans. Please take a minute to fill out the short
survey and help us to improve our AutoUpdate for future NetBeans releases.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=246">http://services.netbeans.org/newsletter/story.php?id=246</a>&gt;

nbextras.org - NetBeans Unofficial Update Center
NetBeans community has a hot, new site for plug-ins which serves as an
update center: www.nbextras.org. To find out more, read Roman's entry about
nbextras and how the new site supplements the official plug-in catalogue:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=276">http://services.netbeans.org/newsletter/story.php?id=276</a>&gt;

Keep Those Plug-in Modules Compatible
How do you ensure that the plug-in module you're developing in a
development build will be usable by somebody using NetBeans IDE 5.0?
Considering that, if you don't take special steps, you'll end up with a
plug-in module that is incompatible with the IDE used by your target
audience, it's a good idea to check out Geertjan's blog:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=277">http://services.netbeans.org/newsletter/story.php?id=277</a>&gt;

NetBeans Day Chennai, India
The next NetBeans Day event will take place on February 9th at the Chennai
Trade Center. For more information, and to register continue here.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=278">http://services.netbeans.org/newsletter/story.php?id=278</a>&gt;

NetBeans Mobility at 3GSM World Congress
Interested in creating J2ME MIDP applications faster and more easily?
Find out how the powerful new Visual Editor in the NetBeans Mobility Pack
5.0 IDE speeds your development time with drag and drop functionality.
There will be a Mobility Pack session at 9am on Thursday, Feb 16th and at
any time you can stop by the Sun booth C43 and chat with the NetBeans
team.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=279">http://services.netbeans.org/newsletter/story.php?id=279</a>&gt;

Built on NetBeans: Sun Java Studio Creator 2
Sun Java Studio Creator 2 is an easy-to-use visual web development
environment for the Java platform. Developers can build standards-based web
applications and portlets visually using JavaServer Faces through a powerful
drag-and-drop user interface. Integration with heterogeneous data sources
such as relational databases, Enterprise JavaBeans, and web services is
simplified, and many other convenient features are included as well. Java
Studio Creator 2 is built on NetBeans 4.1. More information & download:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=280">http://services.netbeans.org/newsletter/story.php?id=280</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>