<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #215 - Oct 27, 2005</title>
<META NAME="description" CONTENT="Newsletter 2005-10-27">

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

<h1>NetBeans Weekly News<br>Issue #215 - Oct 27, 2005</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #215 - Oct 27, 2005<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2005-10-27.html'>https://netbeans.org/community/news/newsletter/2005-10-27.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 Software Day at JavaOne Japan
Join the NetBeans software team on Monday, November 7, 2005 for NetBeans Software Day
(you don't have to be registered for JavaOne to attend). This free event features a
keynote from Jeff Jackson, and the first 300 attendees will receive a limited edition
NetBeans worldTour T-shirt and the opportunity to win other prizes. For more info and
to register:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=97">http://services.netbeans.org/newsletter/story.php?id=97</a>&gt;

NetBeans Books
There are a number of new books on NetBeans and there are many new books that make use of
NetBeans.  For example, Foundations of Ajax, Simply Java : An Introduction to Java
Programming, PMD Applied and Introduction to Java Programming all use NetBeans. Check out
the latest list on NetBeans.org.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=98">http://services.netbeans.org/newsletter/story.php?id=98</a>&gt;

Plug-in Module Development Just Got (Even) Easier
Download the ZIP file containing the IDE's sources, don't worry about extracting the
files, but just put the ZIP straight into the Sources tab of the NetBeans Platform
Manager. Et voila, now you can access Javadoc and sources from the Source Editor. Need
more info? Geertjan's blog describes everything you need to know:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=99">http://services.netbeans.org/newsletter/story.php?id=99</a>&gt;

NetBeans Refactoring: Tutorials and How To Contribute Your Own
Charles Ditzel once again provides a power blog entry that is linked up to multiple
resources. If you are interesting in Refactoring in NetBeans then read on.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=100">http://services.netbeans.org/newsletter/story.php?id=100</a>&gt;

[TIP] Mobility Pack on Mac
This tip is provide via Lukas Hasik's weblog were he shows us a trick on how to use
the Mobility Pack on Mac despite having no official build. Use at your own risk.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=101">http://services.netbeans.org/newsletter/story.php?id=101</a>&gt;

Checkout Roman's Plug-in From Update Center
The Project Packager plugin he created is now available from the development update
center. It is accessible from daily builds (not from beta) and still in the experimental
stage so he is looking for your help with the reporting of any bugs.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=102">http://services.netbeans.org/newsletter/story.php?id=102</a>&gt;

I Just Ported V-Builder to NetBeans Platform 5.0
Rich Unger provides a method to move an application from the cluster build harness on
4.x to the 5.0 platform by creating a new module using the IDE and copying his source
code in.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=103">http://services.netbeans.org/newsletter/story.php?id=103</a>&gt;

NetBeans In Budapest
Tim Bourdreau writes about his visit to great city of Budapest for their latest Java
developer event. Relive his experience by visiting his blog entry.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=104">http://services.netbeans.org/newsletter/story.php?id=104</a>&gt;

Idistro
Idistro provides a set of plugin modules for NetBeans 4.1 environment, building on
the NetBeans J2EE development tools, to allow inclusion of Cougaar project archives
into EAR projects. The goal is to facilitate the use of Cougaar
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=108">http://services.netbeans.org/newsletter/story.php?id=108</a>&gt; agent technology to achieve massive
scalability and adaptability in J2EE applications.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=105">http://services.netbeans.org/newsletter/story.php?id=105</a>&gt;

Linux Magazine Review of NetBeans 4.1
In this thorough review of the latest version of NetBeans, Jacques Surveyer assesses
how NetBeans is holding its own against Eclipse and praises the visual design
capabilities of the new release, stating that its GUI designer "gives it an edge" over
Eclipse. Surveyer highlights the strengths of NetBeans for J2EE by chronicling his
experience creating a JSP project.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=106">http://services.netbeans.org/newsletter/story.php?id=106</a>&gt;

Read the latest NetBeans Testimonials
Find out what people are saying about NetBeans IDE 5.0.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=107">http://services.netbeans.org/newsletter/story.php?id=107</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>