Packt 2011 Open Source Awards

The 2011 Open Source Awards was launched on the 1st week of August by Packt, inviting people to visit www.PacktPub.com and submit nominations for their favorite Open Source project. Now in its sixth year, the Awards continue in its aim of encouraging, supporting, recognizing and rewarding all Open Source projects.

The 2010 Open Source Award Winners included the Open Source Content Management System (CMS) Award winner CMS Made Simple, Open Source JavaScript Libraries Award winner jQuery and Pimcore the winner of the Most Promising Open Source Project Award.

The 2011 Awards will feature a prize fund of $24,000 with several new categories introduced and the vote of the public becoming more influential.

Packt has opened up nominations for people to submit their favorite Open Source projects for each category at www.PacktPub.com/open-source-awards-home. The top five in each category will go through to the final, which begins mid-September.

NetBeans IDE 7 Cookbook Review

I just finished reading the NetBeans IDE 7 Cookbook by Rhawi Dantas.This book is a collection of recipes addressing common tasks you will face writting applications with Netbeans.

These recipes are small, direct and concise tutorials that will show you, step by step, the procedure to achieve those tasks.

There are more than 70 recipes grouped by several topics like GUI, Mobile, Web Applications, Refactoring and so on.

Each recipe has four different sections: an introduction, the how-to of the recipe, a description of how it works, and some text about additional things or procedures you can use to extend the procedure of the addressed task.

You can download a free sample chapter to get an idea of how the recipes are written.

One of the good things of the book is that it is not bound to any language at all. It shows all the main features of Netbeans available for any language and technology, covering how to create the projects and how to use the common tools to all the languages and some others that are language specific.

In the other hand it does not cover all the things you can do with Netbeans (obviously!), but is a good introduction of the main things you will find on the IDE.

I have to say that I am a Netbeans user since 2005 and I am very used to it. With that in mind, I feel this book is not well suited for advanced users or people already familiar with Netbeans.

That is not necessarily a bad thing. The book is indeed for those coders who are making their first steps into this IDE and need a tutorial for quickly getting things up and running.

All in all, this is a very valuable book for beginners or for people that is currently starting up with Netbeans. It will teach you the basics steps to quickly start developing applications with Netbeans.  The concepts and recipes are basic so more advanced users may want to pass.

Netbeans file templates

You may have seen that when you create a new class, interface or something with Netbeans, the IDE automatically generates some code for you.

It is possible to customize this code using the Netbeans File Templates.

Under the “Tools” menu there is an option called “Templates”. This dialog let you create and edit every template used in the IDE. Just click on the “Open on Editor” button to edit the desired template inside Netbeans.

Let’s see how the Java/Class template looks like:

<#assign licenseFirst = "/*">
<#assign licensePrefix = " * ">
<#assign licenseLast = " */">
<#include "../Licenses/license-${project.license}.txt">

<#if package?? && package != "">
package ${package};

</#if>
/**
*
* @author ${user}
*/
public class ${name} {

}

If you edit this file and save it, the IDE will be using your new template for every new Java class you create.

Since Netbeans 6.0 you can use the FreeMarker template language in your file templates. This way you can add logic to the templates via directives such as if/elseif/else and loop constructs.

You can also use some predefined variables:

  • ${date} — Inserts the current date, in this format: Feb 16, 2008
  • ${encoding} — Inserts the default encoding, such as: UTF-8
  • ${name} — Inserts the name of the file.
  • ${nameAndExt} — Inserts the name of the file, together with its extension.
  • ${package} — Inserts the name of the package where the file is created.
  • ${time} — Inserts the current time, in this format: 7:37:58 PM
  • ${user} — Inserts the user name.

This is an example of a modified file template for Java classes:

////////////////////////////////////////////////
/// File: ${nameAndExt}
/// Created: ${date}  ${time}
/// Encoding: ${encoding}
////////////////////////////////////////////////

<#assign licenseFirst = "/*">
<#assign licensePrefix = " * ">
<#assign licenseLast = " */">
<#include "../Licenses/license-${project.license}.txt">

<#if package?? && != "">
package ${package};

</#if>
/**
*
* @author ${user}
*/
public class ${name} {

}