<HTML>
<HEAD>
<title>netbeans.org: NetBeans Weekly News Issue #189 - Jan 26, 2005</title>
<META NAME="description" CONTENT="Newsletter 2005-01-26">

<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# 26-Jan 16:10 CET                          -->
<!-- ====================================================== -->
</HEAD>
<BODY>

<h1>NetBeans Weekly News<br>Issue #189 - Jan 26, 2005</h1><hr>
NetBeans Weekly News, a newsletter for the NetBeans community<br>
Issue #189 - Jan 26, 2005<br>
URL: &lt;<a href='https://netbeans.org/community/news/newsletter/2005-01-26.html'>https://netbeans.org/community/news/newsletter/2005-01-26.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>Web Chat Today
Upcoming Web Chat: Solving the Device Fragmentation Problem
The upcoming chat will take place Wednesday, January 26, 2005 at 9:00
PST/17:00 UCT and feature the following speakers: Greg Crawley, Adam
Sotona, and David Kaspar. Introducing the only mobility development
tool with built-in features to help you quickly and easily solve device
fragmentation problems - NetBeans Mobility Pack 4.0. Register today:
&lt;<a href="http://see.sun.com/Apps/DCS/mcp?q=STDG27TG55H332">http://see.sun.com/Apps/DCS/mcp?q=STDG27TG55H332</a>&gt;

Last Chance to Win Apple iPod Photo
The deadline for the Win an iPod competition has been extended by 1 week,
until the 31st of January. Winners will be announced February 7th.
Get your entries in now!
&lt;<a href="https://netbeans.org/competition/win-with-netbeans.html">https://netbeans.org/competition/win-with-netbeans.html</a>&gt;

NetBeans IDE 4.1 Early Access 2 Released
Download and preview the next scheduled NetBeans release. This early
access release has over 15 new modules for developing Java 2 Platform,
Enterprise Edition (J2EE) 1.4 applications and is built on the novel
and breakthrough NetBeans 4.0 technology. Users can develop programs for
Java 2 Platform, Standard Edition (J2SE), Java 2 Platform, Micro Edition
(J2ME), and now J2EE Enterprise Java Bean (EJB)components and Web
Services. Using the free Sun Java System Application Server Platform
Edition 8.1 Release Candidate as the deployment runtime and with NetBeans
guiding the developer and automatically building the underlying J2EE
infrastructure, learning about and developing J2EE 1.4 applications has
never been easier.
&lt;<a href="https://netbeans.org/servlets/ReadMsg?msgId=892957&listName=nbannounce">https://netbeans.org/servlets/ReadMsg?msgId=892957&listName=nbannounce</a>&gt;

Vote NetBeans as Developer.com Open Source Tool of the Year
Voting for the Developer.com Product of the Year 2005 awards has begun.
The readers have nominated the products they considered  the "best of the
best" in 2005 and NetBeans IDE is a finalist for Open Source Tool of the
Year. Vote now and help NetBeans gain is well deserved fame and recognition.
Registration is not required so Vote Now!
&lt;<a href="http://awards.jupitermedia.com/index.phpr/10915">http://awards.jupitermedia.com/index.phpr/10915</a>&gt;

Download: NetBeans 4.0 Plugin for Sun Java System Application Server
Platform Edition 8
The plugin is available from NetBeans IDE 4.0 Update Center and it
tightly integrates NetBeans IDE with SJS Applications Server. It
supports Web tier applications (JSP and Servlets) development,
deployment and debugging for Sun Java System Application Server
Platform Edition 8 Update 1.
&lt;<a href="https://netbeans.org/community/news/index.html#553">https://netbeans.org/community/news/index.html#553</a>&gt;

Mevenide 0.5 for NetBeans
The mevenide team has announced the Mevenide NetBeans project support 0.5
release. New Features Include:
* In project customizer show list of available maven plugins and their
  properties.
* Test Resources and Castus Test Sources added to project view.
* In project view allow to filter the resource directory structure. Either
  show all files or just the included ones. Showing only included resources
  is the default now.
&lt;<a href="http://mevenide.codehaus.org/mevenide-netbeans-project/">http://mevenide.codehaus.org/mevenide-netbeans-project/</a>&gt;

Smart Developer Environment (SDE 2.0) for NetBeans
SDE 2.0 for NetBeans provides a full UML 2.0 support for your NetBeans,
you can model your application the latest UML notations and diagrams.
Visual Paradigm's modeling environment is seamlessly integrated with
NetBeans, therefore you can perform analysis, design, implementation and
deployment in single platform. You code and documentation are always keep
in synch. You can discuss your design with colleague by sketching the UML
diagrams inside the NetBeans.
&lt;<a href="http://plugins.netbeans.org/">http://plugins.netbeans.org/</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>