
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>NetBeans Weekly Newsletter, Issue # 283</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 {text-align:center; padding-top:50px; 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;}
</style>

				
<div id="letter">
	<div id="head">
		<div id="issue-date" class="bold">
				Issue # 283 - Mar 19, 2007
		</div>
	</div>
	<div id="content">
	
				<h1>Calendar</h1>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1097">NetBeans Day San Francisco - Register Now!</a></h2>
						<p style="margin-left:8px;">
						Registration is open for NetBeans Software Day 2007, which will take place on Monday, May 7, at the Moscone Center in San Francisco. Discover the latest news about the NetBeans IDE and platform; meet James Gosling, Jonathan Schwartz, Rich Green and other Java luminaries; watch demos of the next generation of NetBeans software, and more. NetBeans Day is free, so register now and save the date!</p>
					</div>
				<h1>Project News</h1>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1095">NetBeans Enterprise Pack 5.5.1 Beta Now Available</a></h2>
						<p style="margin-left:8px;">
						The NetBeans Enterprise Pack is an add-on pack to the NetBeans IDE for developing SOA applications. You can have all the advantages of the NetBeans IDE support for the Java EE Platform in developing SOA. The NetBeans IDE and NetBeans Enterprise Pack help you build Web services based on the Java EE 5 Platform, orchestrate them into BPEL 2.0-compliant processes, and simultaneously secure the services.</p>
					</div>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1092">Sun Web Developer Pack</a></h2>
						<p style="margin-left:8px;">
						SWDP is a toolkit with a collection of Web 2.0 technologies that enable next generation Web application development. The toolkit consists of binaries, tutorial, documentation, samples to build your Web 2.0 application. A NetBeans plugin, installable from NetBeans Update Center Beta, simplifies the design and development of Rich Internet Applications.</p>
					</div>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1090">NetBeans jVi Module 0.8.3 Available</a></h2>
						<p style="margin-left:8px;">
						Release 0.8.3 of jVi for NetBeans is <a href="https://sourceforge.net/project/platformdownload.php?group_id=3653">now available</a>. You can find <a href="http://jvi.sourceforge.net/">online documentation</a> where it is recommended to read the "<a href="http://jvi.sourceforge.net/ReadmeNetBeans.html">jVi in NetBeans</a>." Since the snapshot release of 0.8.0, jVi has added several features and fixes, including a clean NetBeans integration, incremental search, ":set" and jdk 1.5 
compatibility. There were over 700 downloads of February 16's snapshot release of 0.8.0.</p>
					</div>
				<h1>Community</h1>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1096">NetBeans Governance Board Elections - Last Call</a></h2>
						<p style="margin-left:8px;">
						This is the last call for you to cast your votes for the community members you wish to elect to the board. Visit the Board Elections page to learn more about the candidates and voting instructions. The voting period runs through March 21, 2007, midnight in the last time zone.</p>
					</div>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1094">Real Stories From People Who Are Switching to NetBeans IDE</a></h2>
						<p style="margin-left:8px;">
						"Pure bliss!" "NetBeans 5.5 is incredible!" "I want to tear off my T-shirt in joy!" "With invaluable plugins and features like the Matisse GUI design tools and the integrated profiler, it outperforms the Java IDE competition today."</p>
					</div>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1098">Community Docs Contribution: A Visual Database Explorer for NetBeans</a></h2>
						<p style="margin-left:8px;">
						Toni Epple has contributed a tutorial to the Community Docs Wiki: A Visual Database Explorer for NetBeans. The main advantage of such a visual component is that it shows how the tables are related (foreign keys). Everything else can be shown in the available tree view as well. Tables and foreign keys can be shown as a graph with the tables being the nodes, and the foreign keys building the edges; a perfect job for the Visual library.</p>
					</div>
				<h1>Articles</h1>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1093">Portlet Creation Made Easy</a></h2>
						<p style="margin-left:8px;">
						Did you ever think of creating your own portlet? Did you find a portal to deploy the portlet created? Did you try playing around with the Tools available? Did you find the right tool?</p>
					</div>
				<h1>Blogs</h1>
				<div class="item">
				<h2><a href="http://services.netbeans.org/newsletter/story.php?id=1091">What is Schliemann?</a></h2>
						<p style="margin-left:8px;">
						Are you missing functionality for your scripting language in NetBeans IDE? If so, get ready for 6.0. There, creating editing features, such as syntax coloring, will be really simple. You will not need to know a long list of NetBeans APIs. Instead, you will be able to define your tokens and assign them to features declaratively. To give you a small taste, read "Hello Schliemann" in Geertjan's blog.</p>
					</div>
	<div class="edited">
	This week's issue was brought to you by: Robert Demmer<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/2007-03-19.html">www.netbeans.org</a>, 
				<a href="https://netbeans.org/community/news/newsletter/archive.html">newsletter archive</a>
		</div>
	</div>

</body>
</html>