<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #217 - Nov 11, 2005</title>
<META NAME="description" CONTENT="Newsletter 2005-11-11">

<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# 11-Nov 15:10 CET                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #217 - Nov 11, 2005</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #217 - Nov 11, 2005<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2005-11-11.html'>https://netbeans.org/community/news/newsletter/2005-11-11.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 Weekly News, a newsletter for the NetBeans community
Issue #217 - Nov 11, 2005
URL: &lt;<a href="https://netbeans.org/community/news/newsletter/2005-11-11.html">https://netbeans.org/community/news/newsletter/2005-11-11.html</a>&gt;
Interested in becoming a newsletter editor ? We're always looking
for editors to help out - contact nbnews_contrib@netbeans.org
Please send news contributions to nbnews_contrib@netbeans.org
-----------------------------------------------------------------
NetBeans.org Downtime - 11/11/05
NetBeans.org will offline for scheduled maintenance Friday, 11/11/05 for a period of
one hour between 9 AM - 10 am Pacific time (16:00 - 17:00 GMT). All services (http,
cvs, and email) will be unavailable during the outage. No mail will be lost.

Join the Sun Developer Network (SDN) and Get Sun's Java Studio Tools for FREE!
Get full-license versions of Sun's award winning IDEs. Sun is currently offering users
of the NetBeans and SDN members FREE copies of the Java Studio Creator ($99 value) and
Java Studio Enterprise ($1,895 value) development tools.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=116">http://services.netbeans.org/newsletter/story.php?id=116</a>&gt;

JavaOne Call for Papers Now Open
NetBeans is seeking proposals for sessions (technical talks and BOFs) for the 2006
JavaOne Developer Conference. The JavaOne Conference is your opportunity to reach this
specialized community by educating and sharing your experience and expertise with Java
technology. Please review the guidelines and instructions to submit your proposals.
For more information, see:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=122">http://services.netbeans.org/newsletter/story.php?id=122</a>&gt;

Tokyo, More Tales From NetBeans worldTour
Get the inside scoop on what happened at NetBeans Day Tokyo from Evangelist Gregg Sporar.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=117">http://services.netbeans.org/newsletter/story.php?id=117</a>&gt;

Java Enterprise Edition 5 "Hello World" Application in NetBeans
This tutorial shows how to use NetBeans and the GlassFish application server to create
and test a simple "Hello World" Java Enterprise Edition 5 application with Enterprise
JavaBeans 3.0 and dependency injection in JavaServer Faces.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=118">http://services.netbeans.org/newsletter/story.php?id=118</a>&gt;

Code Templates: Empowering Your Abbreviations
In the past, you'd type 'En' in the Source Editor, then press Space, and then the IDE
would expand 'En' to 'Enumeration'. That's nice, but it's much better in 5.0 -- when
you type 'fori' you get a whole chunk of code for iterating over a variable. But, it
gets even better than that -- you can finetune that code template so that, if the
variable already exists, the IDE increments the variable it creates to the next letter.
Other things are possible too -- you can give the IDE a lot of hints to tell it what
kind of code you want your template to generate. See Geertjan's blog for more info:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=119">http://services.netbeans.org/newsletter/story.php?id=119</a>&gt;

Using Dependent Projects
A typical characteristics of any project is that it grows in size. Maybe your project
is already big enough that it would pay of to split it into more projects. Read Roman's
blog to find out how to define project dependencies and what are the advantages and
disadvantages of splitting a project:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=120">http://services.netbeans.org/newsletter/story.php?id=120</a>&gt;

Configuration Templates in Mobility Pack
It can happen that you created a really complicated configuration where you set all
the necessary properties e.g. emulator, set values to your abilities, filter your
resources, obfuscation level, deployment methods etc. This setup is for distribution
builds but you would need another configuration for testing/debugging purposes. The
"testing/debugging" configuration would be almost the same as the "distribution" but
there would not be any deployment, obfuscation will be off and you won't to deploy it
to your server. There is an easy way how you can do this with the Mobility Pack.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=121">http://services.netbeans.org/newsletter/story.php?id=121</a>&gt;

Chat Transcript From Ask the Expert's Session on NetBeans Mobility Pack
Read the transcript of the Ask the Expert's session on NetBeans Mobility Pack 5.0 Beta
with Matt Volpi, Product Line Manager for Mobility Tools, Sun Microsystems, and Petr
Suchomel, Technical Lead for NetBeans Mobility, Sun Microsystems.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=123">http://services.netbeans.org/newsletter/story.php?id=123</a>&gt;
-----------------------------------------------------------------
This issue of NetBeans Weekly News was instantiated by Robert Demmer.
Next week issue's chief editor will be Robert Demmer.
----------------------------------------------------------------- </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>