<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #263 - Oct 23, 2006</title>
<META NAME="description" CONTENT="Newsletter 2006-10-23">

<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# 23-Oct 15:10 CEST                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #263 - Oct 23, 2006</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #263 - Oct 23, 2006<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2006-10-23.html'>https://netbeans.org/community/news/newsletter/2006-10-23.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 IDE Features Quiz
NetBeans fans, you did a great job on the history of NetBeans, but do
you know the features of the NetBeans IDE? All submissions with the
correct answers will be entered in a drawing for one Apple iPod and
five NetBeans 5.5 T-shirts. We will announce the winners next week.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=862">http://services.netbeans.org/newsletter/story.php?id=862</a>&gt;

Read This: NetBeans Interview with Tim Cramer
Joe Winchester from the JDJ interviews Tim Cramer, executive director
of tools at Sun, about NetBeans. For the current state of NetBeans
and to get a glimpse of what is coming in the future read this.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=863">http://services.netbeans.org/newsletter/story.php?id=863</a>&gt;

NetBeans IDE upgrade readied for SOA
Paul Krill in an article for Network World writes, "Focusing on open
source efforts, Sun Microsystems officials provided informational
updates on the NetBeans IDE and GlassFish application server, noting
that NetBeans will have an SOA (service-oriented architecture) bent and
be extended for other languages besides Java." Full article:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=864">http://services.netbeans.org/newsletter/story.php?id=864</a>&gt;

Why NetBeans? (Part 2)
If you watched part 1 of Roman's 'Why NetBeans?' demo earlier this
month, you know about the GUI Builder, Ant, the Profiler, localisation,
and the Platform. Before he left for Buenos Aires, Roman recorded five
more reasons: Java EE 5, SOA, mobile and visual web development and you.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=877">http://services.netbeans.org/newsletter/story.php?id=877</a>&gt;

NetBeans Day 2007 (In a Box)
Is the NetBeans World Tour bypassing your city this year? Host your
own! Here we provide all the materials and the scripts to run the
demos. Was a topic of interest to you not covered at your local
NetBeans Day? Add it here! This is your opportunity to shape the future
of the NetBeans World Tour.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=865">http://services.netbeans.org/newsletter/story.php?id=865</a>&gt;

NetBeans Module Ideas
Looking to extend NetBeans to support your favorite technology? Start
here to see if your idea's already under consideration. If the
project's looking for an owner, step up. If the project's started,
join. if you don't see your project, add it to the list.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=866">http://services.netbeans.org/newsletter/story.php?id=866</a>&gt;

Web Application Performance Profiling
This 10 minute Flash demo shows a simple example of how to use the
NetBeans Profiler to improve performance of a web application.
Contributed by Emanuel Hucka.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=867">http://services.netbeans.org/newsletter/story.php?id=867</a>&gt;

What Features Are Coming with New Java Editor Infrastructure?
Are you wondering what's going to happen before the end of this year
with the editor in NetBeans 6.0? Roman writes about the plan and
provides a link to the list of many new editing features:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=869">http://services.netbeans.org/newsletter/story.php?id=869</a>&gt;

Component-Based Development in the Web Tier
Components? In the web tier? What?! Find out all about it in this brand
new tutorial:
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=870">http://services.netbeans.org/newsletter/story.php?id=870</a>&gt;

Window Layouts and NetBeans Platform Applications
The NetBeans Window System API lets you manage your application's
window system. For example, you can create a new position in your
window layout for a TopComponent. Or you can split the area in which a
TopComponent is found, and share that area with one or more other
TopComponents. For details on these ways of manipulating your window
system, see Geertjan's blog entries "Creating A New Mode In Your
Application" ( &lt;<a href="http://services.netbeans.org/newsletter/story.php?id=871">http://services.netbeans.org/newsletter/story.php?id=871</a>&gt; )
and "Creating A New Split For An Existing Mode"
( &lt;<a href="http://services.netbeans.org/newsletter/story.php?id=872">http://services.netbeans.org/newsletter/story.php?id=872</a>&gt; ).

Get Schooled in Java Technologies
In this Sun Developer Network Channel video, hear from professional
instructors and community experts on the benefits of learning object-
oriented programming using Java. Ian Utting, Sr. Lecturer at the
University of Kent in Canterbury, UK talks about the easy-to-use BlueJ
IDE, the free opens source Java technology environment for beginners.
Sang Shin, Java Technology Architect and Evangelist explains the
advantages of developing with NetBeans, now with support for BlueJ.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=873">http://services.netbeans.org/newsletter/story.php?id=873</a>&gt;

Porting a Swing Application to the NetBeans Platform
In Josh's blog ( &lt;<a href="http://services.netbeans.org/newsletter/story.php?id=874">http://services.netbeans.org/newsletter/story.php?id=874</a>&gt; )
you can read about how he migrated a POP-3 mail reader to the NetBeans
Platform. Lots of interesting details and cool screenshots. Josh is
also one of our newish German bloggers on planetnetbeans.org/de
( &lt;<a href="http://services.netbeans.org/newsletter/story.php?id=875">http://services.netbeans.org/newsletter/story.php?id=875</a>&gt; ). If you're a
German blogger, why not join them and get maximum exposure for your
NetBeans development work!

When You Need Dedicated Professional Support
Sun Developer Services is now offering NetBeans users 25% OFF the
normal price for the 1-Year Standard, Sun Software Service Plan
(telephone support) for NetBeans. Save over $200.00 per developer.
Use Promo Code: "netbeans". Offer Expires: October 31, 2006.
&lt;<a href="http://services.netbeans.org/newsletter/story.php?id=876">http://services.netbeans.org/newsletter/story.php?id=876</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>