<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #207 - Aug 16, 2005</title>
<META NAME="description" CONTENT="Newsletter 2005-08-16">

<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# 16-Aug 19:37 CEST                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #207 - Aug 16, 2005</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #207 - Aug 16, 2005<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2005-08-16.html'>https://netbeans.org/community/news/newsletter/2005-08-16.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>FIRST FEATURE OVERVIEW OF NETBEANS IDE 5.0 POSTED!
Have you been curious about the upcoming features in NetBeans 5.0? Take a look at the
overview on NetBeans.org. This upcoming release is scheduled for mid-December 2005.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=3">http://services.netbeans.org/newsletter/story.php?id=3</a>&gt;

NetBeans Profiler Milestone 8 Released
The NetBeans Profiler team has announced the availability of the Profiler Milestone 8
release for NetBeans 4.1. To download or get more information visit:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=4">http://services.netbeans.org/newsletter/story.php?id=4</a>&gt;.
What's New in the Milestone 8 Release?
 * Improved profiling for J2EE applications and Applets
 * Better support for Sun Java Application Server
 * Ability to take results snapshot before the profiled application exits
 * Improved navigation in profiling results, searching in Call trees
 * Profiling JUnit tests
 * (As always) Large number of bugfixes
Complete list of new features, enhancements and bugfixes can be found at:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=5">http://services.netbeans.org/newsletter/story.php?id=5</a>&gt;

Beta version of the new NetBeans CVS Support now available in development builds!
The NetBeans team is proud to announce a Beta version of the new redesigned CVS
support, an innovative approach to integration of a Version Control System (VCS) into
the NetBeans Integrated Development Environment (IDE). The new module provides a
simple, efficient IDE versioning workflow and intelligent support for common
versioning operations.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=6">http://services.netbeans.org/newsletter/story.php?id=6</a>&gt;

NetBeans Governance Board Elections: Polling Begins
The NetBeans Governance Board nomination period has closed and this is the final list
of  people who were nominated: Vincent Brabant, Leon Chiver, David Strupl and Rich
Unger. The voting period closes on August 25, midnight in the last timezone. Rules are
the same: You can vote for *up to* 3 candidates; You can only vote once; You need to
be logged in to NetBeans.org to vote. The voting results and the new board will be
announced after the voting closes, on August 26. To cast your VOTE, please go to the
NetBeans polling page.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=7">http://services.netbeans.org/newsletter/story.php?id=7</a>&gt;

Q-Build 200508021800 Promoted
What's new in this Q-Build? Safe delete refactoring, Java Hints and breakpoint
properties can be accessed from editor annotations. Full details:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=10">http://services.netbeans.org/newsletter/story.php?id=10</a>&gt;

Q-Build 050808 of Mobility Pack
What's new in this Q-Build? Visual Mobile Designer:
 * Palette and Inspector are moved. There is more space for designer area
 * Press of CTRL in Flow design switch to mode when you can redesign layout of
   transitions and ports
 * Algorithm for transition path was improved
 * Properties names with non default values are in bold
Preprocessor
 * Code completion for preprocessor block (type //# to start preprocessor block)
 * Context menu for preprocessor actions is back
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=11">http://services.netbeans.org/newsletter/story.php?id=11</a>&gt;

Drag-and-Drop JSP and HTML Code Snippets in NetBeans IDE
Your life as a web developer just got much much easier. How often have you had a JSP or
an HTML open in the Source Editor and thought to yourself: "Now I wonder how to create a
'form'. And what tags do I need to do a 'forEach' or a 'choose' in JSTL?" Check out
Geertjan's blog entry for the reason why you will never be asking yourself these
questions again.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=12">http://services.netbeans.org/newsletter/story.php?id=12</a>&gt;

Meven 0.8 for NetBeans
The mevenide team has announced the Mevenide NetBeans project support 0.8 release.
New Features include:
 * Dependencies now visible and editable in Project View. Add/Edit/Remove dependency
   actions easily accessible from project explorer. One can download the missing
   dependencies, download/view it's javadoc etc. See a descriptive screenshot
 * MEVENIDE-165 - allow user to check the remote repositories for javadocs and sources
   of project's dependencies.
 * Added the default NetBeans IDE webapp/j2ee deployment. Allows deploying and
   debugging on IDE-supported servers.
 * Access pom and property files from the project view.
 * Multiple bugs fixed as usual.
&lt;<a href="http://mevenide.codehaus.org/mevenide-netbeans-project/">http://mevenide.codehaus.org/mevenide-netbeans-project/</a>&gt;

yWorks Ant Explorer
Visualizes Ant build scripts inside NetBeans. Both Targets and their dependencies
and properties and their dependencies can be explored visually. Also provides means
to animate the execution of Ant scripts. Helps in understanding and debugging complex
Ant scripts.
&lt;<a href="http://www.yworks.com/en/products_antexplorer_about.htm">http://www.yworks.com/en/products_antexplorer_about.htm</a>&gt;

Roman Records A NetBeans Song
Looking for music that is outside the mainstream? Be sure to stop by Roman's blog and
download his latest smash hit with the lyrics to follow along.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=13">http://services.netbeans.org/newsletter/story.php?id=13</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>