<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #198 - May 02, 2005</title>
<META NAME="description" CONTENT="Newsletter 2005-05-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# 03-May 12:46 CEST                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #198 - May 02, 2005</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #198 - May 02, 2005<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2005-05-02.html'>https://netbeans.org/community/news/newsletter/2005-05-03.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 2005 Conference
Meet James Gosling and and receive a free copy of the NetBeans IDE Field
Guide. Register now for this no cost event!
&lt;<a href="https://netbeans.org/community/articles/javaone/2005/nb-day.html">https://netbeans.org/community/articles/javaone/2005/nb-day.html</a>&gt;

NetBeans IDE 4.1 Release Candidate 2 Download
RC 2 is now available. You can download the release from:
&lt;<a href="http://services.netbeans.org/downloads/download.php?type=4.1rc2">http://services.netbeans.org/downloads/download.php?type=4.1rc2</a>&gt;

Take the NetBeans Mobility Pack User Survey
Your feedback will help the team enhance and improve the product to
better serve your needs.
&lt;<a href="https://netbeans.org/kb/articles/NB_Mobility_Survey_Apr05.html">https://netbeans.org/kb/articles/NB_Mobility_Survey_Apr05.html</a>&gt;

Visual GC Integration .2 Release
This version adds the possibility to select the JVM from a combo box
listing all VMs running on the local machine, removing the need to use jps,
ps or task manager separately to figure out the PID of the process to
monitor. You can download the new version from:
&lt;<a href="http://profiler.netbeans.org/visualgc/index.html">http://profiler.netbeans.org/visualgc/index.html</a>&gt;

Pre-Order NetBeans IDE Field Guide
A new book, NetBeans IDE Field Guide: Developing Desktop, Web, Enterprise,
and Mobile Applications, is now available for pre-orders at
&lt;<a href="http://www.bookpool.com/sm/0131876201">http://www.bookpool.com/sm/0131876201</a>&gt;.

NetBeans IDE Field Guide is a comprehensive introductory guide and task
references the fast-answers NetBeans "cookbook" for every Java developer.
The authors show you how to use NetBeans to build applications for the
desktop, web, enterprise, and handset. Order now and save! You can review
the draft of the book here!
&lt;<a href="https://netbeans.org/kb/articles/NBFieldGuide.html">https://netbeans.org/kb/articles/NBFieldGuide.html</a>&gt;

Integrating NetBeans with other J2EE Vendors
This tutorial outlines how you can take advantage Ant support to integrate
other J2EE server vendors into the IDE. For J2EE development, the J2EE
support in NetBeans 4.1 does most of the leg work for you, really leaving
you to worry about generating the vendor specific deployment descriptors.
&lt;<a href="https://netbeans.org/kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a>&gt;

Drag-and-Drop Deployment to JBoss in NetBeans IDE 4.1
Did you know that you can use the Favorites window to deploy your applications?
Read "Drag-and-Drop Deployment to JBoss in NetBeans IDE 4.1" to find out more.
&lt;<a href="http://blogs.sun.com/roller/page/geertjan/20050501#drag_and_drop_deployment_to">http://blogs.sun.com/roller/page/geertjan/20050501#drag_and_drop_deployment_to</a>&gt;

New Code Completion - Flash Demo
Roman Strobl has posted another live demo featuring new code completion which
is currently being developed in NetBeans 5.0. This is some experimental stuff
so it's not in any daily builds just yet. Take a tour of some of the highlights
of new features!
&lt;<a href="http://blogs.sun.com/roller/page/roumen/20050429#new_code_completion_flash_demo">http://blogs.sun.com/roller/page/roumen/20050429#new_code_completion_flash_demo</a>&gt;

JPOX and NetBeans 4.0
This tutorial shows how to integrate JPOX with NetBeans 4.x to simplify the
development of JDO applications.
&lt;<a href="http://www.jpox.org/docs/1_1/tutorials/netbeans.html">http://www.jpox.org/docs/1_1/tutorials/netbeans.html</a>&gt;

Technical Workshop on May 25 (Luxembourg) and May 26 (Belgium)
Attend one of these free NetBeans 4.1 workshops and enter to win a trip to
NetBeans Day in San Francisco for JavaOne! The schedule, agenda and more
can be found at:
&lt;<a href="http://be.sun.com/nblaunch">http://be.sun.com/nblaunch</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>