<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #202 - Jun 14, 2005</title>
<META NAME="description" CONTENT="Newsletter 2005-06-14">

<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# 14-Jun 17:10 CEST                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #202 - Jun 14, 2005</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #202 - Jun 14, 2005<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2005-06-14.html'>https://netbeans.org/community/news/newsletter/2005-06-14.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>Win a FREE USB Drive and Hear From Your Favorite Java Celebrities
Last chance to register for NetBeans Day, a FREE event at the Argent Hotel on June 26,
2005. The agenda includes: Rick Ross, Hideya Kawahara (Project Looking Glass), James
Gosling, and a host of other Java luminaries. Jump- start your JavaOne week or just
come to NetBeans Day (you don't have to be registered for JavaOne to attend.)
Sign up here: &lt;<a href="https://www21.cplan.com/pls/pg_sun/c107_reg.contact_info">https://www21.cplan.com/pls/pg_sun/c107_reg.contact_info</a>&gt;
For more information: &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;

If you are attending JavaOne 2005 you can view the NetBeans activities here:
&lt;<a href="https://netbeans.org/community/articles/javaone/2005/index.html">https://netbeans.org/community/articles/javaone/2005/index.html</a>&gt;

NetBeans Wins Two Codie Awards
NetBeans IDE has won two Codie Awards, one of the industry's most prestigious honors:
Best Software Development Product and Best Open Source Product. Earlier this year, the
NetBeans IDE was named "Open Source Tool of the Year" by Developer.com
&lt;<a href="https://netbeans.org/community/news/index.html#644">https://netbeans.org/community/news/index.html#644</a>&gt;

Preview Version of the New NetBeans CVS Support
The NetBeans team is proud to announce a preview (alpha) 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.

Three New Flash Tutorials
Vincent Brabant has created 3 new flash tutorials for NetBeans. These tutorials existed in the
past, but exclusively for the french community. He has now translated them into English.
 *  How to have more workspace ?
 *  How to navigate through Sources and Views ?
 *  How to install Modules via the Update Center ?
&lt;<a href="https://netbeans.org/kb/articles/flash.html">https://netbeans.org/kb/articles/flash.html</a>&gt;

What's New in NetBeans Mobility Pack 4.1
The release of NetBeans Mobility Pack version 4.1 brings with it a number of important new
features and enhancements. This article documents the key improvements mobility developers
can look forward to when they upgrade.
&lt;<a href="https://netbeans.org/kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a>&gt;

Exploring the NetBeans Visual Mobile Designer
Developers new to Mobile Information Device Profile (MIDP) programming are often surprised
to discover how much hand-coding they are required to do. Tools like the J2ME Wireless Toolkit
available both as a standalone tool or integrated into the NetBeans platform via the NetBeans
Mobility Pack make building and packaging MIDP applications simple, but they don't provide
much help with application logic or user interface creation. That's why the Visual Mobile
Designer, a new feature of NetBeans 4.1, is so exciting ? it greatly simplifies the coding of
MIDP applications, especially their user interfaces.
&lt;<a href="https://netbeans.org/kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a>&gt;

ZenSoft Studio Streamlines Mobile Game Development with NetBeans Mobility Pack and J2ME
"When we were evaluating development platforms for mobile devices, we quickly determined that
the combination of NetBeans Mobility Pack and J2ME was hands down the best solution. These
technologies have the most sophisticated and cost-effective tools for mobile platform
development. Plus, a wide range of devices are Java-technology enabled, so using Java language
tools for mobile development makes perfect sense."
&lt;<a href="http://www.sun.com/software/customers/zensoft.xml">http://www.sun.com/software/customers/zensoft.xml</a>&gt;

JProfiler Release 4.0
J2EE features, aggregation levels, hot spot types, bookmarks, allocation time features, JVMTI
support, on-demand profiling.
&lt;<a href="http://www.ej-technologies.com/products/jprofiler/overview.html">http://www.ej-technologies.com/products/jprofiler/overview.html</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>
