<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #257 - Sep 11, 2006</title>
<META NAME="description" CONTENT="Newsletter 2006-09-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-Sep 17:10 CEST                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #257 - Sep 11, 2006</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #257 - Sep 11, 2006<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2006-09-11.html'>https://netbeans.org/community/news/newsletter/2006-09-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 Wins JDJ Editors' Choice Award
Java Developer's Journal Contributing Editor Jason Bell writes about
NetBeans 5.0 "After a bit of a love/hate start with NetBeans I've now
become a convert. It's very easy to use and the enterprise support is
excellent...An excellent product."
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=765">http://services.netbeans.org/newsletter/story.php?id=765</a>&gt;

NetBeans IDE 5.5 Beta 2 with JBoss Application Server 4.04 Bundle
The JBoss Application Server and NetBeans IDE have been bundled
together to provide NetBeans IDE users with a well integrated out of
the box experience to build Java EE 5 applications on the JBoss
Application Server.
Download - &lt;<a href="http://services.netbeans.org/newsletter/story.php?id=766">http://services.netbeans.org/newsletter/story.php?id=766</a>&gt;
Features - &lt;<a href="http://services.netbeans.org/newsletter/story.php?id=767">http://services.netbeans.org/newsletter/story.php?id=767</a>&gt;
Installation Instructions - &lt;<a href="http://services.netbeans.org/newsletter/story.php?id=768">http://services.netbeans.org/newsletter/story.php?id=768</a>&gt;
Press Release - &lt;<a href="http://services.netbeans.org/newsletter/story.php?id=769">http://services.netbeans.org/newsletter/story.php?id=769</a>&gt;
If you haven't seen the picture of Jonathan Schwartz giving JBoss' CEO
Marc Fleury a "I heart NetBeans" t-shirt yet, visit Roumen's blog:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=770">http://services.netbeans.org/newsletter/story.php?id=770</a>&gt;

EJB 3.0 Enterprise Beans for the JBoss Application Server
This tutorial takes you through the basics of developing an enterprise
application using EJB 3.0 technology, which is part of the Java EE 5
platform. This document shows how the EJB 3.0 technology can simplify
the process of developing enterprise applications. The application is
developed in NetBeans IDE 5.5 Beta 2 and deployed to JBoss Application
Server 4.0.4.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=771">http://services.netbeans.org/newsletter/story.php?id=771</a>&gt;

NetBeans Governance Board Elections - Voting Begins
It's time again to elect a new NetBeans Governance Board! The final
list of candidates include: Iwan Eising, Frank-Michael Moser, Edson
Carlos Ericksson Richter, David Strupl, Rich Unger and Gregg Wonderly.
Voting ends September 21, 2006 midnight last time zone. Vote today!
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=772">http://services.netbeans.org/newsletter/story.php?id=772</a>&gt;

NetBeans WorldTour - Shanghai & Beijing China
The NetBeans WorldTour is a no cost event and exciting learning
opportunity. See first-hand how NetBeans IDE can help you become more
productive with its unmatched out-of-the-box experience. Detailed
agendas, venue and contact information as well registration is now
available for both events: Space is limited so reserve your spot today!
 * Shanghai, China - September 22, 2006
 * Beijing, China - September 29, 2006
Further information and upcoming locations:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=773">http://services.netbeans.org/newsletter/story.php?id=773</a>&gt;

NetBeans Podcast #14
In this 22 minute podcast coverage: Roman's report from Turkey, Gregg
Sporar discusses the new NetBeans / JBoss Bundle, extensive list of
NetBeans hacks, Sun hires two main JRuby developers, module of the week
(Ant explorer from yWorks, new NetBeans Platform book, upcoming events
and more...
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=774">http://services.netbeans.org/newsletter/story.php?id=774</a>&gt;

TreeTableViews and Read Only Properties
How do you suppress the small "..." button in TreeTableViews, for
properties that shouldn't be edited? Read Geertjan's blog to find out:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=775">http://services.netbeans.org/newsletter/story.php?id=775</a>&gt;

Subversion Just Works in NetBeans
Tom Ball writes, "Igor Kushnirskiy's blog on accessing the sources
using Subversion was very useful, so this looked like a decent trial of
the new Subversion support recently added to the NetBeans 6.0 daily
builds. Read on...
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=776">http://services.netbeans.org/newsletter/story.php?id=776</a>&gt;

Announcing Availability of NetBeans Enterprise Pack Q-Builds
It was announced on the nbj2ee mailing list that there will now be bi-
weekly Q-Builds available. Learn more here:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=777">http://services.netbeans.org/newsletter/story.php?id=777</a>&gt;

Adding and Editing Scalable Vector Graphic (SVG) Files in the Mobility Pack
Check out the latest feature in NetBeans Mobility Pack. Add SVG content
to your MIDP applications for devices with JSR-226 support and bring
rich, dynamic animations to your mobile users.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=778">http://services.netbeans.org/newsletter/story.php?id=778</a>&gt;

Meet a NetBeans Module Writer: Emilian Bold
Romanian developer Emilian Bold has been using NetBeans IDE and the
NetBeans Platform for many years. Recently he ported a Swing
application to the NetBeans Platform. Here, he shares some pleasant
discoveries made while porting his application.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=779">http://services.netbeans.org/newsletter/story.php?id=779</a>&gt;

Last Call - Feedback Wanted: Debugging Survey
This is just a friendly reminder that we plan to leave the survey open
this last week and then close it on Sunday - Sept 17th, 2006 midnight
last timezone. So if you wanted to participate in this research, don't
hesitate and complete it now. We will then publish the results couple
of weeks later.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=780">http://services.netbeans.org/newsletter/story.php?id=780</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>