<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #199 - May 12, 2005</title>
<META NAME="description" CONTENT="Newsletter 2005-05-12">

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

<h1>NetBeans Weekly News<br>Issue #199 - May 12, 2005</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #199 - May 12, 2005<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2005-05-12.html'>https://netbeans.org/community/news/newsletter/2005-05-12.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 IDE 4.1 Available for Download
NetBeans is proud to announce the NetBeans IDE 4.1 final. You can either download
4.1 by itself or as a bundle containing NetBeans IDE 4.1 with Java 2 Platform
Standard Edition (J2SE) 5.0 Update 3. Be one of the first to download the new
release and be sure to tell your friends.
&lt;<a href="https://netbeans.org/downloads/index.html">https://netbeans.org/downloads/index.html</a>&gt;
For NetBeans 4.1 tutorials, guides and articles cruise on over to:
&lt;<a href="https://netbeans.org/kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a>&gt;

Mobility Pack for 4.1 Available for Download
Also available in the NetBeans Mobility Pack 4.1 final release. You can
download the mobility and find more information at:
&lt;<a href="https://netbeans.org/kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a>&gt;

The J2EE 1.4 Tutorial for NetBeans IDE 4.1
You've seen it before, but have you ever seen it like this? The J2EE Tutorial --
rewritten completely from a NetBeans IDE perspective. The J2EE Tutorial for
NetBeans IDE 4.1 includes all the J2EE-related chapters of the full document;
future versions will include more chapters. Full examples are provided as NetBeans
IDE projects, so you can play around with them to your heart's content. The final
product is a joint venture between writers and developers working at NetBeans and
at Sun. Read all about it right here:
&lt;<a href="https://netbeans.org/kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a>&gt;

New NetBeans FAQs
The new NetBeans FAQs are on a wiki server so that it's easy to add new entries
or to update the old ones. If you have any frequently asked question, please
let us know using the nbusers@netbeans.org mailing list with the [faq] prefix
in the subject. Experienced NB users who would want to help as FAQ editors for
specific areas are welcome.  To view the new 4.x FAQ section you can visit:
&lt;<a href="http://wiki.netbeans.org/wiki/view/NetBeansUserFAQ">http://wiki.netbeans.org/wiki/view/NetBeansUserFAQ</a>&gt;

Building and Running Java PathFinder with NetBeans
Java PathFinder is the outcome of a NASA project. It was mostly developed, and is
still used, at the NASA Ames Research Center. The Java PathFinder project started
in 1999 as a feasibility study for software model checking. It has since then
found its way into academia and industry, and has even helped detect defects in
real spacecraft. This document illustrates how easy it is to get a development
environment up and running for the SourceForge.net Project Java PathFinder with
NetBeans.
&lt;<a href="https://netbeans.org/kb/archive/index.html">https://netbeans.org/kb/archive/index.html</a>&gt;

NetBeans Modules for Dummies
While learning about NetBeans Modules, Geertjan wrote a 6-part document in his blog
called "NetBeans Modules for Dummies". It provides a range of information -- such
as how to write your own module from scratch, how to write Ant script to build it,
and how to turn an existing J2SE application into a module. Check it out.
&lt;<a href="http://blogs.sun.com/roller/page/geertjan/">http://blogs.sun.com/roller/page/geertjan/</a>&gt;

A NetBeans Mascot... What do you think?
Vincent Brabant writes: What is the mascot of NetBeans ? Java's mascot is Duke,
Firefox's mascot is a fox, Mozilla's mascot is a Dinosaur, But what is the
NetBeans's mascot? Share your opinions and views on this topic at nbdiscuss:
&lt;<a href="https://netbeans.org/servlets/ReadMsg?list=nbdiscuss&msgNo=3386">https://netbeans.org/servlets/ReadMsg?list=nbdiscuss&msgNo=3386</a>&gt;

How to use Nokia 6310i emulator
"I wanted to try running my midlet on Nokia's emulator for 6310i. I downloaded the
SDK from nokia website (you will have to have user account there) and installed
it on my computer. I was wondering for a while why I cannot add the SDK into
NetBeans in 'Tools > Java Platform Manager' by choosing the sdk directory and then
I found it - it's NOT UEI complaint. What to do?" You can start by reading a blog
entry by Lukas:
&lt;<a href="http://blogs.sun.com/roller/page/lukas/20050512">http://blogs.sun.com/roller/page/lukas/20050512</a>&gt;

Upgrading for 4.1RC to 4.1 Final?
A user writes: "I downloaded and installed NetBeans 4.1 when I launched it,
NetBeans detected that i have a previous version and asked me if i'd like to
import my settings, to which I replied affirmatively. The first thing I notice
is that the layout of my views is no longer as I'd customized it. I then go to
"open recent projects" and to my surprise, the list is empty. I open a project
(the hard way), open a class file, and my customized font size of 12 points has
been replaced with the default 14 pt font. Then i discover that all my keyboard
shortcut customizations has _disappeared_. I 'm sure all my other settings/
configurations were not retained. What gives??" If you are experiencing similar
problems you should browse this thread:
&lt;<a href="https://netbeans.org/projects/www/lists/nbusers/archive">https://netbeans.org/servlets/BrowseList?list=nbusers&by=thread&from=101753</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;

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; </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>
