
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>NetBeans Weekly Newsletter, Issue # 327</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
<meta name="keywords" content="NetBeans, IDE, Platform, free, open source, developer" >
</head>
<body>
<style>
body {
		margin:5px 15px 5px 15px;
		font-size: 11px;
		font-family: Verdana, "Verdana CE",  Arial, "Arial CE", "Lucida Grande CE", lucida, "Helvetica CE", sans-serif;
		background-color:#e3eaf1;
		text-align:center;
}
				
#letter {width:533px;margin-left:auto;margin-right:auto;}
#head {background-image:url("http://services.netbeans.org/appl2/shared_images/head.png");width:533px;height:70px;background-repeat:none;}
#issue-date {padding-top:50px;text-align:center; color:white;}
#footer {background-image:url("http://services.netbeans.org/appl2/shared_images/footer.png"); width:533px;height:28px;background-repeat:none;}
#footer-text {padding-top:5px;color:#6a6b6d;text-align:center;}
#content {border-right:3px solid #747d9e;border-left:3px solid #747d9e; background-color:white; text-align:left; color:#6a6b6d; padding:13px 20px 13px 13px; }
#letter h1 {font-size: 14px; font-weight:normal; margin:3px 0px 5px 0px;; padding:0px;color: #EE6B00; border-bottom:1px solid silver;}
#letter h2 {color:#2C3C79;font-size: 13px; font-weight:normal;margin:0px 0px 2px 0px;;padding:0px; border:0px;}
#letter p {padding 0px;margin:0px; text-align:justify;}
#letter a:link, a:visited { color: #045491; font-weight : normal; text-decoration: none;}
#letter a:link:hover, a:visited:hover  { color: #045491; font-normal : bold; text-decoration : underline;}
.item {margin-left:8px; margin-bottom:9px;}
.bold {font-weight:bold;}
#letter a.orange {color: #EE6B00;}
.align-right {text-align:right;}     
.align-center {text-align:center;}  
.edited {margin:15px -20px 0px -13px;padding-top:8px;text-align:center;}
.edge-top {background-color: #f0f7ff;padding:7px 12px 7px 7px;margin-bottom:10px; border:1px solid #747d9e;}
</style>

				
<div id="letter">
	<div id="head">
		<div id="issue-date" class="bold">
				Issue # 327 - Feb 04, 2008
		</div>
	</div>
	<div id="content">
	
				<h1>Project News</h1>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1555">NetBeans 6.1 Milestone 1 Now Available!</a></h2>
						<p style="margin-left:8px;">
						Milestone 1 of the NetBeans 6.1 IDE is now available for download! This stabilized development build contains noteworthy features such as:<br><ul>
<li>WebSphere 6.0 & 6.1 support<br>
<li>Plugin for Mercurial versioning system<br>
<li>New Woodstock components in Palette<br>
<li>and <a href="http://wiki.netbeans.org/NB61NewAndNoteWorthy">more!</a></ul>
<a href="http://bits.netbeans.org/netbeans/6.1/m1/2008-01-28_10-31-18/">Download Milestone 1</a> today!</p>
					</div>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1556">Get Paid to Code! NetBeans Innovators Grants</a></h2>
						<p style="margin-left:8px;">
						Do you want to make your dream project a reality? The  NetBeans Innovators Grants program is part of Sun Microsystems' initiative to give US$ 1 million to open source developers across the globe to work on their favorite Sun-sponsored project. Led by the NetBeans Community and the NetBeans Dream Team, the NetBeans Innovators Grants will help you turn your ideas into real projects. The deadline for submission is March 3, 2008; send in your best ideas now!</p>
					</div>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1554">Webinar: iReport for NetBeans - Efficiently Build, Test & Run Complex Reports</a></h2>
						<p style="margin-left:8px;">
						Join NetBeans technology evangelist Brian Leonard and JasperSoft's iReport lead engineer Giulio Toffoli for an on-demand webinar on how NetBeans and iReport, the world's most popular open source graphical report and dashboard design tool, enable developers to build and edit complex reports for rich-client and web applications in a native development environment. <i>(Available on demand: February 4-8, 2008)</i></p>
					</div>
				<h1>Training</h1>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1562">Guided Tour of Subversion for NetBeans IDE 6.0</a></h2>
						<p style="margin-left:8px;">
						NetBeans IDE 6.0 now provides tight integration with Subversion client versions 1.3.x and higher. This tutorial demonstrates how to perform basic versioning tasks in the IDE by guiding you through the standard workflow when using versioning software. It also introduces you to some of the new Subversion features included in NetBeans IDE 6.0.</p>
					</div>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1561">Installing Netbeans 6.0 on Fedora 7</a></h2>
						<p style="margin-left:8px;">
						This guide from community member Ankit Jain goes through the steps of installing NetBeans 6.0 on Fedora 7.</p>
					</div>
				<h1>Articles</h1>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1559">Walking the Java Heap with NetBeans 6.0 Profiler</a></h2>
						<p style="margin-left:8px;">
						NetBeans 6.0 offers a host of new features for developers, including support for heap dumps in the Profiler. NetBeans technology evangelist Tim Boudreau gives an overview of the Heap Walker in this JDJ article.</p>
					</div>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1560">Citra FX Photo Filter 2.1 Released (Built on the NetBeans Platform)</a></h2>
						<p style="margin-left:8px;">
						We first learned about developer <a href="http://platform.netbeans.org/articles/nbm_interview_tonny2.html">Tonny Kuhar</a> and his cool application Citra FX Photo Filter last year. Built on the NetBeans Platform, Citra FX lets those of us without an advanced degree in Photoshop produce artistic effects on our digital images. A new release of Citra FX Photo Filter is now available. Check it out for an easy way to make your photos pop.</p>
					</div>
				<h1>Blogs</h1>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1557">Hello Grails!</a></h2>
						<p style="margin-left:8px;">
						The recently released NetBeans 6.1 Milestone 1 build brings with it the beginnings of support for Groovy and Grails. In this post, Brian Leonard creates a Grails implementation of the basic web log we've been using for our Rails tutorials.</p>
					</div>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1558">JavaSE Client for a Metro Endpoint</a></h2>
						<p style="margin-left:8px;">
						Arun Gupta shows how a Secure and Reliable Metro endpoint can be invoked using a Java SE client.</p>
					</div>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1563">Switching to Mercurial</a></h2>
						<p style="margin-left:8px;">
						NetBeans recently switched to a new version control system, Mercurial. Tim Boudreau, who just set up his Mercurial server, writes about some of the reasons the switch appeals to him.</p>
					</div>
	<div class="edited">
	This issue was brought to you by: Tinuola Awopetu<br/>If you do not want to receive this newsletter, you can <a href="https://netbeans.org/community/lists/top.html">unsubscribe here<a>
	</div>
	</div>
	<div id="footer">
		<div id="footer-text">
				This newsletter is accessible also at <a href="https://netbeans.org/community/news/newsletter/2008-02-04.html">www.netbeans.org</a>, 
				<a href="https://netbeans.org/community/news/newsletter/archive.html">newsletter archive</a>
		</div>
	</div>

</body>
</html>