<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Planeta NetBeans</title>
    <link>http://www.planetnetbeans.org/es/</link>
    <language>es</language>
    <description>Planeta NetBeans - http://www.planetnetbeans.org/es/</description>
    <item>
      <title>diesil's java: Base de datos relacionales en Java: HSQLDB y Apache Derby (Parte 1)</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5074673367662676974.post-3484126157165671722</guid>
      <link>http://diesil-java.blogspot.com/2009/01/base-de-datos-relacionales-en-java.html</link>
      <description>Hola a todos&lt;br /&gt; comenzaré este año con un post que quizás para algunos sea aburrido. Base de datos relacionales 100% Java.&lt;br /&gt; &lt;br /&gt; Ojo, no estoy diciendo que sean bases de datos orientados a objetos. Eso es otro tema. Sino, que son bases de datos relacionales (esos de Entidad-relación, tuplas, relaciones, columnas, claves foráneas, etc.) cuyo motor está hecho en Java. Por tanto, si queremos modificar algo de su funcionamiento, pues encontraremos el código en
      Java. No en C, ni C++, ni C#, sino en Java.&lt;br /&gt; &lt;br /&gt; Sabemos que los drivers de &lt;a href="http://java.sun.com/docs/books/tutorial/jdbc/basics/gettingstarted.html#pgfId=1006632"&gt;tipo 4 de JDBC&lt;/a&gt; se conectan directamente a la base de datos usando protocolos de red en java puro. Entonces, podemos suponer que usando bases de datos en java con jdbc en java, la conexión es mucho más directa, y se accede a los datos sin intermediarios. Bueno, es solo una suposición
      personal.&lt;br /&gt; &lt;br /&gt; En este post comentaré de dos RBDMS en Java muy conocidos y usados: &lt;a href="http://www.hsqldb.org/"&gt;HSQLDB&lt;/a&gt; y &lt;a href="http://db.apache.org/derby/"&gt;Apache Derby&lt;/a&gt;. Haremos ejemplos usando NetBeans 6.5, aunque también funcionará en NetBeans 6.1.&lt;br /&gt; &lt;br /&gt; Comenzaré con el que más me gusta y más conozco:&lt;br /&gt; &lt;h2&gt;HSQLDB&lt;/h2&gt;Es la continuación del proyecto HypersonicSQL desde 2001. Permite varias
      sentencias &lt;a href="http://www.contrib.andrew.cmu.edu/%7Eshadow/sql/sql1992.txt"&gt;SQL - ANSI92&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt; Descargaremos la biblioteca JDBC, que a su vez también es el RDBMS, de aquí:&lt;br /&gt; &lt;br /&gt; &lt;a href="http://downloads.sourceforge.net/hsqldb/hsqldb_1_8_0_10.zip"&gt;http://downloads.sourceforge.net/hsqldb/hsqldb_1_8_0_10.zip&lt;/a&gt;&lt;br /&gt; &lt;br /&gt; (La versión utilizada en este post es la 1.8.0.10)&lt;br /&gt; &lt;br /&gt; Solo pesa 3.6
      MB&lt;br /&gt; &lt;br /&gt; Al descomprimirlo encontraremos varias carpetas. La carpeta lib contiene el driver hsqldb.jar y este .jar es el más importante para todo el HSQLDB, ya que es el JDBC y a su vez el motor de la base de datos.&lt;br /&gt; &lt;h3&gt;Modos de uso&lt;/h3&gt;HSQLDB tiene los siguientes modos de uso:&lt;br /&gt; &lt;h4&gt;HSQLDB Server&lt;/h4&gt;Es un modo cliente-servidor. Es decir, de la manera común que siempre hemos visto como operan los RBDMS como Oracle, MySQL, Firebird,
      PostgreSQL, etc. Esto es: se ejecuta la aplicación desde cualquier host quedando en espera (servidor), y desde cualquier otro host puede acceder como cliente al servidor.&lt;br /&gt; &lt;br /&gt; &lt;b&gt;Hagamos un ejemplo:&lt;/b&gt; Desde una ventana de la consola del Sistema Operativo, vayamos a la carpeta que se descomprimió el contenido del archivo .zip. En mi caso es &lt;b&gt;d:\proys\lib\hsqldb&lt;/b&gt;. (Nota: el directorio &lt;i&gt;hsqldb&lt;/i&gt; debe contener el directorio &lt;i&gt;lib
      &lt;/i&gt;para poder realizar lo siguiente) Una vez allí ejecutamos lo siguiente:&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;pre&gt;&lt;code&gt;java -cp lib/hsqldb.jar org.hsqldb.Server &lt;span style="color: #38761d;"&gt;-database.0 file:data/demo_db&lt;/span&gt; &lt;span style="color: blue;"&gt;-dbname.0 xdb&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt; &lt;br /&gt; Al ejecutar esto, la ventana de consola muestra lo siguiente:&lt;br /&gt; &lt;div style="clear: both; text-align:
      center;" class="separator"&gt;&lt;a style="margin-left: 1em; margin-right: 1em;" href="http://4.bp.blogspot.com/_BQk94ojgkDY/SWPQCH-2BxI/AAAAAAAACJ4/6FamuV7UsZQ/s1600-h/cmd-hsqldb.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_BQk94ojgkDY/SWPQCH-2BxI/AAAAAAAACJ4/6FamuV7UsZQ/s400/cmd-hsqldb.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt; &lt;br /&gt; Ya sabemos qué significa java -cp y su argumento lib/hsqldb.jar.&lt;br /&gt; &lt;br /&gt; Pero nuestra clase org.hsqldb.Server tiene cuatro
      argumentos importantes. Estos argumentos son realmente dos importantes:&lt;br /&gt; &lt;br /&gt; &lt;span&gt;-database.0 file:data/demo_db&lt;/span&gt;: Este parámetro indica cual es la base de datos que se va a crear físicamente. Como pueden crearse varias bases de datos, debemos diferenciar cada una usando un número después del parámetro &lt;i&gt;-database.&lt;/i&gt;. Es decir, en este caso, nuestra base de datos tiene el número 0 (-database.&lt;b&gt;0&lt;/b&gt;). Luego con el parámetro
      &lt;i&gt;file:&lt;/i&gt; se especifíca&#160; dónde se va a ubicar físicamente el archivo de la base de datos. En este caso se creará el archivo &lt;i&gt;demo_db&lt;/i&gt; dentro de la carpeta &lt;i&gt;data&lt;/i&gt;. Puede ser una ruta relativa o absoluta de disco. (file:data/demo_db)&lt;br /&gt; &lt;br /&gt; &lt;span&gt;-dbname.0 &lt;b&gt;xdb&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;Indica el nombre de la base de datos. También se tiene que especificar el número de la base de datos que debe
      coincidir con el argumento -database. En este ejemplo, el nombre de la base de datos es xdb. Esto es que para acceder desde Java debemos indicar el nombre xdb y no el archivo físico.&lt;br /&gt; &lt;br /&gt; Esto quiere decir que si deseamos tener otra base de datos adicional llamada &lt;i&gt;clientes&lt;/i&gt;, debemos escribir todo esto:&lt;br /&gt; &lt;br /&gt; &lt;br /&gt; &lt;pre&gt;&lt;code&gt;java -cp lib/hsqldb.jar org.hsqldb.Server &lt;span style="color: #38761d;"&gt;-database.0
      file:data/demo_db&lt;/span&gt; &lt;span style="color: blue;"&gt;-dbname.0 xdb &lt;/span&gt; &lt;b&gt;&lt;span style="color: #38761d;"&gt;-database.1 file:data/clientes_db&lt;/span&gt; &lt;span style="color: blue;"&gt;-dbname.1 clientes&lt;/span&gt;&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt; Ahora bien, ¿cómo se accede desde java? Bien, usaremos el NetBeans, en el panel de "Prestaciones" (Ctrl+5). En el nodo "Controladores" hagamos clic derecho y seleccionamos "Nuevo controlador..."&lt;br /&gt;
      &lt;br /&gt; &lt;div style="clear: both; text-align: center;" class="separator"&gt;&lt;a style="margin-left: 1em; margin-right: 1em;" href="http://2.bp.blogspot.com/_BQk94ojgkDY/SWPSXTTvFiI/AAAAAAAACKA/jgJqDMhqYG8/s1600-h/hsqldb-2.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_BQk94ojgkDY/SWPSXTTvFiI/AAAAAAAACKA/jgJqDMhqYG8/s320/hsqldb-2.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;Con esto se abrirá una ventana de diálogo "Nuevo Driver JDBC". Hacemos clic en el botón "Agregar..." y buscamos el archivo
      hsqldb.jar (Sí, el mismo que usamos para ejecutar nuestro servidor... como dije antes: ese mismo archivo es el motor y el driver)&lt;br /&gt; &lt;br /&gt; Una vez seleccionado, el NetBeans encontrará la clase controladora de la base de datos:&lt;br /&gt; &lt;br /&gt; &lt;div style="clear: both; text-align: center;" class="separator"&gt;&lt;a style="margin-left: 1em; margin-right: 1em;" href="http://3.bp.blogspot.com/_BQk94ojgkDY/SWPTKaFkVjI/AAAAAAAACKI/tXa5w0O1zUo/s1600-h/hsqldb-3.jpg"&gt;&lt;img
      src="http://3.bp.blogspot.com/_BQk94ojgkDY/SWPTKaFkVjI/AAAAAAAACKI/tXa5w0O1zUo/s400/hsqldb-3.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt; Clic en "Aceptar". Y se agregará un nuevo elemento bajo el nodo "Controladores" llamado "HSQLDB". Hacemos clic derecho sobre este nodo creado y seleccionamos "Conectar usando..." para crear una conexión usando este controlador. Se presentará la ventana de diálogo "nueva coneixón de base de datos...". Escribimos lo siguiente:&lt;br /&gt;
      &lt;ul&gt;&lt;li&gt;nombre de usuario: sa&lt;/li&gt; &lt;li&gt;password: (nada)&lt;/li&gt; &lt;li&gt;JDBC URL: &lt;b&gt;jdbc:hsqldb:hsql://localhost/&lt;span style="color: red;"&gt;xdb&lt;/span&gt;&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;&lt;br /&gt; &lt;div style="clear: both; text-align: center;" class="separator"&gt;&lt;a style="margin-left: 1em; margin-right: 1em;" href="http://4.bp.blogspot.com/_BQk94ojgkDY/SWPU_HwqrAI/AAAAAAAACKQ/OjS6w-DTgII/s1600-h/hsqldb-4.jpg"&gt;&lt;img
      src="http://4.bp.blogspot.com/_BQk94ojgkDY/SWPU_HwqrAI/AAAAAAAACKQ/OjS6w-DTgII/s400/hsqldb-4.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt; Note que el nombre de la base de datos es &lt;b&gt;xbd&lt;/b&gt; tal como lo especificamos cuando ejecutamos el servidor. Clic en Aceptar, y al mostrarse el esquema que debemos seleccionar, dejamos la opción predeterminada&#160; "INFORMATION_SCHEMA". Se creará un nuevo nodo de conexión, y al abrirlo podemos ver su contenido. Claro, en este momento no hay
      ninguna tabla creada.&lt;br /&gt; &lt;div style="clear: both; text-align: center;" class="separator"&gt;&lt;a style="margin-left: 1em; margin-right: 1em;" href="http://1.bp.blogspot.com/_BQk94ojgkDY/SWPW7KqP1CI/AAAAAAAACKY/RGIbr9ejVdU/s1600-h/hsqldb-5.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_BQk94ojgkDY/SWPW7KqP1CI/AAAAAAAACKY/RGIbr9ejVdU/s320/hsqldb-5.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt; Pero como podemos ver, es como cualquier otra conexión a base de datos.&lt;br /&gt;
      Desde el IDE podemos crear tablas, usando sentencias SQL.&lt;br /&gt; &lt;br /&gt; &lt;div style="clear: both; text-align: center;" class="separator"&gt;&lt;a style="margin-left: 1em; margin-right: 1em;" href="http://1.bp.blogspot.com/_BQk94ojgkDY/SWPY8be60oI/AAAAAAAACKo/9eTg16VZgfk/s1600-h/hsqldb-7.jpg"&gt;&lt;img src="http://1.bp.blogspot.com/_BQk94ojgkDY/SWPY8be60oI/AAAAAAAACKo/9eTg16VZgfk/s320/hsqldb-7.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;Es posible que las tablas creadas no se visualicen
      en el IDE de NetBeans. Pero sí podemos ejecutar sentencias SQL DDL o DML con total normalidad:&lt;br /&gt; &lt;br /&gt; Ahora, podemos visualizar la carpeta &lt;i&gt;hsqldb/data&lt;/i&gt;.Vemos que se ha creado al menos dos archivos por cada base de datos. Todas nuestras sentencias DDL (create, drop, alter, etc) y DML (select, insert, update, etc) se registrarán en el archivo de extensión .script. Es decir, que podemos modificar estos archivos manualmente para crear nuestras tablas y los datos que
      contendrán. Para poder modificar este archivo, debemos detener la base de datos.&lt;br /&gt; &lt;br /&gt; También podemos acceder a las tablas de la base de datos utilizando una herramienta propia del hsqldb. Regresemos nuevamente a nuestra consola y ejecutemos lo siguiente (el servidor deberá aún estar en ejecución, asi que es necesario abrir una nueva ventana de consola)&lt;br /&gt; &lt;br /&gt; &lt;pre&gt;&lt;code&gt;java -cp lib/hsqldb.jar
      &lt;b&gt;org.hsqldb.util.DatabaseManager&lt;/b&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt; &lt;br /&gt; En la ventana de diálogo "Connect" que aparece escribimos el mismo URL que escribimos párrafos arriba, el mismo usuario y nada en la contraseña. El driver y el tipo son opcionales.&lt;br /&gt; &lt;div style="clear: both; text-align: center;" class="separator"&gt;&lt;a style="margin-left: 1em; margin-right: 1em;"
      href="http://2.bp.blogspot.com/_BQk94ojgkDY/SWPbnECgoCI/AAAAAAAACKw/Pk_2Io17Jls/s1600-h/hsqldb-8.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_BQk94ojgkDY/SWPbnECgoCI/AAAAAAAACKw/Pk_2Io17Jls/s320/hsqldb-8.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt; Clic en OK y listo.&lt;br /&gt; &lt;div style="clear: both; text-align: center;" class="separator"&gt;&lt;a style="margin-left: 1em; margin-right: 1em;"
      href="http://3.bp.blogspot.com/_BQk94ojgkDY/SWPcGbYcuhI/AAAAAAAACK4/uPeEFxYChik/s1600-h/hsqldb-9.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_BQk94ojgkDY/SWPcGbYcuhI/AAAAAAAACK4/uPeEFxYChik/s320/hsqldb-9.jpg" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;Este manejador de base de datos es muy interesante, simple y efectivo. No detallaré esta herramienta ya que no es el motivo de este post.&lt;br /&gt; &lt;br /&gt; Así pues, ya tenemos el servidor, y sabemos como conectarnos con él.&lt;br /&gt; &lt;br /&gt;
      ¿y cómo puede conectarse desde un programa java? Pues ya se puede imaginar:&lt;br /&gt; &lt;br /&gt; &lt;pre&gt;&lt;code&gt;Class.forName("org.hsqldb.jdbcDriver"); Connection conn = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/xdb", "sa", ""); &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt; &lt;h4&gt;Hsqldb Web Server&lt;/h4&gt;Este modo es muy interesante.Todos sabemos que por seguridad de redes los firewall evitan el uso de puertos adicionales a los permitidos. Los puertos por omisión del HSQLDB
      Server es el&#160; 9001 y el 544. Pero HSQLDB nos da la posibilidad de usar el puerto 80 como si fuera un servidor web.&lt;br /&gt; &lt;br /&gt; Se ejecuta de la misma manera que el modo Server, pero se usa la clase WebServer. Es decir, debe ejecutarse de la siguiente manera:&lt;br /&gt; &lt;br /&gt; &lt;pre&gt;&lt;code&gt;java -cp lib/hsqldb.jar &lt;b&gt;org.hsqldb.WebServer&lt;/b&gt; &lt;span style="color: #38761d;"&gt;-database.0 file:data/demo_db&lt;/span&gt; &lt;span style="color:
      blue;"&gt;-dbname.0 xdb&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt; Ahora el URL del JDBC es: &lt;span style="color: #274e13; font-size: x-small;"&gt;&lt;span&gt;jdbc:hsqldb:&lt;/span&gt;&lt;b&gt;httpd&lt;/b&gt;&lt;span&gt;://localhost/xdb&lt;/span&gt;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; Y todo funcionará igual.&lt;br /&gt; &lt;h4&gt;Hsqldb Servlet&lt;/h4&gt;Es el modo servlet, es decir, debe estar ejecutado en una aplicación web y crear un servlet desde web.xml&lt;br /&gt; &lt;pre
      style="background-color: #eeeeee; border: 1px dashed rgb(153, 153, 153); color: black; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; font-size: 12px; line-height: 14px; overflow: auto; padding: 5px; width: 100%;"&gt;&lt;code&gt; &amp;lt;servlet&gt; &amp;lt;servlet-name&gt;hsqldb-servlet&amp;lt;/servlet-name&gt; &amp;lt;servlet-class&gt;org.hsqldb.Servlet&amp;lt;/servlet-class&gt; &amp;lt;/servlet&gt; &amp;lt;servlet-mapping&gt;
      &amp;lt;servlet-name&gt;hsqldb-servlet&amp;lt;/servlet-name&gt; &amp;lt;url-pattern&gt;/hsqldb/*&amp;lt;/url-pattern&gt; &amp;lt;/servlet-mapping&gt; &lt;/code&gt;&lt;/pre&gt;No detallaré este modo ya que es mejor usar el modo servidor y no crear una aplicación web para crear un servidor.&lt;br /&gt; &lt;br /&gt; &lt;h4&gt;Modo aislado (stand-alone)&lt;/h4&gt;Este modo es uno de los más útiles cuando se hace aplicaciones portables. Además, este modo permite tener una aplicación con la base de datos
      incrustada a ella sin necesidad de instalar alguna biblioteca adicional.&lt;br /&gt; &lt;br /&gt; No requiere un servidor, simplemente al crear una conexión JDBC, ya se creó la base de datos.&lt;br /&gt; &lt;br /&gt; Es decir, en nuestra aplicación usaremos el mismo driver &lt;code&gt;org.hsqldb.jdbcDriver&lt;/code&gt; y el url que usaremos será &lt;span style="color: #274e13; font-size: small;"&gt;&lt;code&gt;jdbc:hsqldb:&lt;b style="color: blue;"&gt;file&lt;/b&gt;&lt;b&gt;&lt;span style="color:
      blue;"&gt;:&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue;"&gt;d:/hsqldb/clientes&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;.&lt;br /&gt; &lt;br /&gt; &lt;pre&gt;&lt;code&gt;Connection conn = DriverManager.getConnection("jdbc:hsqldb:file:d:/proys/lib/hsqldb/data/demo_db", "sa", ""); &lt;/code&gt;&lt;/pre&gt;&lt;br /&gt; La misma base de datos que hemos usado en el modo servidor, web server, es también usado en el modo stand-alone, y usando el mismo driver! Solo difiere el url.&lt;br /&gt; &lt;br
      /&gt; &lt;b&gt;Nota&lt;/b&gt;: solo se debe usar un modo a la vez, o es server, web server o stand-alone. Ya que necesita de bloqueos de archivo a nivel de sistema operativo.&lt;br /&gt; &lt;br /&gt; &lt;h4&gt;Modo memoria&lt;/h4&gt;Es un modo muy interesante para ser usado en aplicaciones demo, que no se necesita guardar la información en un archivo físico. Si no que se crea la base de datos en memoria mientras dura la conexión. Naturalmente se tendrían que crear las tablas inmediatamente después de
      establecer la conexión. &lt;br /&gt; &lt;br /&gt; Solo se debe cambiar el URL a: &lt;span style="color: #274e13; font-size: small;"&gt;&lt;code&gt;jdbc:hsqldb:&lt;span style="color: blue;"&gt;&lt;b&gt;mem&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;:&lt;/span&gt;&lt;/b&gt;&lt;span style="color: blue;"&gt;clientes&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;.&lt;br /&gt; &lt;br /&gt; y todo sigue igual&lt;br /&gt; &lt;br /&gt; &lt;h2&gt;Final parte 1&lt;/h2&gt;Vemos que este driver/rdbms
      puede ser usado en dos modos marcados: servidor (server) y aislado (stand-alone). También podemos usar la misma base de datos en ambos modos. Esto también nos puede permitir trabajar en dos modos: standalone para desarrollo, y server para producción.&lt;br /&gt; &lt;br /&gt; Se puede usar también en Hibernate, JPA, Spring, iBatis y cualquier framework que maneje base de datos. ya que cumple con las especificaciones de JDBC.&lt;br /&gt; &lt;hr /&gt;En la segunda parte hablaremos sobre Apache
      Derby.</description>
      <pubDate>Tue, 06 Jan 2009 23:17:18 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: Community-Contributed Docs Statistics</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-6739347232487455964</guid>
      <link>http://nb-community-docs.blogspot.com/2009/01/community-contributed-docs-statistics.html</link>
      <description>&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Statistics: Year 2007-08&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;Year &lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;2007&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Contributions- &lt;span style="font-weight: bold; color: rgb(204, 102, 0);"&gt;76&lt;/span&gt; (10 Months)&lt;br /&gt;Unique Authors- &lt;span style="font-weight: bold; color: rgb(204,
      102, 0);"&gt;55&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Analysis:&lt;/span&gt; This states that nearly every month, &lt;span style="font-weight: bold;"&gt;8 docs&lt;/span&gt; were contributed to our project, and there were &lt;span style="font-weight: bold;"&gt;5-6 authors&lt;/span&gt; joining the project every month..&lt;br /&gt;&lt;br /&gt;Year &lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;2008&lt;/span&gt;&lt;br
      /&gt;&lt;blockquote&gt;Contributions- &lt;span style="font-weight: bold; color: rgb(204, 102, 0);"&gt;203&lt;/span&gt; (12 Months)&lt;br /&gt;Unique Authors- &lt;span style="font-weight: bold; color: rgb(204, 102, 0);"&gt;60&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Analysis:&lt;/span&gt; This states that nearly every month, &lt;span style="font-weight: bold;"&gt;17 docs&lt;/span&gt; were contributed to our project, and there were nearly &lt;span
      style="font-weight: bold;"&gt;5 authors&lt;/span&gt; joining the project every month..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Comparative Study&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;From the above figures, one can infer that in the &lt;span style="font-weight: bold; color: rgb(204, 102, 0);"&gt;year 2008&lt;/span&gt;, there was &lt;span style="font-weight: bold; color: rgb(0, 153, 0);"&gt;62.56%&lt;/span&gt; &lt;span style="color: rgb(0, 153, 0); font-weight:
      bold;"&gt;increase&lt;/span&gt; in the &lt;a href="http://wiki.netbeans.org/NBCDArchive"&gt;no. of contributions&lt;/a&gt;.. However, the rate of &lt;a href="http://wiki.netbeans.org/NBCDHeroes"&gt;authors joining the project&lt;/a&gt; remained the same..&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;What Next?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is your project and you are the driving force, so if you have any
      suggestions for betterment of this project, let us know.. We hope to see the same enthusiasm again this year, wish you good luck and thank you for your contributions till date..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Happy New Year&lt;/span&gt; :)</description>
      <pubDate>Tue, 06 Jan 2009 13:35:36 +0000</pubDate>
    </item>
    <item>
      <title>Le Funes » NetBeans: Generando el SerialVersionUID de una clase desde NetBeans</title>
      <guid isPermaLink="false">http://lefunes.wordpress.com/2009/01/05/generando-el-serialversionuid-de-una-clase-desde-netbeans/</guid>
      <link>http://lefunes.wordpress.com/2009/01/05/generando-el-serialversionuid-de-una-clase-desde-netbeans/</link>
      <description>Anteriormente vimos como generar el serialVersionUID de una clase mediante el comando serialver. Ahora veremos como generar el mismo valor desde NetBeans IDE haciendo uso del plugin serialVersionUID generator for netbeans 6.5. Instalación Para instalarlo tenemos que seguir unos simples pasos: Descargar el plugin desde: http://plugins.netbeans.org/PluginPortal/faces/PluginDetailPage.jsp?pluginid=6887 (30,5Kb solamente) Nos vamos al dialogo de Plugins ...</description>
      <pubDate>Tue, 06 Jan 2009 00:15:02 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: NBCD Weekly Newsletter #20 (Spanish)</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-7747527610978054972</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/nbcd-weekly-newsletter-20spanish.html</link>
      <description>&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Últimos Documentos de la Comunidad&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;a href="http://wiki.netbeans.org/NBCDTipsAndTricks_ES"&gt;Trucos &amp;amp; Sugerencias&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
      style="font-style: italic;"&gt;Aristides Villarreal Bravo&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span&gt;Dec 24 | &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/TaT_AvbravoSwingXjXDatePicker"&gt;Cambiar el formato de fecha de jXDatePicker &lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://wiki.netbeans.org/NBCDTipsAndTricks"&gt;Trucos &amp;amp;
      Sugerencias&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Anton Epple&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Dec 24 | &lt;a href="http://wiki.netbeans.org/TaT_CreatePlatformVersions"&gt;Create your own Platform versions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dec 24 | &lt;a href="http://wiki.netbeans.org/TaT_FixNavigatorModeInRCPApp"&gt;Fix Navigator Mode in NetBeans Platform Applications&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dec 23 | &lt;a
      href="http://wiki.netbeans.org/TaT_NetBeansOnUSBStick"&gt;NetBeans on USB Stick&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://wiki.netbeans.org/NBCDTutorials"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Tutorial&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;Vaibhav Choudhary&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Dec 26 | &lt;a
      href="http://wiki.netbeans.org/GettingStartedWithJavaFX"&gt;Getting Started with JavaFX (NB 6.1)&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Noticias Especiales&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;Nuevo Contribuidor..&lt;/span&gt;&lt;br /&gt;&lt;a
      href="http://java4ever.blogspot.com/"&gt;&lt;span&gt;Vaibhav Choudhary&lt;/span&gt;&lt;/a&gt; &lt;span&gt;es el&lt;a style="font-weight: bold;" href="http://wiki.netbeans.org/NBCDHeroes"&gt; último contribuidor&lt;/a&gt; del Programa NetBeans Community Docs .&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Documentos JavaFX..&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;Hoy, James escribio en su &lt;a
      href="http://blogs.sun.com/branajam/entry/javafx_and_community_docs"&gt;blog&lt;/a&gt; acerca de la última contribución realizada por Vaibhav en &lt;a href="http://www.netbeans.org/features/javafx/index.html"&gt;Java FX&lt;/a&gt;, él escribio apasionadamente acerca de Java FX en su &lt;a href="http://java4ever.blogspot.com/"&gt;blogs&lt;/a&gt;. Deseando más documentos de él, así como de usted y a la comunidad de NetBeans. &lt;span style="font-weight: bold;"&gt;Rock
      on!!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Que es lo Nuevo..&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: normal;"&gt;Esta ese la última edición de nuestro&lt;/span&gt; &lt;a href="http://nb-community-docs.blogspot.com/2008/10/latest-updates.html"&gt;Weekly Newsletters&lt;/a&gt; y desde &lt;span style="font-weight: bold;"&gt;Enero de 2009&lt;/span&gt; &lt;span style="font-weight:
      normal;"&gt;en adelante, usted comenzara a recibir &lt;/span&gt;el &lt;span style="font-weight: bold;"&gt;Boletin Mensualmente&lt;/span&gt;...&lt;span&gt; Por lo tanto , hemos comenzado a &lt;a style="font-weight: bold;" href="http://wiki.netbeans.org/CommunityDocs#section-CommunityDocs-WhatSNewAndImportant"&gt;archivar arctículos de noticias seleccionados &lt;/a&gt;desde el boletin semanal publicados anteriormente al 19 y esta edición sera la última.&lt;/span&gt;&lt;/div&gt;&lt;span&gt;&lt;br
      /&gt;Esperando a todos ustedes han disfrutado de nuestra dosis semanal de últimas noticias de nuestro programa de documentos de comunidad NetBeans multilingüe y esperamos con interés con su cooperación en el año nuevo así.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold; font-size: 130%;"&gt;Saludos de temporada&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Esperando que
      todos ustedes hayan disfrutado nuestra dosis semanal de las últimas noticias desde nuestro&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/NBCommunityDocsML"&gt;Multilingual NetBeans Community Docs Program&lt;/a&gt;&lt;span&gt; y esperamos con interés su cooperación en el Nuevo Año también.&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left; font-weight: bold;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;span
      style="font-weight: normal;"&gt;Para finalizar, &lt;span style="font-weight: bold;"&gt;James Branam&lt;/span&gt; (NetBeans Community Docs Program Manager) ha escrito un &lt;a style="font-weight: bold;" href="http://nb-community-docs.blogspot.com/2008/12/year-in-review-blogs-wikis-evangelists.html"&gt;special post&lt;/a&gt; para este programa y la comunidadand en el éxito del proyecto y un año lleno de acontecimientos&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;, también discutiendo lo que se
      encuentra en el futuro..&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;E&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;sta edición ha sido presentada a usted por;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-size: 100%;"&gt;Aristides Villarreal Bravo&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br
      /&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;___________________________________________________________&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;Available Languages&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;: &lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;a href="http://feeds.feedburner.com/nbcdweekly"&gt;English&lt;/a&gt; , &lt;/span&gt;&lt;span
      style="font-size: 85%;"&gt;&lt;a href="http://feeds.feedburner.com/nbcdweekly_de"&gt;German&lt;/a&gt;, &lt;a href="http://feeds.feedburner.com/nbcdweekly_es"&gt;Spanish&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</description>
      <pubDate>Thu, 01 Jan 2009 13:05:33 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: Year In Review: Blogs, Wikis, Evangelists and More...</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-5784027013873780055</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/year-in-review-blogs-wikis-evangelists.html</link>
      <description>So, &lt;span style="font-weight: bold;"&gt;2 days left&lt;/span&gt; for &lt;span style="font-weight: bold;"&gt;New Year 2009&lt;/span&gt; and everyone's in party mood, so are we. However, we want to end this year with a special review done by none-other-than &lt;a href="http://blogs.sun.com/branajam/"&gt;&lt;span style="font-weight: bold;"&gt;James Branam&lt;/span&gt;&lt;/a&gt;, NetBeans Community Docs Program Manager.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span
      style="color: rgb(204, 0, 0); font-weight: bold; font-size: 130%;"&gt;Year 2008&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;2008&lt;/span&gt; was a very successful year for the &lt;span style="font-weight: bold;"&gt;NetBeans Community Docs &lt;/span&gt;program, and I am proud to say that all of you
      played a role in its success. I especially would like to thank Contribution Coordinator &lt;span style="font-weight: bold;"&gt;Varun Nischal&lt;/span&gt; for his &lt;span style="font-weight: bold;"&gt;tremendous achievements&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;innovative leadership&lt;/span&gt;, both of which were vital factors in the growth of the program.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight:
      bold;"&gt;2008&lt;/span&gt; also saw the appointment of Community Docs&lt;span style="font-weight: bold;"&gt; Evangelists&lt;/span&gt;, increased&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;multi-language &lt;/span&gt;documentation&lt;/span&gt;, the publication of a &lt;span style="font-weight: bold;"&gt;regular newsletter&lt;/span&gt;, and &lt;span style="font-weight: bold;"&gt;a blog&lt;/span&gt; dedicated to the program. &lt;span
      style="font-weight: bold;"&gt;2008&lt;/span&gt; was also a good year for the program in terms of recognition. It was &lt;span style="font-weight: bold;"&gt;highlighted in several articles&lt;/span&gt; and as part of &lt;span style="font-weight: bold;"&gt;NetBeans 10th Birthday&lt;/span&gt; celebration.&lt;/div&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold; font-size:
      130%;"&gt;Year 2009&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-weight: bold;"&gt;2009&lt;/span&gt; is nearly here, and the program will continue to evolve. We want to take the existing momentum and &lt;span style="font-weight: bold;"&gt;expand the program&lt;/span&gt; to reach a wider range of contributors. We also
      want to increase &lt;span style="font-weight: bold;"&gt;focusing on quality of contributions&lt;/span&gt; and adherence to &lt;span style="font-weight: bold;"&gt;existing style guides&lt;/span&gt;. Another challenge we look forward to engaging is creating a more &lt;span style="font-weight: bold;"&gt;purposeful documentation&lt;/span&gt; wish list and creating &lt;span style="font-weight: bold;"&gt;specialists for certain types&lt;/span&gt; of documentation.&lt;br /&gt;&lt;br /&gt;On &lt;span
      style="font-weight: bold;"&gt;April 1&lt;/span&gt;, a new Contribution Coordinator will take the reins: &lt;span style="font-weight: bold;"&gt;Kristian Rink&lt;/span&gt;. A long time participant in the program, &lt;span style="font-weight: bold;"&gt;Kristian&lt;/span&gt; will bring new ideas to the program, building on the &lt;span style="font-weight: bold;"&gt;strong foundation&lt;/span&gt; that &lt;span style="font-weight: bold;"&gt;Amit Kumar Saha&lt;/span&gt; and &lt;span style="font-weight:
      bold;"&gt;Varun Nischal&lt;/span&gt; have established.&lt;/div&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: right;"&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold; font-size: 130%;"&gt;Happy New Year&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br
      /&gt;&lt;/div&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;blockquote&gt;&lt;br /&gt;I look forward to the new year and the challenges it will certainly bring. More importantly, &lt;span style="font-weight: bold;"&gt;I am proud&lt;/span&gt; to be working with such fine people as you all are, and I wish you a &lt;span style="font-weight: bold;"&gt;happy, healthy,&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;successful
      2009&lt;/span&gt;.&lt;/blockquote&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-size: 130%;"&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;Thank You!&lt;/span&gt;&lt;/span&gt;</description>
      <pubDate>Mon, 29 Dec 2008 19:21:37 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: NBCD Weekly Newsletter #20</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-1227531802287156877</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/nbcd-weekly-newsletter-29-dec-2008.html</link>
      <description>&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Latest Community Docs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;a href="http://wiki.netbeans.org/NBCDTipsAndTricks_ES"&gt;Tips
      &amp;amp; Tricks&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Aristides Villarreal Bravo&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span&gt;Dec 24 | &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/TaT_AvbravoSwingXjXDatePicker"&gt;Cambiar el formato de fecha de jXDatePicker
      &lt;/a&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="http://wiki.netbeans.org/NBCDTipsAndTricks"&gt;Tips &amp;amp; Tricks&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Anton Epple&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Dec 24 | &lt;a href="http://wiki.netbeans.org/TaT_CreatePlatformVersions"&gt;Create your own Platform versions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dec 24
      | &lt;a href="http://wiki.netbeans.org/TaT_FixNavigatorModeInRCPApp"&gt;Fix Navigator Mode in NetBeans Platform Applications&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dec 23 | &lt;a href="http://wiki.netbeans.org/TaT_NetBeansOnUSBStick"&gt;NetBeans on USB Stick&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://wiki.netbeans.org/NBCDTutorials"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Tutorial&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span
      style="font-style: italic;"&gt;&lt;br /&gt;Vaibhav Choudhary&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Dec 26 | &lt;a href="http://wiki.netbeans.org/GettingStartedWithJavaFX"&gt;Getting Started with JavaFX (NB 6.1)&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Special News&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span
      style="font-weight: bold;"&gt;New Contributor..&lt;/span&gt;&lt;br /&gt;&lt;a href="http://java4ever.blogspot.com/"&gt;&lt;span&gt;Vaibhav Choudhary&lt;/span&gt;&lt;/a&gt; &lt;span&gt;is one of the &lt;a style="font-weight: bold;" href="http://wiki.netbeans.org/NBCDHeroes"&gt;latest contributor&lt;/a&gt; of the NetBeans Community Docs Program.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;JavaFX Docs..&lt;/span&gt;&lt;/span&gt;&lt;br
      /&gt;&lt;/div&gt;&lt;span&gt;Today, James &lt;a href="http://blogs.sun.com/branajam/entry/javafx_and_community_docs"&gt;blogged&lt;/a&gt; about the latest contribution made by Vaibhav on &lt;a href="http://www.netbeans.org/features/javafx/index.html"&gt;Java FX&lt;/a&gt;, he's blogging passionately about Java FX on his &lt;a href="http://java4ever.blogspot.com/"&gt;blogs&lt;/a&gt;. Looking forward to more docs from him, as well as from you and NetBeans community. &lt;span style="font-weight:
      bold;"&gt;Rock on!!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What's New..&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: normal;"&gt;This is the last edition of our&lt;/span&gt; &lt;a href="http://nb-community-docs.blogspot.com/2008/10/latest-updates.html"&gt;Weekly Newsletters&lt;/a&gt; &lt;span style="font-weight: normal;"&gt;and from&lt;/span&gt; &lt;span style="font-weight:
      bold;"&gt;January 2009&lt;/span&gt; &lt;span style="font-weight: normal;"&gt;onwards, &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;you would start receiving&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;Monthly Newsletters&lt;/span&gt;...&lt;span&gt; So, we had started &lt;a style="font-weight: bold;" href="http://wiki.netbeans.org/CommunityDocs#section-CommunityDocs-WhatSNewAndImportant"&gt;archiving selected news items&lt;/a&gt; from the previously published 19 weekly newsletters and
      this edition would provide the last one.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0); font-weight: bold; font-size: 130%;"&gt;Season Greetings&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Hoping you all have enjoyed our&lt;/span&gt;&lt;span style="font-weight: normal;"&gt; weekly dose of latest news &lt;/span&gt;&lt;span style="font-weight:
      normal;"&gt;from our&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/NBCommunityDocsML"&gt;Multilingual NetBeans Community Docs Program&lt;/a&gt;&lt;span&gt; &lt;/span&gt;&lt;span style="font-weight: normal;"&gt;and we look forward to your cooperation in the&lt;/span&gt; &lt;span style="font-weight: normal;"&gt;New Year&lt;/span&gt; as well.&lt;br /&gt;&lt;div style="text-align: left; font-weight: bold;"&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align:
      left;"&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;To end, &lt;span style="font-weight: bold;"&gt;James Branam&lt;/span&gt; (NetBeans Community Docs Program Manager) has written a &lt;a style="font-weight: bold;" href="http://nb-community-docs.blogspot.com/2008/12/year-in-review-blogs-wikis-evangelists.html"&gt;special post&lt;/a&gt; for this program and the community on the project's successful &amp;amp; eventful year&lt;/span&gt;&lt;span style="font-weight: normal;"&gt;, also discussing
      what lies in the future..&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;The final edition was brought to you by;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Varun Nischal&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;___________________________________________________________&lt;br
      /&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;Available Languages&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;: &lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;a href="http://feeds.feedburner.com/nbcdweekly"&gt;English&lt;/a&gt; , &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="http://feeds.feedburner.com/nbcdweekly_de"&gt;German&lt;/a&gt;, &lt;a
      href="http://feeds.feedburner.com/nbcdweekly_es"&gt;Spanish&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 29 Dec 2008 19:08:24 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: Season Greetings</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-1979621205891410289</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/season-greetings.html</link>
      <description>On behalf of the NetBeans Community Docs Team, I would like to wish &lt;a href="http://nb-community-docs.blogspot.com/2008/10/heroes.html"&gt;each one of you&lt;/a&gt; who has been part of this successful community-driven project, NetBeans Community Docs Program...&lt;span style="font-size: 130%;"&gt;&lt;b&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 102, 0);"&gt;Merry Christmas&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;, as well as want to tell you that on &lt;span
      style="font-weight: bold;"&gt;29th December, 2008&lt;/span&gt;. We would be publishing &lt;span style="font-weight: bold;"&gt;20th&lt;/span&gt; and the last edition of &lt;a href="http://nb-community-docs.blogspot.com/2008/10/latest-updates.html"&gt;Weekly Newsletter&lt;/a&gt;, as thereafter you would receive &lt;span style="font-weight: bold;"&gt;Monthly Newsletters&lt;/span&gt;...&lt;br /&gt;&lt;br /&gt;So, make sure you don't miss the &lt;span style="font-weight: bold;"&gt;special
      edition&lt;/span&gt; next week...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;Stay Tuned for more...&lt;/span&gt;</description>
      <pubDate>Thu, 25 Dec 2008 12:53:43 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: 275 Docs and counting...</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-4962826569966361930</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/275-docs-and-counting.html</link>
      <description>Hey,&lt;br /&gt;&lt;br /&gt;We crossed an important milestone, as we await a major one! We have now more than &lt;span style="color: rgb(204, 0, 0); font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;275 community-contributed docs&lt;/span&gt;&lt;/span&gt; as per &lt;span style="font-weight: bold;"&gt;Dec 24, 2008&lt;/span&gt;...We are now just &lt;span style="font-weight: bold; color: rgb(255, 102, 0); font-size: 130%;"&gt;23 away&lt;/span&gt; from reaching a bigger milestone:
      &lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold; color: rgb(204, 102, 0);"&gt;300 docs&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once again, thanks all for putting in your efforts...&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0); font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;We are rocking!&lt;/span&gt;&lt;/span&gt;</description>
      <pubDate>Tue, 23 Dec 2008 19:20:50 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: Nov 2008 | NetBeans Dream Team</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-5200590515058076311</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/nov-2008-docs-by-netbeans-dream-team.html</link>
      <description>&lt;a href="http://wiki.netbeans.org/NetBeansDreamTeam"&gt;&lt;img src="http://3.bp.blogspot.com/_P2QpMF2HEZ4/SK0v5XuC_0I/AAAAAAAAAZo/BVzlmYS-IDE/s320/125x125_transparent.gif" alt="" style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5236894604367953730" /&gt;&lt;/a&gt;Now, we shall see contributions done by &lt;a style="font-weight: bold;" href="http://wiki.netbeans.org/NetBeansDreamTeam"&gt;NetBeans Dream Team Members&lt;/a&gt; during the
      month of &lt;a href="http://wiki.netbeans.org/NBCDNov08"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;November, 2008&lt;/span&gt;&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;When was the last time they contributed?&lt;/span&gt;&lt;br /&gt;Two months back, in &lt;a
      href="http://nb-community-docs.blogspot.com/2008/12/oct-2008-docs-by-netbeans-dream-team.html"&gt;&lt;span style="font-weight: bold;"&gt;Oct '08&lt;/span&gt;&lt;/a&gt;! They contributed &lt;span style="font-weight: bold;"&gt;Tutorials&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;Tips &amp;amp; Tricks&lt;/span&gt;.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size:
      130%;"&gt;Tutorials&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style="font-weight: bold;" href="http://wiki.netbeans.org/NBCDTutorials_ES"&gt;&lt;span style="font-style: italic;"&gt;Spanish&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Aristides Villarreal Bravo&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Nov 04&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a
      href="http://wiki.netbeans.org/PrimerosPasosConDocumentosNetBeans"&gt;Primeros pasos con Documentos NetBeans&lt;/a&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;a href="http://wiki.netbeans.org/NBCDTutorials_DE"&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;German&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Kristian Rink&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span
      style="font-weight: bold;"&gt;Nov 06&lt;br /&gt;&lt;/span&gt;&lt;a href="http://wiki.netbeans.org/WikiSchnellStart_DE"&gt;Schnellstart mit der NetBeans-Dokumentation&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Developer FAQ&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Tom
      Wheeler&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Nov 10&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://wiki.netbeans.org/DevFaqSourceTreeModuleDescriptions"&gt;There sure are a lot of modules in the source tree. What are they for?&lt;/a&gt; &lt;span&gt;&lt;span&gt;&lt;br
      /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Thank you, &lt;a href="http://avbravo.blogspot.com/"&gt;&lt;span style="font-weight: bold;"&gt;Aristides&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://dm.zimmer428.net/"&gt;&lt;span style="font-weight: bold;"&gt;Kristian&lt;/span&gt;&lt;/a&gt; and &lt;a style="font-weight: bold;" href="http://tomwheeler.com/"&gt;Tom&lt;/a&gt;!&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;</description>
      <pubDate>Tue, 23 Dec 2008 04:01:33 +0000</pubDate>
    </item>
    <item>
      <title>diesil's java: Woodstock migra a ICEFaces</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5074673367662676974.post-8726936781228183665</guid>
      <link>http://diesil-java.blogspot.com/2008/12/woodstock-migra-icefaces.html</link>
      <description>El equipo de Netbeans tiene el agrado de anunciar la relación entre las comunidades de NetBeans y ICEFaces para facilitar la migración de los actuales usuarios de Woodstock. Con la última versión del plugin ICEface para NetBeans, puede agregar el frameworj ICEFaces a un proyecto existen y comenzar a desarrollar páginas ICEface con las aún existentes en woodstock.&lt;br /&gt; &lt;br /&gt; Los recursos han sido creados para ayudar la migración incluyendo una guía de migración detallada y
      una matriz de comparación&#160; entre los componentes de Woodstock y ICEfaces. Este solo es el inicio de la relación entre las comunidades de NetBeans y ICEfaces. Adicionamente las herramientas para migración serán planeadas para las siguientes versiones de ICEfaces. &lt;br /&gt; &lt;br /&gt; &lt;b&gt;Recursos:&lt;/b&gt;&lt;br /&gt; &lt;br /&gt; &lt;ul&gt;&lt;li&gt;Aprender más en la &lt;a href="http://www.icefaces.org/main/product/woodstock-migration.iface"&gt;Página de migración de Woodstock a
      ICEfaces&lt;/a&gt; &lt;/li&gt; &lt;li&gt;Descargar el&#160; &lt;a href="http://www.icefaces.org/main/downloads/os-downloads.iface?category=NetBeans"&gt;componente de ICEfaces&lt;/a&gt; deICEfaces.org, o desde el &lt;b&gt;Centro de actualización de NetBeans &lt;/b&gt;desde Herramientas -&gt;Complementos desde el IDE NetBeans. &lt;/li&gt; &lt;li&gt;Leer la &lt;a href="http://www.netbeans.org/kb/docs/web/icefaces-migration-1.html"&gt;guía de portabilidad de Woodstock a ICEfaces &lt;/a&gt; &lt;/li&gt;
      &lt;li&gt;Leer la &lt;a href="http://www.icefaces.org/main/resources/woodstock-icefaces-mapping.iface"&gt;Matriz de migración de los componentes de Woodstock a ICEfaces &lt;/a&gt; &lt;/li&gt; &lt;li&gt;Unirse al &lt;a href="http://www.icefaces.org/JForum/forums/list.page"&gt;Foro de migración de Woodstock a ICEfaces &lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;</description>
      <pubDate>Mon, 22 Dec 2008 19:48:00 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: NBCD Weekly Newsletter #19 (Spanish)</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-310153576748036131</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/nbcd-weekly-newsletter-19spanish.html</link>
      <description>&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Ú&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;ltimos Documentos de la Comunidad&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;a href="http://wiki.netbeans.org/NBCDTutorials"&gt;Tutoriales&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Samuel
      Tan&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Dec 19 | &lt;a href="http://wiki.netbeans.org/NetBeans61HibernateJPA"&gt;NetBeans 6.1 Hibernate JPA&lt;/a&gt; &lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;Hendro Steven&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span&gt;Dec 19 | &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/SimpleJPAApplicationWithNetbeans"&gt;Simple JPA Application with Netbeans 6.0/6.1&lt;/a&gt;&lt;br
      /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;Hubert A. Klein Ikkink&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;Dec 16 | &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/GroovyScriptingUsingNB65"&gt;Create Groovy 1.5.7 script in NetBeans 6.5 &lt;/a&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;&lt;br /&gt;Noticias
      Especiales&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Nuevo Contribuidor..&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;Hendro Steven, Samuel Tan son los&lt;span&gt; &lt;a style="font-weight: bold;" href="http://wiki.netbeans.org/NBCDHeroes"&gt;últimos contribuidores&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;
      &lt;/span&gt;&lt;/span&gt;del Programa NetBeans Community Docs.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div id="result_box" dir="ltr"&gt; ... Tú eres sólo un mensaje de correo electrónico fuera, ¿qué decir?&lt;/div&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Documentos Python ..&lt;br /&gt;&lt;/span&gt;Bien, todos conocen acerca de &lt;a style="font-weight: bold;" href="http://www.netbeans.org/features/python/index.html"&gt;Python EA Release&lt;/a&gt; con NetBeans 6.5, acerca de
      cómo contribuyen los documentos basados en el soporte Python ...Estás a sólo un correo electrónico, ¿qué dice?&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;Libro de Trucos y Sugerencias..&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;Este &lt;a style="font-weight: bold;" href="http://www.netbeans.org/kb/articles/netbeans-tips-and-tricks-book.html"&gt;libro&lt;/a&gt; se centra en las recetas específicas que pueden hacerle más productivo en sus tareas rutinarias de
      desarrollo y proporciona respuestas a sus preguntas más apremiantes.&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Dream Team Docs&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;a href="http://nb-community-docs.blogspot.com/2008/12/nov-2008-docs-by-netbeans-dream-team.html"&gt;&lt;span
      style="font-weight: bold;"&gt;Nov 2008&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Aristides&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;, Kristian&lt;/span&gt; &lt;/span&gt;contribuyeron con &lt;span style="font-weight: bold;"&gt;tutoriales&lt;/span&gt;, mientras &lt;span style="font-weight: bold;"&gt;Tom&lt;/span&gt; documento otro &lt;span
      style="font-weight: bold;"&gt;developer faq&lt;/span&gt;, en el mes de Noviembre.&lt;br /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Esta edición ha sido presentada a usted por;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-size: 100%;"&gt;Aristides Villarreal Bravo&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;___________________________________________________________&lt;br
      /&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;Available Languages&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;: &lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;a href="http://feeds.feedburner.com/nbcdweekly"&gt;English&lt;/a&gt; , &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="http://feeds.feedburner.com/nbcdweekly_de"&gt;German&lt;/a&gt;, &lt;a
      href="http://feeds.feedburner.com/nbcdweekly_es"&gt;Spanish&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 22 Dec 2008 17:19:44 +0000</pubDate>
    </item>
    <item>
      <title>Avbravo: T-shirt NB 10 años</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-11140295.post-4098225010205940563</guid>
      <link>http://avbravo.blogspot.com/2008/12/t-shirt-nb-10-aos.html</link>
      <description>Hace unos dias me llego el T-shirt conmemorativo de los 10 años de NetBeans.&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_fWhXbpnpdnc/SU_D9oAMDLI/AAAAAAAAB5M/LYRyo_4wZ7I/s320/netbeans10.png" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_fWhXbpnpdnc/SU_D8yb70eI/AAAAAAAAB5E/BkQAGoOXpIc/s320/nb1002.png" /&gt;</description>
      <pubDate>Mon, 22 Dec 2008 16:45:53 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: NBCD Weekly Newsletter #19</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-4332114694914345847</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/nbcd-weekly-newsletter-22-dec-2008.html</link>
      <description>&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Latest Community Docs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;a href="http://wiki.netbeans.org/NBCDTutorials"&gt;Tutorials&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Samuel Tan&lt;/span&gt;&lt;a
      href="http://wiki.netbeans.org/GroovyScriptingUsingNB65"&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;Dec 19 | &lt;a href="http://wiki.netbeans.org/NetBeans61HibernateJPA"&gt;NetBeans 6.1 Hibernate JPA&lt;/a&gt; &lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;Hendro Steven&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span&gt;Dec 19 | &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/SimpleJPAApplicationWithNetbeans"&gt;Simple JPA
      Application with Netbeans 6.0/6.1&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;Hubert A. Klein Ikkink&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;Dec 16 | &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/GroovyScriptingUsingNB65"&gt;Create Groovy 1.5.7 script in NetBeans 6.5 &lt;/a&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);
      font-size: 130%;"&gt;&lt;br /&gt;Special News&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;New Contributor..&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;Hendro Steven, Samuel Tan &lt;span&gt; are the &lt;a style="font-weight: bold;" href="http://wiki.netbeans.org/NBCDHeroes"&gt;latest contributors&lt;/a&gt; of the NetBeans Community Docs Program.&lt;br /&gt;&lt;br /&gt;&lt;span
      style="font-weight: bold;"&gt;Python Docs..&lt;br /&gt;&lt;/span&gt;Well, you all know about &lt;a style="font-weight: bold;" href="http://www.netbeans.org/features/python/index.html"&gt;Python EA Release&lt;/a&gt; with NetBeans 6.5, how about contributing docs based on the Python support...You're just an email away, what say?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tips &amp;amp; Tricks Book..&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;This &lt;a style="font-weight: bold;"
      href="http://www.netbeans.org/kb/articles/netbeans-tips-and-tricks-book.html"&gt;book&lt;/a&gt; focuses on specific recipes that can make you more productive in your routine development tasks and provides answers to your most pressing questions.&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Dream Team Docs&lt;/span&gt;&lt;span style="text-decoration: underline;"&gt;&lt;span style="font-weight:
      bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;a href="http://nb-community-docs.blogspot.com/2008/12/nov-2008-docs-by-netbeans-dream-team.html"&gt;&lt;span style="font-weight: bold;"&gt;Nov 2008&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;span style="font-weight:
      bold;"&gt;Aristides&lt;/span&gt;&lt;span&gt;&lt;span style="font-weight: bold;"&gt;, Kristian&lt;/span&gt; &lt;/span&gt;contributed &lt;span style="font-weight: bold;"&gt;tutorials&lt;/span&gt;, while &lt;span style="font-weight: bold;"&gt;Tom&lt;/span&gt; documented yet another &lt;span style="font-weight: bold;"&gt;developer faq&lt;/span&gt;, in the month of November.&lt;br /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight:
      bold;"&gt;This edition was brought to you by;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Varun Nischal&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;___________________________________________________________&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;Available Languages&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;: &lt;/span&gt;&lt;span
      style="font-size: 85%;"&gt; &lt;a href="http://feeds.feedburner.com/nbcdweekly"&gt;English&lt;/a&gt; , &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="http://feeds.feedburner.com/nbcdweekly_de"&gt;German&lt;/a&gt;, &lt;a href="http://feeds.feedburner.com/nbcdweekly_es"&gt;Spanish&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</description>
      <pubDate>Mon, 22 Dec 2008 13:46:08 +0000</pubDate>
    </item>
    <item>
      <title>Avbravo: NetBeans 7.0 Milestone 1</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-11140295.post-5111697798669957542</guid>
      <link>http://avbravo.blogspot.com/2008/12/netbeans-70-milestone-1.html</link>
      <description>Ya esta disponible &lt;a href="http://bits.netbeans.org/netbeans/7.0/m1/"&gt;NetBeans 7.0 Milestone 1&lt;/a&gt;, sin duda una versión muy previa del IDE, pero sin lugar a dudas permite conocer algunas de las nuevas caracteristicas.&lt;br /&gt;Estas invitado a &lt;a href="http://bits.netbeans.org/netbeans/7.0/m1/"&gt;descargarla&lt;/a&gt;, e iniciar tus pruebas&lt;br /&gt;&lt;br /&gt;Aqui tenemos el&lt;span style="color: rgb(153, 0, 0);"&gt; RoadMap&lt;/span&gt;&lt;br /&gt;&lt;img
      src="http://2.bp.blogspot.com/_fWhXbpnpdnc/SUxXcbD-95I/AAAAAAAAB4s/dyL2HxRQmAU/s320/roadmap.gif" /&gt;</description>
      <pubDate>Sat, 20 Dec 2008 02:26:12 +0000</pubDate>
    </item>
    <item>
      <title>Avbravo: Woodstock migra a ICEface</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-11140295.post-7112653182492789529</guid>
      <link>http://avbravo.blogspot.com/2008/12/woodstock-migra-iceface.html</link>
      <description>&lt;img src="http://2.bp.blogspot.com/_fWhXbpnpdnc/SUmZd90PzzI/AAAAAAAAB4c/WvysPWoXDQA/s320/icefaces02.png" /&gt;&lt;br /&gt;Desde hace unos años, cuando se libero Java Studio Creator, el desarrollo de aplicaciones JSF poseia un diseñador visual, algunos recordaran los problemas iniciales de JSC, consumo excesivo de recursos, y algunos problemas con los componentes, esto fue rapidamente solucionado, luego llego la migración a NetBeans, mediante Visual Web Pack, un paquete de componentes
      que dotaba al IDE de un diseñador Visual para JSF, al cabo de un tiempo y de muchas mejoras, contamos con los componentes Woodstock, que ofrecian un conjunto de componentes muy utiles para nuestras aplicaciones.&lt;br /&gt;Recientemente el proyecto Woodstock, no seguira , y por lo tanto existen muy buenos recursos para continuar con el desarrollo de aplicaciones Web, una de ellas es ICEFaces.&lt;br /&gt;La comunidad NetBeans esta colaborando con la comunidad ICEFaces para facilitar la migración de
      Woodstock a ICEFaces.&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;a href="http://www.icefaces.org/main/product/woodstock-migration.iface"&gt;Página de migración de Woodstock a ICEfaces&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Descargar el &lt;a href="http://www.icefaces.org/main/downloads/os-downloads.iface?category=NetBeans"&gt;Pluging ICEfaces&lt;/a&gt; desde ICEfaces.org, o desde &lt;b&gt;NetBeans Update Center&lt;/b&gt; seleccionando&lt;i&gt; Tools -&gt; Plugins&lt;/i&gt;
      desde el IDE NetBeans&lt;/li&gt;&lt;li&gt;Lea &lt;a href="http://www.netbeans.org/kb/docs/web/icefaces-migration-1.html"&gt;Guía de Woodstock a ICEfaces &lt;/a&gt;&lt;/li&gt;&lt;li&gt;Lea &lt;a href="http://www.icefaces.org/main/resources/woodstock-icefaces-mapping.iface"&gt;Matriz de migración de componentes Woodstock a ICEfaces &lt;/a&gt; &lt;/li&gt;&lt;li&gt;Unase a &lt;a href="http://www.icefaces.org/JForum/forums/list.page"&gt;Foro de migración de Woodstock a
      ICEfaces&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_fWhXbpnpdnc/SUmY2GmBZOI/AAAAAAAAB4U/4flRbZn81oQ/s320/icefaces01.png" /&gt;</description>
      <pubDate>Thu, 18 Dec 2008 00:38:49 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: NBCD Weekly Newsletter #18 (Spanish)</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-1634069597210395538</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/nbcd-weekly-newsletter-18spanish.html</link>
      <description>&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Últimos Documentos de la Comunidad&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;a href="http://wiki.netbeans.org/NBCDScreencasts"&gt;Screencast&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Prakan Puvibunsuk&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;&lt;span&gt;Dec 09 | &lt;/span&gt;&lt;/span&gt;&lt;a
      href="http://www.thainetbeans.com/sample/pagination.htm"&gt;Pagination in SAF&lt;/a&gt; &lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;a href="http://wiki.netbeans.org/NBCDTipsAndTricks"&gt;Trucos y Sugerencias&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;Varun Nischal&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span&gt;Dec 08
      |&lt;/span&gt; &lt;a href="http://wiki.netbeans.org/TaT_UsingGSFByMakingFriends"&gt;Want to use GSF API's? &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;Anton Epple&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span&gt;Dec 08 | &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/TaT_FixExternalWebBrowserInRCPApp"&gt;Fix External Web Browser in NetBeans Platform Application&lt;/a&gt;&lt;br
      /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;Michel Graciano&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;Dec 08 | &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/TaT_SolvingEditorGarbledText"&gt;Solving editor garbled text&lt;/a&gt; &lt;/blockquote&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;&lt;br /&gt;Noticias Especiales&lt;/span&gt;&lt;br
      /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Archivos..&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;a href="http://wiki.netbeans.org/NBCDNov08"&gt;Documentos de Noviembre&lt;/a&gt; estan archivados, además ahora puedes encontrar mensualmente quien es "&lt;a href="http://wiki.netbeans.org/NBCDArchive"&gt;Topmost Contributor&lt;/a&gt;" visitando el archivo wiki de cada mes separadamente.&lt;/span&gt;&lt;span&gt; Actualmente , sólo esta visible los meses del 2008, se esta trabajando para el 2007
      ...&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Blogs Deliciosos...&lt;/span&gt;&lt;span&gt;&lt;br /&gt;Se ha añadido un widget en el panel derecho de nuestro blog (debajo de la sección "&lt;span style="font-weight: bold;"&gt;The Gang&lt;/span&gt;" ) que muestra los blogs &lt;a href="http://delicious.com/commdocs"&gt;marcados&lt;/a&gt; ocasionalmente con su estatus...Puede ver las últimas 5 entradas..&lt;/span&gt;
      Háganos saber ¿qué sientes?&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Primer Aniversario..&lt;br /&gt;&lt;/span&gt;El miembro de la comunidad, &lt;span style="font-weight: bold;"&gt;Varun Nischal&lt;/span&gt; celebró su cumpleaños el domingo 14 de Diciembre. &lt;a href="http://nb-community-docs.blogspot.com/2008/12/day-i-began-writing-docs.html"&gt;El dia que realmente empezo a escribir documentos&lt;/a&gt; el año pasado.Por lo tanto, es su primer aniversario con este proyecto.
      Por lo tanto, su su primer aniversario con este proyecto. Las Personas interesadas pueden dar una lectura a su blog...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Blog da Docs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta sección incluye las entradas de los blogs contribuidos por los contribuidores superiores , en nuestras ediciones del boletín semanal (&lt;a style="font-weight: bold;"
      href="http://nb-community-docs.blogspot.com/2008/10/nbcd-weekly-newsletter-27-oct-2008.html"&gt;#11&lt;/a&gt;, &lt;span&gt;&lt;a style="font-weight: bold;" href="http://nb-community-docs.blogspot.com/2008/11/nbcd-weekly-newsletter-17-nov-2008.html"&gt;#14&lt;/a&gt;, &lt;a href="http://nb-community-docs.blogspot.com/2008/11/nbcd-weekly-newsletter-24-nov-2008.html"&gt;&lt;span style="font-weight: bold;"&gt;#15&lt;/span&gt;&lt;/a&gt;, &lt;a
      href="http://nb-community-docs.blogspot.com/2008/12/nbcd-weekly-newsletter-02-dec-2008.html"&gt;&lt;span style="font-weight: bold;"&gt;#16&lt;/span&gt;&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://avbravo.blogspot.com/"&gt;Aristides Villarreal Bravo&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;#11&lt;/span&gt; | &lt;a href="http://nb-community-docs.blogspot.com/2008/12/cvs-and-localization.html"&gt;CVS and Localization&lt;/a&gt;&lt;br /&gt;&lt;br
      /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;a href="http://www.mrhaki.com/"&gt;Hubert A. Klein Ikkink&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;#14, #15, #16&lt;/span&gt; | &lt;a href="http://nb-community-docs.blogspot.com/2008/12/docs-13-and-newsletters-14-15-16.html"&gt;Tips and Tricks, Hat-trick Hero&lt;/a&gt;&lt;/blockquote&gt;&lt;span&gt; &lt;/span&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;div style="text-align:
      center;"&gt;&lt;span style="font-weight: bold;"&gt;Esta edición ha sido presentada a usted por;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-size: 100%;"&gt;Aristides Villarreal Bravo&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;___________________________________________________________&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;Available
      Languages&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;: &lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;a href="http://feeds.feedburner.com/nbcdweekly"&gt;English&lt;/a&gt; , &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;a href="http://feeds.feedburner.com/nbcdweekly_de"&gt;German&lt;/a&gt;, &lt;a href="http://feeds.feedburner.com/nbcdweekly_es"&gt;Spanish&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</description>
      <pubDate>Wed, 17 Dec 2008 12:19:06 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: NBCD Weekly Newsletter #18</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-7681324118506176408</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/nbcd-weekly-newsletter-15-dec-2008.html</link>
      <description>&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Latest Community Docs&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;a href="http://wiki.netbeans.org/NBCDScreencasts"&gt;Screencast&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Prakan Puvibunsuk&lt;br
      /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;&lt;span&gt;Dec 09 | &lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.thainetbeans.com/sample/pagination.htm"&gt;Pagination in SAF&lt;/a&gt; &lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;a href="http://wiki.netbeans.org/NBCDTipsAndTricks"&gt;Tips and Tricks&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span
      style="font-style: italic;"&gt;Varun Nischal&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span&gt;Dec 08 |&lt;/span&gt; &lt;a href="http://wiki.netbeans.org/TaT_UsingGSFByMakingFriends"&gt;Want to use GSF API's? &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;Anton Epple&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt; &lt;blockquote&gt;&lt;span&gt;Dec 08 |
      &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/TaT_FixExternalWebBrowserInRCPApp"&gt;Fix External Web Browser in NetBeans Platform Application&lt;/a&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic;"&gt;Michel Graciano&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;Dec 08 | &lt;/span&gt;&lt;a href="http://wiki.netbeans.org/TaT_SolvingEditorGarbledText"&gt;Solving editor garbled
      text&lt;/a&gt; &lt;/blockquote&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;&lt;br /&gt;Special News&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Archives..&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;a href="http://wiki.netbeans.org/NBCDNov08"&gt;November Docs&lt;/a&gt; are now archived, also you can now find out who's the monthly "&lt;a href="http://wiki.netbeans.org/NBCDArchive"&gt;Topmost Contributor&lt;/a&gt;" by visiting wiki
      archive of each month separately.&lt;/span&gt;&lt;span&gt; Currently, visible only in 2008 months, work for 2007 going on...&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;Delicious Blogs...&lt;/span&gt;&lt;span&gt;&lt;br /&gt;We have added a widget on right-panel of our blog (below "&lt;span style="font-weight: bold;"&gt;The Gang&lt;/span&gt;" section) that shows the blogs we &lt;a href="http://delicious.com/commdocs"&gt;bookmark&lt;/a&gt; occasionally along with their
      status...You would always see the latest 5 entries..Let us know what do you feel?&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;First Anniversary..&lt;br /&gt;&lt;/span&gt;Community members, &lt;span style="font-weight: bold;"&gt;Varun Nischal&lt;/span&gt; celebrated his birthday on Sunday, Dec 14th. &lt;a href="http://nb-community-docs.blogspot.com/2008/12/day-i-began-writing-docs.html"&gt;The day he actually began writing docs&lt;/a&gt; last year. So, its his first
      anniversary with this project. Interested people can give his blog a read..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0); font-size: 130%;"&gt;Blog da Docs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This section features the blog entries of the docs contributed by the topmost contributor(s) featured, in our &lt;span&gt;weekly newsletter editions&lt;/span&gt; (&lt;a style="font-weight: bold;"
      href="http://nb-community-docs.blogspot.com/2008/10/nbcd-weekly-newsletter-27-oct-2008.html"&gt;#11&lt;/a&gt;, &lt;span&gt;&lt;a style="font-weight: bold;" href="http://nb-community-docs.blogspot.com/2008/11/nbcd-weekly-newsletter-17-nov-2008.html"&gt;#14&lt;/a&gt;, &lt;a href="http://nb-community-docs.blogspot.com/2008/11/nbcd-weekly-newsletter-24-nov-2008.html"&gt;&lt;span style="font-weight: bold;"&gt;#15&lt;/span&gt;&lt;/a&gt;, &lt;a
      href="http://nb-community-docs.blogspot.com/2008/12/nbcd-weekly-newsletter-02-dec-2008.html"&gt;&lt;span style="font-weight: bold;"&gt;#16&lt;/span&gt;&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://avbravo.blogspot.com/"&gt;Aristides Villarreal Bravo&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;#11&lt;/span&gt; | &lt;a href="http://nb-community-docs.blogspot.com/2008/12/cvs-and-localization.html"&gt;CVS and
      Localization&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;a href="http://www.mrhaki.com/"&gt;Hubert A. Klein Ikkink&lt;/a&gt;&lt;a href="http://www.mrhaki.com/"&gt;&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;#14, #15, #16&lt;/span&gt; | &lt;a href="http://nb-community-docs.blogspot.com/2008/12/docs-13-and-newsletters-14-15-16.html"&gt;Tips and Tricks, Hat-trick Hero&lt;span
      style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/blockquote&gt;&lt;span&gt; &lt;/span&gt;&lt;blockquote&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/blockquote&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;This edition was brought to you by;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Varun Nischal&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br
      /&gt;___________________________________________________________&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt; &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-weight: bold;"&gt;Available Languages&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;: &lt;/span&gt;&lt;span style="font-size: 85%;"&gt; &lt;a href="http://feeds.feedburner.com/nbcdweekly"&gt;English&lt;/a&gt; , &lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;a
      href="http://feeds.feedburner.com/nbcdweekly_de"&gt;German&lt;/a&gt;, &lt;a href="http://feeds.feedburner.com/nbcdweekly_es"&gt;Spanish&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;</description>
      <pubDate>Tue, 16 Dec 2008 18:28:39 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: Special: Docs (13) and Newsletters (14, 15, 16)</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-6878060136473278135</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/docs-13-and-newsletters-14-15-16.html</link>
      <description>13, 14, 15, 16... No, I am not counting anything, I am just figuring out the mystery behind this sequence of numbers..&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mrhaki.com/"&gt;&lt;span style="font-weight: bold;"&gt;Hubert A. Klein Ikkink&lt;/span&gt;&lt;/a&gt;&lt;span&gt; has recently scored a hat-trick (Three Consecutive Weeks) of being recognized as Topmost Contributor of the weekly newsletter edition (&lt;a style="font-weight: bold;"
      href="http://nb-community-docs.blogspot.com/2008/11/nbcd-weekly-newsletter-17-nov-2008.html"&gt;#14&lt;/a&gt;, &lt;a href="http://nb-community-docs.blogspot.com/2008/11/nbcd-weekly-newsletter-24-nov-2008.html"&gt;&lt;span style="font-weight: bold;"&gt;#15&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://nb-community-docs.blogspot.com/2008/12/nbcd-weekly-newsletter-02-dec-2008.html"&gt;&lt;span style="font-weight: bold;"&gt;#16&lt;/span&gt;&lt;/a&gt;) and that too within the same month. He has mainly
      focused on contributing &lt;a href="http://wiki.netbeans.org/NBCDTipsAndTricks"&gt;&lt;span style="font-weight: bold;"&gt;Tips and Tricks&lt;/span&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold; color: rgb(204, 0, 0);"&gt;Incredible!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Reason being, he has contributed &lt;span style="font-weight: bold;"&gt;13 docs&lt;/span&gt; in the month of &lt;a
      href="http://wiki.netbeans.org/NBCDNov08"&gt;November, 2008&lt;/a&gt;. Coincidentally, we were publishing &lt;span style="font-weight: bold;"&gt;#14&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;#15&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;#16&lt;/span&gt; editions during that time.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;So, here's a list of the docs, he wrote;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-size:
      130%;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Tips and Tricks&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Nov 21&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-weight: bold;"&gt;&lt;a href="http://wiki.netbeans.org/TaT_UsingNetBeansHTTPMonitorWithMavenAndJetty"&gt;Using NetBeans HTTP monitor with Jetty and Maven &lt;/a&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Nov 16&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-weight:
      bold;"&gt;&lt;a href="http://wiki.netbeans.org/TaT_UseFixCodeNB"&gt;Use fix code to correct your code&lt;/a&gt;&lt;a href="http://wiki.netbeans.org/TaT_NBReferenceCard"&gt; &lt;/a&gt;&lt;/blockquote&gt; &lt;span style="font-weight: bold;"&gt;Nov 06&lt;/span&gt;&lt;br /&gt;&lt;blockquote style="font-weight: bold;"&gt;&lt;a href="http://wiki.netbeans.org/TaT_GettingMavenSourcesNB"&gt;Getting sources from Maven repositories&lt;/a&gt;&lt;a
      href="http://nb-community-docs.blogspot.com/2008/11/Getting%20sources%20from%20Maven%20repositories"&gt; &lt;/a&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Nov 05 &lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a style="font-weight: bold;" href="http://wiki.netbeans.org/TaT_NBWithNewerSubversionClient"&gt;NetBeans with newer Subversion client&lt;/a&gt; &lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Nov 04&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;a style="font-weight:
      bold;" href="http://wiki.netbeans.org/TaT_DebugCocoon22InNB"&gt;Debugging Cocoon 2.2 in NetBeans&lt;/a&gt; &lt;/blockquote&gt;&lt;br /&gt;There are many more contributed in the past as well, contributed in previous 2-3 months! For more info, refer the &lt;a href="http://wiki.netbeans.org/NBCDArchive"&gt;archives&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 102, 0);"&gt;Thanks, Hubert!&lt;/span&gt;</description>
      <pubDate>Sun, 14 Dec 2008 11:30:00 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: CVS and Localization</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-7737835135441325278</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/cvs-and-localization.html</link>
      <description>&lt;a href="http://avbravo.blogspot.com/"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;Aristides Villarreal Bravo&lt;/a&gt; (NetBeans Dream Team Member) was featured in our &lt;a href="http://nb-community-docs.blogspot.com/2008/10/nbcd-weekly-newsletter-27-oct-2008.html"&gt;Weekly Newsletter Edition #11&lt;/a&gt;, as a Topmost Contributor. He contributed &lt;span style="font-weight: bold;"&gt;2 articles &lt;/span&gt;based on CVS and&lt;span style="font-weight:
      bold;"&gt; 1 tutorial&lt;/span&gt; based on Localization Plugin. Lets take a look;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-size: 130%;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Articles&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Oct 27 | &lt;span style="font-weight: bold;"&gt;Usar CVS&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Para los que aun no han utilizado el soporte que brinda NetBeans para CVS, presento una guia bien rápida de como utilizarlo.&lt;br /&gt;&lt;br
      /&gt;&lt;a href="http://wiki.netbeans.org/SpanishTranslationUsarCVS"&gt;Read more...&lt;/a&gt;&lt;/blockquote&gt;&lt;a href="http://wiki.netbeans.org/SpanishTranslationUsarCVS"&gt;&lt;/a&gt;&lt;br /&gt;Oct 24 | &lt;span style="font-weight: bold;"&gt;Como integrar sus archivos en NetBeans CVS&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Estas son las intrucciones de como puedes hacer commit de sus archivos a los repositorios de NetBeans CVS utilizando el IDE NetBeans. Si tienes acceso de esritura al
      servidor NetBeans CVS para translatedfiles, puedes integrar estos archivos libremente pero por favor note que usted necesita validar sus archivos antes de la integración.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.netbeans.org/SpanishTransaltionCVSComointegrar_es"&gt;Read more...&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-size: 130%;"&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Tutorial&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Oct 20 |
      &lt;span style="font-weight: bold;"&gt;Plugins de Localizaciones&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;NetBeans, se traduce en diversos idiomas, se ha creado un plugin para que puedas tener el IDE en cualquiera de los idiomas soportados.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://wiki.netbeans.org/AvbravotutorialLocalizaciones"&gt;Read more...&lt;/a&gt;&lt;/blockquote&gt;&lt;a href="http://wiki.netbeans.org/AvbravotutorialLocalizaciones"&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;
      color: rgb(255, 102, 0);"&gt;Thanks, Aristides!&lt;/span&gt;</description>
      <pubDate>Sun, 14 Dec 2008 08:57:55 +0000</pubDate>
    </item>
    <item>
      <title>NetBeans Community Docs Blog: The day I began writing docs...</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-4439135070202734584.post-2109068771076705311</guid>
      <link>http://nb-community-docs.blogspot.com/2008/12/day-i-began-writing-docs.html</link>
      <description>&lt;p style="text-align: left;"&gt;&lt;strong&gt;Namastey,&lt;/strong&gt;&lt;/p&gt; &lt;p style="text-align: left;"&gt;You have all seen me blogging for more than a year now. Some people call me &lt;strong&gt;crazy&lt;/strong&gt;, &lt;strong&gt;avid&lt;/strong&gt;, &lt;strong&gt;passionate&lt;/strong&gt; and/or &lt;strong&gt;highly active&lt;/strong&gt; (&lt;strong&gt;hyper-active&lt;/strong&gt;) blogger. Then, there were some who didn’t even bother reading my blogs OR commented
      &lt;strong&gt;negatively&lt;/strong&gt;.&lt;/p&gt; &lt;p style="text-align: left;"&gt;&lt;strong&gt;I never mind&lt;/strong&gt; as I blog because I had developed an interest in it which made me passionate for blogging. Too, it helped me improve my writing skills, as last year I was new to blogging.&lt;/p&gt;&lt;p style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Continue&lt;/span&gt; &lt;/span&gt;&lt;a style="font-weight: bold;"
      href="http://nbguru.wordpress.com/2008/12/14/the-day-i-began-writing-docs/"&gt;Reading&lt;/a&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 14 Dec 2008 08:06:52 +0000</pubDate>
    </item>
    <item>
      <title>diesil's java: Parche 1 para NetBeans 6.5</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5074673367662676974.post-990311746026947621</guid>
      <link>http://diesil-java.blogspot.com/2008/12/parche-1-para-netbeans-65.html</link>
      <description>Acaba de lanzarse el parche 1 para NetBeans 6.5&lt;br /&gt; Este parche corrige errores encontrados en los módulos Auto Update Services, Ant, BlueJ Project Support, C/C++, Database, GUI Builder, GlassFish v3 Prelude, GlassFish v3 Prelude - JRuby, IDE Platform, Java, Java EE, Web Applications, Java Profiler, NetBeans 6.5, PHP, Platform, RESTful Web Services, Ruby and Rails, SaaS Services Support y UML.&lt;br /&gt; &lt;br /&gt; Para descargarlo, utilice la opción "Ayuda &gt; Comprobar
      actualizaciones" desde el IDE NetBeans 6.5.&lt;br /&gt; &lt;br /&gt; Mas información sobre este parche, se podrá encontrar aquí: &lt;a href="http://wiki.netbeans.org/NetBeans6.5PatchesInfo"&gt;http://wiki.netbeans.org/NetBeans6.5PatchesInfo&lt;/a&gt;</description>
      <pubDate>Fri, 12 Dec 2008 00:06:48 +0000</pubDate>
    </item>
    <item>
      <title>diesil's java: AOP Programación Orientada a Aspectos con Spring 2.5 y NetBeans 6.1</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5074673367662676974.post-102664336192923723</guid>
      <link>http://diesil-java.blogspot.com/2008/05/aop-programacin-orientada-aspectos-con.html</link>
      <description>Mucho se ha oído o leído sobre la Programación Orientada a Aspectos (AOP), pero ¿qué es realmente? Simplemente, es una ayuda para los programadores que permite reducir código de rutinas que siempre deberían ejecutarse y no se puede usar la herencia. Además, cada lógica de negocio solo tendrá lógica de negocio, y no código adicional que son repetitivas y no son parte del negocio. Por ejemplo, un método que se encargue de una transferencia de dinero, debería ser tan simple como esto&lt;br
      /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); line-height: 14px; width: 100%;" size="12px" face="Andale Mono,Lucida Console,Monaco,fixed,monospace"&gt;&lt;code&gt;void transfer(Account fromAccount, Account toAccount, int amount){&lt;br /&gt;if (fromAccount.getBalance() &amp;lt; class="br0"&gt;) {&lt;br /&gt;throw new InsufficientFundsException();&lt;br /&gt;}&lt;br /&gt;&lt;br
      /&gt;fromAccount.withdraw(amount);&lt;br /&gt;toAccount.deposit(amount);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pero realmente, se vuelve así:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); line-height: 14px; width: 100%;" size="12px" face="Andale Mono,Lucida Console,Monaco,fixed,monospace"&gt;&lt;code&gt;void transfer(Account fromAccount, Account
      toAccount, int amount) throws Exception {&lt;br /&gt;if (!getCurrentUser().canPerform(OP_TRANSFER)) {&lt;br /&gt;throw new SecurityException();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;if (amount &amp;lt; 0) {&lt;br /&gt;throw new NegativeTransferException();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Transaction tx = database.newTransaction();&lt;br /&gt;try {&lt;br /&gt;&lt;br /&gt;if (fromAccount.getBalance() &amp;lt; amount) {&lt;br /&gt;throw new InsufficientFundsException();&lt;br /&gt;}&lt;br
      /&gt;fromAccount.withdraw(amount);&lt;br /&gt;toAccount.deposit(amount);&lt;br /&gt;&lt;br /&gt;tx.commit();&lt;br /&gt;systemLog.logOperation(OP_TRANSFER, fromAccount, toAccount, amount);&lt;br /&gt;}&lt;br /&gt;catch(Exception e) {&lt;br /&gt;tx.rollback();&lt;br /&gt;throw e;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Donde se incorpora rutinas de registro (log), inicio de transacciones de la base de datos, validación de cantidades, además de
      posibles excepciones que se puedan lanzar.&lt;br /&gt;&lt;br /&gt;Y si hacemos un método que se encargue únicamente del depósito, el resultado sería similar. Aquí es donde entra los Aspectos.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Algunos conceptos&lt;/h2&gt; A continuación, mencionaré algunos conceptos utilizados en la Programación Orientada a Aspectos&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Aspect&lt;/b&gt; (&lt;i&gt;Aspecto&lt;/i&gt;) es la funcionalidad que se cruza a lo largo de la aplicación
      (cross-cutting) que se va a implementar de forma modular y separada del resto del sistema. El ejemplo más común y simple de un aspecto es el logging (registro de sucesos) dentro del sistema, ya que necesariamente afecta a todas las partes del sistema que generan un suceso.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Jointpoint&lt;/b&gt; (&lt;i&gt;Punto de Cruce&lt;/i&gt;) es un punto de ejecución dentro del sistema donde un aspecto puede ser conectado, como una llamada a un método, el lanzamiento de una excepción o
      la modificación de un campo. El código del aspecto será insertado en el flujo de ejecución de la aplicación para añadir su funcionalidad.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Advice&lt;/b&gt; (&lt;i&gt;Consejo&lt;/i&gt;) es la implementación del aspecto, es decir, contiene el código que implementa la nueva funcionalidad. Se insertan en la aplicación en los Puntos de Cruce.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Pointcut&lt;/b&gt; (&lt;i&gt;Puntos de Corte&lt;/i&gt;) define los Consejos que se aplicarán a cada Punto de
      Cruce. Se especifica mediante Expresiones Regulares o mediante patrones de nombres (de clases, métodos o campos), e incluso dinámicamente en tiempo de ejecución según el valor de ciertos parámetros.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Introduction&lt;/b&gt; (&lt;i&gt;Introducción&lt;/i&gt;) permite añadir métodos o atributos a clases ya existentes. Un ejemplo en el que resultaría útil es la creación de un Consejo de Auditoría que mantenga la fecha de la última modificación de un objeto, mediante una
      variable y un método setUltimaModificacion(fecha), que podrían ser introducidos en todas las clases (o sólo en algunas) para proporcionarlas esta nueva funcionalidad.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Target&lt;/b&gt; (&lt;i&gt;Destinatario&lt;/i&gt;) es la clase aconsejada, la clase que es objeto de un consejo. Sin AOP, esta clase debería contener su lógica, además de la lógica del aspecto.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Proxy&lt;/b&gt; (&lt;i&gt;Resultante&lt;/i&gt;) es el objeto creado después de aplicar
      el Consejo al Objeto Destinatario. El resto de la aplicación únicamente tendrá que soportar al Objeto Destinatario (pre-AOP) y no al Objeto Resultante (post-AOP).&lt;/li&gt;&lt;li&gt;&lt;b&gt;Weaving&lt;/b&gt; es el proceso de aplicar Aspectos a los Objetos Destinatarios para crear los nuevos Objetos Resultantes en los especificados Puntos de Cruce. Este proceso puede ocurrir a lo largo del ciclo de vida del Objeto Destinatario: &lt;ul&gt;&lt;li&gt;Aspectos en Tiempo de Compilación, que necesita un
      compilador especial.&lt;/li&gt;&lt;li&gt;Aspectos en Tiempo de Carga, los Aspectos se implementan cuando el Objeto Destinatario es cargado. Requiere un ClassLoader especial.&lt;/li&gt;&lt;li&gt;Aspectos en Tiempo de Ejecución.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h2&gt;Comenzando AOP con Spring 2.5&lt;/h2&gt;Antes de comenzar, debemos recordar (o conocer) lo que es el Patrón de Diseño Proxy. Para resumir toda la definición, un proxy es un objeto que luce como otro objeto pero
      añade funcionalidad especial de forma transparente. En Spring, una interfaz puede ser usado tras un proxy.&lt;br /&gt;&lt;h3&gt;Proxy&lt;/h3&gt; En NB 6.1, creemos un proyecto simple (Java &gt; Java Application) llamado SpringProxy. Luego, agregamos la biblioteca &lt;span style="font-weight: bold;"&gt;Spring Framework 2.5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://4.bp.blogspot.com/_BQk94ojgkDY/SETS7V3AE7I/AAAAAAAAA6k/H7_uGEakfuk/s1600-h/Pantallazo-Project+Properties+-+SpringProxy.png"&gt;&lt;img src="http://4.bp.blogspot.com/_BQk94ojgkDY/SETS7V3AE7I/AAAAAAAAA6k/H7_uGEakfuk/s320/Pantallazo-Project+Properties+-+SpringProxy.png" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5207518986069087154" /&gt;&lt;/a&gt;Luego, crearemos la interfaz Conversacion, que tendrá un método
      llamado &lt;span style="font-style: italic;"&gt;iniciarSesion()&lt;/span&gt;.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;package springproxy;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public interface Conversacion {&lt;br /&gt;&lt;br /&gt;void iniciarSesion();&lt;br
      /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Y tenemos la siguiente implementación de la Interfaz&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;package springproxy;&lt;br /&gt;&lt;br /&gt;public class ChatInterno implements Conversacion{&lt;br
      /&gt;&lt;br /&gt;private String servidor;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void setServidor(String servidor) {&lt;br /&gt; this.servidor = servidor;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void iniciarSesion() {&lt;br /&gt; System.out.println("["+this.getClass().getName()+":"+this.toString()+"]");&lt;br /&gt; System.out.println("Iniciando sesion del servidor "+servidor);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Ahora, crearemos un archivo .xml
      para Spring. Entramos a File &gt; New File, y seleccionamos Other | Spring XML Configuration File.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_BQk94ojgkDY/SETVCBafJII/AAAAAAAAA6s/FScdVkOyBPE/s1600-h/Pantallazo-New+File.png"&gt;&lt;img src="http://2.bp.blogspot.com/_BQk94ojgkDY/SETVCBafJII/AAAAAAAAA6s/FScdVkOyBPE/s320/Pantallazo-New+File.png" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5207521299863118978"
      /&gt;&lt;/a&gt;Lo llamaremos "aop-spring", y lo colocaremos en la carpeta &lt;span style="font-style: italic;"&gt;src&lt;/span&gt; del proyecto.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_BQk94ojgkDY/SETVZIfzdlI/AAAAAAAAA60/fgBPQVuCjPg/s1600-h/Pantallazo-New+Spring+XML+Configuration+File.png"&gt;&lt;img src="http://2.bp.blogspot.com/_BQk94ojgkDY/SETVZIfzdlI/AAAAAAAAA60/fgBPQVuCjPg/s320/Pantallazo-New+Spring+XML+Configuration+File.png" alt="" style="margin: 0px auto 10px; display: block;
      text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5207521696901461586" /&gt;&lt;/a&gt;Clic en "Next".&lt;br /&gt;No seleccionamos nada en la última página, y hacemos clic en "Finish".&lt;br /&gt;Notar que solo se está llamando al esquema "beans".&lt;br /&gt;&lt;br /&gt;Escribimos el siguiente código en el archivo aop-spring.xml&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida
      Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;beans xmlns="http://www.springframework.org/schema/beans"&lt;br /&gt; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt; xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"&gt;&lt;br
      /&gt;&amp;lt;bean id="chatInterno" class="springproxy.ChatInterno"&gt;&lt;br /&gt; &amp;lt;property name="servidor" value="Servidor Spring Framework"/&gt;&lt;br /&gt;&amp;lt;/bean&gt;&lt;br /&gt;&amp;lt;bean id="chatProxy" class="org.springframework.aop.framework.ProxyFactoryBean"&gt;&lt;br /&gt; &amp;lt;property name="proxyInterfaces" value="springproxy.Conversacion" /&gt;&lt;br /&gt; &amp;lt;property name="target" ref="chatInterno"/&gt;&lt;br /&gt;&amp;lt;/bean&gt;&lt;br
      /&gt;&amp;lt;/beans&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Notemos cómo NB 6.1 nos ayuda a escribir el código, llenando los atributos, asignando variables de beans ya creados, etc.&lt;br /&gt;&lt;br /&gt;Ahora, escribamos el siguiente código de nuestra clase Main.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238);
      font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt; public static void main(String[] args) {&lt;br /&gt; ApplicationContext ctx = new ClassPathXmlApplicationContext("aop-spring.xml");&lt;br /&gt; Conversacion chat = (Conversacion) ctx.getBean("chatInterno");&lt;br /&gt; chat.iniciarSesion();&lt;br /&gt; System.out.println("corrido de " + chat.getClass());&lt;br /&gt; System.out.println();&lt;br /&gt;&lt;br /&gt; Conversacion proxy = (Conversacion) ctx.getBean("chatProxy");&lt;br /&gt;
      proxy.iniciarSesion();&lt;br /&gt; System.out.println("corrido de " + proxy.getClass());&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Ejecutemos el proyecto y veamos la salida:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width:
      100%;"&gt;&lt;code&gt;[springproxy.ChatInterno:springproxy.ChatInterno@633e5e]&lt;br /&gt;Iniciando sesion del servidor Servidor Spring Framework&lt;br /&gt;corrido de class springproxy.ChatInterno&lt;br /&gt;&lt;br /&gt;[springproxy.ChatInterno:springproxy.ChatInterno@633e5e]&lt;br /&gt;Iniciando sesion del servidor Servidor Spring Framework&lt;br /&gt;corrido de class $Proxy0&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Vemos que se trata del mismo objeto (vemos el ID &lt;span
      style="font-weight: bold;"&gt;ChatInterno@633e5e&lt;/span&gt; en ambos casos) pero realmente son dos clases diferentes. El primero es de la clase &lt;span style="font-style: italic;"&gt;springproxy.ChatInterno&lt;/span&gt; y el segundo es de &lt;span style="font-style: italic;"&gt;$Proxy0&lt;/span&gt;.&lt;br /&gt;El Proxy contiene al objeto de ChatInterno, y cuando se ejecuta los métodos del Proxy, llama al método del objeto contenido.&lt;br /&gt;El objeto de ChatInterno no sabrá de donde fue
      llamado. El Proxy podría realizar un código antes o después de llamar al método del objeto ChatInterno. Esto es lo que queremos hacer al usar AOP.&lt;br /&gt;&lt;h3&gt;Un simple Advice&lt;/h3&gt; Lo que haremos ahora es que se ejecute un código antes de iniciar la sesión del chat. Para ello crearemos la clase ChatLogger que &lt;span style="font-style: italic;"&gt;implementará&lt;/span&gt; la interfaz &lt;span style="font-style: italic;"&gt;MethodBeforeAdvice&lt;/span&gt;.&lt;br /&gt;&lt;pre
      style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;package springproxy;&lt;br /&gt;&lt;br /&gt;import java.lang.reflect.Method;&lt;br /&gt;import java.util.Date;&lt;br /&gt;import org.springframework.aop.MethodBeforeAdvice;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class ChatLogger
      implements MethodBeforeAdvice{&lt;br /&gt;&lt;br /&gt; public void before(Method metodo, Object[] args, Object objetivo) throws Throwable {&lt;br /&gt; System.out.println("["+(new Date())+"] "+metodo.getName()+" llamado desde "+objetivo);&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Ahora, lo instanciemos en el Spring&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida
      Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;bean id="chatLogger" class="springproxy.ChatLogger" /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;y lo agreguemos en la lista de interceptores&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0);
      background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;bean id="chatProxy" class="org.springframework.aop.framework.ProxyFactoryBean"&gt;&lt;br /&gt; &amp;lt;property name="proxyInterfaces" value="springproxy.Conversacion" /&gt;&lt;br /&gt; &amp;lt;property name="target" ref="chatInterno"/&gt;&lt;br /&gt; &lt;span style="font-weight: bold;"&gt; &amp;lt;property name="interceptorNames"&gt;&lt;br /&gt; &amp;lt;list&gt;&lt;br /&gt;
      &amp;lt;value&gt;chatLogger&amp;lt;/value&gt;&lt;br /&gt; &amp;lt;/list&gt;&lt;br /&gt; &amp;lt;/property&gt;&lt;/span&gt;&lt;br /&gt; &amp;lt;/bean&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Ejecutemos el proyecto, y veremos lo que pasa:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px;
      width: 100%;"&gt;&lt;code&gt;[springproxy.ChatInterno:springproxy.ChatInterno@17494c8]&lt;br /&gt;Iniciando sesion del servidor Servidor Spring Framework&lt;br /&gt;corrido de class springproxy.ChatInterno&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;[Tue Jun 03 00:52:34 PET 2008] iniciarSesion llamado desde springproxy.ChatInterno@17494c8&lt;/span&gt;&lt;br /&gt;[springproxy.ChatInterno:springproxy.ChatInterno@17494c8]&lt;br /&gt;Iniciando sesion del servidor Servidor Spring
      Framework&lt;br /&gt;corrido de class $Proxy0&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;AOP usando proxy. Como ves, no hemos modificado nada de la clase ChatInterno.&lt;br /&gt;En la clase ChatLogger podemos agregar el código que deseemos, sin modificar la funcionalidad de nuestra lógica de negocio.&lt;br /&gt;&lt;br /&gt;El proyecto de este post se encuentra aquí: &lt;a
      href="http://diesil-java.googlecode.com/files/SpringProxy.tar.gz"&gt;http://diesil-java.googlecode.com/files/SpringProxy.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;... esta historia continuará...&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Bibliografía&lt;br /&gt;&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectos"&gt;Wikipedia: Programación Orientada a Aspectos&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a
      href="http://www.javaranch.com/journal/2008/04/Journal200804.jsp#a2"&gt;JavaRanch Journal: April 2008&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</description>
      <pubDate>Thu, 11 Dec 2008 13:10:41 +0000</pubDate>
    </item>
    <item>
      <title>diesil's java: AJAX con DWR en NetBeans 6.1</title>
      <guid isPermaLink="false">tag:blogger.com,1999:blog-5074673367662676974.post-840357528473633896</guid>
      <link>http://diesil-java.blogspot.com/2008/06/ajax-con-dwr-en-netbeans-61.html</link>
      <description>Una de las bibliotecas más fáciles que he visto para programar en AJAX es el Direct Web Remoting - DWR.&lt;br /&gt;En este &lt;span style="font-style: italic;"&gt;post &lt;/span&gt;veremos algunas de sus características que nos ayudará a tener aplicaciones enriquecidas con &lt;span style="font-style: italic;"&gt;ajax&lt;/span&gt;. Para ello usaremos:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="http://download.netbeans.org/netbeans/6.1/final/"&gt;NetBeans
      6.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://getahead.org/dwr"&gt;DWR&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Si deseas saber lo que es AJAX, puedes revisar mi anterior &lt;span style="font-style: italic;"&gt;post &lt;/span&gt;llamado (justamente) &lt;a href="http://diesil-java.blogspot.com/2006/04/ajax.html"&gt;AJAX&lt;/a&gt;.&lt;br /&gt;&lt;h2&gt;Instalando DWR en NetBeans&lt;/h2&gt; La biblioteca DWR consta únicamente de un archivo .jar. Este lo podemos descargar de aquí: &lt;a
      href="http://getahead.org/dwr/download"&gt;http://getahead.org/dwr/download.&lt;/a&gt; A la fecha de este &lt;span style="font-style: italic;"&gt;post&lt;/span&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;la versión del DWR es la 2.0.4.&lt;br /&gt;&lt;br /&gt;Guardaremos el archivo en una carpeta que será destinada para las bibliotecas de los proyectos. Yo, en Windows, lo guardo en d:\proys\lib\DWR, y en Linux lo guardo en ~/proys/lib&lt;br /&gt;&lt;br /&gt;Adicionalmente DWR necesita de
      la biblioteca commons-logging. Esta la puedes descargar de aquí: &lt;a href="http://commons.apache.org/downloads/download_logging.cgi"&gt;http://commons.apache.org/downloads/download_logging.cgi&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Descomprimamos el archivo descargado de commons-logging en la misma carpeta lib.&lt;br /&gt;&lt;br /&gt;Entramos a la opción Tools &gt; Libraries:&lt;br /&gt;&lt;br /&gt;&lt;a
      href="http://2.bp.blogspot.com/_BQk94ojgkDY/SFKym7NWzuI/AAAAAAAAA8g/JlKkVu3x0UE/s1600-h/Pantallazo-Library+Manager.png"&gt;&lt;img src="http://2.bp.blogspot.com/_BQk94ojgkDY/SFKym7NWzuI/AAAAAAAAA8g/JlKkVu3x0UE/s320/Pantallazo-Library+Manager.png" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5211424100619570914" /&gt;&lt;/a&gt;&lt;br /&gt;Hacemos clic en "New Library" para crear una nueva biblioteca, y llamaremos DWR.&lt;br
      /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_BQk94ojgkDY/SFKym384XOI/AAAAAAAAA8o/FHfeiZG49Iw/s1600-h/Pantallazo-New+Library.png"&gt;&lt;img src="http://4.bp.blogspot.com/_BQk94ojgkDY/SFKym384XOI/AAAAAAAAA8o/FHfeiZG49Iw/s320/Pantallazo-New+Library.png" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5211424099745160418" /&gt;&lt;/a&gt;Clic en OK. Ahora agregamos los archivos .jar correspondientes. Hacemos clic en Add
      Jar/Folder y seleccionamos el archivo commons-logging-1.1.1.jar y dwr.jar&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_BQk94ojgkDY/SFKynJbq9jI/AAAAAAAAA8w/RNEYNIsvi0c/s1600-h/Pantallazo-Library+Manager-1.png"&gt;&lt;img src="http://3.bp.blogspot.com/_BQk94ojgkDY/SFKynJbq9jI/AAAAAAAAA8w/RNEYNIsvi0c/s320/Pantallazo-Library+Manager-1.png" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0"
      id="BLOGGER_PHOTO_ID_5211424104437708338" /&gt;&lt;/a&gt;Clic en OK parar cerrar la ventana.&lt;br /&gt;&lt;h2&gt;El proyecto Web&lt;/h2&gt; Ahora crearemos un aplicación web, que no usará ningún framework. Será una aplicación totalmente "simple". La llamaremos DwrSamples.&lt;br /&gt;&lt;br /&gt;En las propiedades del proyecto web creado, entramos a sus propiedades haciendo clic derecho sobre el ícono del proyecto, y seleccionamos"Properties". En esta ventana seleccionamos del margen izquierdo la
      categoría "Libraries". Luego agregamos la biblioteca DWR haciendo clic en el botón "Add Library". Después de esto, deberá lucir así:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_BQk94ojgkDY/SFKynMsHbuI/AAAAAAAAA84/2uSJaoEZv4U/s1600-h/Pantallazo-Project+Properties+-+DwrSamples.png"&gt;&lt;img src="http://4.bp.blogspot.com/_BQk94ojgkDY/SFKynMsHbuI/AAAAAAAAA84/2uSJaoEZv4U/s320/Pantallazo-Project+Properties+-+DwrSamples.png" alt="" style="margin: 0px auto 10px; display: block; text-align:
      center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5211424105311989474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Crearemos una clase a la que llamaremos &lt;span style="font-weight: bold;"&gt;Calculadora&lt;/span&gt; y estará en el paquete &lt;span style="font-weight: bold;"&gt;logica&lt;/span&gt;. Esta clase, básicamente, tendrá los métodos que realizarán las operaciones de manera asíncrona.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow:
      auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;package logica;&lt;br /&gt;public class Calculadora {&lt;br /&gt;&lt;br /&gt;public int sumar(int a, int b) {&lt;br /&gt;return a + b;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int restar(int a, int b) {&lt;br /&gt;return a - b;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br
      /&gt;Ahora, necesitamos que esta clase sea leíble por DWR, por lo que usaremos anotaciones para "publicar" la clase como objeto javascript, pero sólo publicaremos el método sumar() para que sea ajax. Usaremos la anotación de DWR @RemoteProxy para la clase Calculadora, y @RemoteMethod para el método sumar(). Deberá lucir así:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color:
      rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;package logica;&lt;br /&gt;&lt;br /&gt;import org.directwebremoting.annotations.RemoteMethod;&lt;br /&gt;import org.directwebremoting.annotations.RemoteProxy;&lt;br /&gt;&lt;br /&gt;@RemoteProxy&lt;br /&gt;public class Calculadora {&lt;br /&gt;&lt;br /&gt;@RemoteMethod&lt;br /&gt;public int sumar(int a, int b) {&lt;br /&gt;return a + b;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public int
      restar(int a, int b) {&lt;br /&gt;return a - b;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Ahora, abrirmos el archivo web.xml (podemos presionar Shift + Alt + O para abrir el buscador de archivos y escribir web para que nos seleccione el archivo que estamos buscando). En la barra superior hacemos clic en el botón "Servlets" para visualizar los servlets de nuestra aplicación. Una vez allí, hacemos clic en el botón "Add Servlet".&lt;br /&gt;El
      nuevo servlet que crearemos, le pondremos el nombre "DWR", la clase del servlet será "org.directwebremoting.servlet.DwrServlet", y el patrón URL será "/dwr/*", es decir, este serlet responderá las peticiones en la dirección "/dwr/". Deberá lucir esta ventana así:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_BQk94ojgkDY/SFKyngoc-UI/AAAAAAAAA9A/OrFGMKvxY3k/s1600-h/Pantallazo-Add+Servlet.png"&gt;&lt;img
      src="http://3.bp.blogspot.com/_BQk94ojgkDY/SFKyngoc-UI/AAAAAAAAA9A/OrFGMKvxY3k/s320/Pantallazo-Add+Servlet.png" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5211424110665333058" /&gt;&lt;/a&gt;&lt;br /&gt;Hacemos clic en "OK". Luego, agregaremos un parámetro de inicio. Hacemos clic en el botón "Add.." de la sección "Initialization Parameter".&lt;br /&gt;&lt;br /&gt;El parámetro de inicio lo llamaremos classes, y tendrá una
      clase llamada &lt;span style="font-weight: bold;"&gt;logica.Calculadora&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_BQk94ojgkDY/SFKy0bjPyyI/AAAAAAAAA9I/8NybxaxJK8Y/s1600-h/Pantallazo-Add+Initialization+Parameter.png"&gt;&lt;img src="http://1.bp.blogspot.com/_BQk94ojgkDY/SFKy0bjPyyI/AAAAAAAAA9I/8NybxaxJK8Y/s320/Pantallazo-Add+Initialization+Parameter.png" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0"
      id="BLOGGER_PHOTO_ID_5211424332639619874" /&gt;&lt;/a&gt;Clic en OK, y deberá lucir así la ventana de los servlets.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_BQk94ojgkDY/SFKy0kLITzI/AAAAAAAAA9Q/DzVnpmhm_Dw/s1600-h/Pantallazo-DwrSamples+-+NetBeans+IDE+6.1.png"&gt;&lt;img src="http://3.bp.blogspot.com/_BQk94ojgkDY/SFKy0kLITzI/AAAAAAAAA9Q/DzVnpmhm_Dw/s320/Pantallazo-DwrSamples+-+NetBeans+IDE+6.1.png" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor:
      pointer;" border="0" id="BLOGGER_PHOTO_ID_5211424334954385202" /&gt;&lt;/a&gt;O si lo prefieres en xml, el archivo web.xml deberá lucir así.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_BQk94ojgkDY/SFKy0wYIYmI/AAAAAAAAA9Y/RYAan4Ej2Og/s1600-h/Pantallazo-DwrSamples+-+NetBeans+IDE+6.1-1.png"&gt;&lt;img src="http://4.bp.blogspot.com/_BQk94ojgkDY/SFKy0wYIYmI/AAAAAAAAA9Y/RYAan4Ej2Og/s320/Pantallazo-DwrSamples+-+NetBeans+IDE+6.1-1.png" alt="" style="margin: 0px auto 10px; display: block; text-align:
      center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5211424338230141538" /&gt;&lt;/a&gt;Ahora, crearemos nuestra interfaz. Abrimos el archivo index.jsp, le pondremos un formulario:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;
      &amp;lt;h2&gt;Calculadora&amp;lt;/h2&gt;&lt;br /&gt;&amp;lt;form action=""&gt;&lt;br /&gt;Valor 1: &amp;lt;input type="text" name="valor1" id="valor1"/&gt;&amp;lt;br/&gt;&lt;br /&gt;Valor 2: &amp;lt;input type="text" name="valor2" id="valor2"/&gt;&amp;lt;br/&gt;&lt;br /&gt;&amp;lt;input type="button" value="Sumar" onclick="sumar()"/&gt;&amp;lt;br/&gt;&lt;br /&gt;Resultado:&amp;lt;div id="suma"&gt;&amp;lt;/div&gt;&lt;br /&gt;&amp;lt;/form&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Nota que el
      botón no es un submit, sino un tipo "button". Tampoco olvidar los atributos id de los tags. Estos nos ayudará a identificar un tag en toda la página.&lt;br /&gt;&lt;br /&gt;Ahora, necesitamos importar las bibliotecas de DWR. Para ello, agregamos las siguientes lineas en la cabecera del jsp.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238,
      238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt; &amp;lt;script type="text/javascript" src="&amp;lt;%=pageContext.getServletContext().getContextPath() %&gt;/dwr/interface/Calculadora.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="&amp;lt;%=pageContext.getServletContext().getContextPath() %&gt;/dwr/engine.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="&amp;lt;%=pageContext.getServletContext().getContextPath()
      %&gt;/dwr/util.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Nota que estos javascript están bajo la carpeta /dwr, que es el servlet que hemos creado párrafos arriba. Además, hay un Calculadora.js, que tiene el mismo nombre de nuestra clase java que hemos creado.&lt;br /&gt;&lt;br /&gt;Crearemos la función sumar() que es llamada desde el botón "sumar" de nuestro formulario:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding:
      5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt; function sumar(){&lt;br /&gt; var valor1=dwr.util.getValue("valor1");&lt;br /&gt; var valor2=dwr.util.getValue("valor2");&lt;br /&gt; Calculadora.sumar(valor1,valor2,mostrarSuma);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;En las dos primeras líneas estamos
      obteniendo los valores de los tag "valor1" y "valor2". Este nombre es el nombrado en los atributos id de los input:text. Por ello es importante que los ID identifiquen a un único tag en toda la página.&lt;br /&gt;&lt;br /&gt;La tercera linea llama al objeto Calculadora. Este objeto es el que DWR creó como contraparte a nuestra clase java Calculadora.&lt;br /&gt;&lt;br /&gt;Nota que llama al método sumar() y recibe tres parámetros. Los dos primeros son los mismos parámetros que hemos declarado en
      nuestra clase java Calculadora. Pero el tercer parámetro, que se llama &lt;span style="font-style: italic;"&gt;mostrarSuma,&lt;/span&gt; es el &lt;span style="font-weight: bold;"&gt;nombre&lt;/span&gt; de una función en javascript que se encargará de recibir y manejar el resultado que devuelto por el método sumar() de java. Así es la convención de DWR. Notar que se le está pasando solo el nombre, sin paréntesis.&lt;br /&gt;&lt;br /&gt;La función javascript mostrarSuma() será la siguiente:&lt;br
      /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt; function mostrarSuma(resultado){&lt;br /&gt; dwr.util.setValue("suma",resultado); &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Vemos que el resultado devuelto por el método de java sumar() es el
      parámetro de esta función javascript. Tomamos el valor y lo mostramos en el tag que tiene nombre "suma" (que es un &amp;lt;div&gt;).&lt;br /&gt;&lt;br /&gt;El index.jsp completo es el siguiente:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;%@page
      contentType="text/html" pageEncoding="UTF-8"%&gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&lt;br /&gt;"http://www.w3.org/TR/html4/loose.dtd"&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;html&gt;&lt;br /&gt;&amp;lt;head&gt;&lt;br /&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;&lt;br /&gt;&amp;lt;title&gt;JSP Page&amp;lt;/title&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"
      src="&amp;lt;%=pageContext.getServletContext().getContextPath() %&gt;/dwr/interface/Calculadora.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="&amp;lt;%=pageContext.getServletContext().getContextPath() %&gt;/dwr/engine.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="&amp;lt;%=pageContext.getServletContext().getContextPath() %&gt;/dwr/util.js"&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;script type="text/javascript"&gt;&lt;br
      /&gt;function sumar(){&lt;br /&gt; var valor1=dwr.util.getValue("valor1");&lt;br /&gt; var valor2=dwr.util.getValue("valor2");&lt;br /&gt; Calculadora.sumar(valor1,valor2,mostrarSuma);&lt;br /&gt;}&lt;br /&gt;function mostrarSuma(resultado){&lt;br /&gt; dwr.util.setValue("suma",resultado); &lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&gt;&lt;br /&gt;&amp;lt;/head&gt;&lt;br /&gt;&amp;lt;body&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;h2&gt;Calculadora&amp;lt;/h2&gt;&lt;br /&gt;&amp;lt;form action=""&gt;&lt;br
      /&gt;Valor 1: &amp;lt;input type="text" name="valor1" id="valor1"/&gt;&amp;lt;br/&gt;&lt;br /&gt;Valor 2: &amp;lt;input type="text" name="valor2" id="valor2"/&gt;&amp;lt;br/&gt;&lt;br /&gt;&amp;lt;input type="button" value="Sumar" onclick="sumar()"/&gt;&amp;lt;br/&gt;&lt;br /&gt;Resultado:&amp;lt;div id="suma"&gt;&amp;lt;/div&gt;&lt;br /&gt;&amp;lt;/form&gt;&lt;br /&gt;&amp;lt;/body&gt;&lt;br /&gt;&amp;lt;/html&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Lo corremos y
      probamos:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_BQk94ojgkDY/SFK7YR5Y-4I/AAAAAAAAA9g/xciYFXMPwYQ/s1600-h/Pantallazo-JSP+Page+-+Mozilla+Firefox.png"&gt;&lt;img src="http://2.bp.blogspot.com/_BQk94ojgkDY/SFK7YR5Y-4I/AAAAAAAAA9g/xciYFXMPwYQ/s320/Pantallazo-JSP+Page+-+Mozilla+Firefox.png" alt="" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" border="0" id="BLOGGER_PHOTO_ID_5211433744616455042" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;¡Magia! &lt;h2&gt;Con base
      de datos&lt;/h2&gt; A esta altura verás la simpleza del DWR, y que una aplicación con base de datos no sería de lo más difícil. Haríamos una clase que accede la base de datos y lo muestre en la web. Pero ¿cómo lo mostramos en una tabla?. Aquí mostraremos el ejemplo:&lt;br /&gt;&lt;br /&gt;Crearemos una clase llamada &lt;span style="font-style: italic;"&gt;PersonasService&lt;/span&gt; y lo guardaremos en el paquete &lt;span style="font-style: italic;"&gt;logica&lt;/span&gt;. Esta clase tendrá la
      anotación &lt;span style="font-style: italic;"&gt;@RemoteProxy&lt;/span&gt; pero con un parámetro que cambiará el nombre del objeto javascript. Es decir, no se llamará &lt;span style="font-style: italic;"&gt;PersonasService&lt;/span&gt; en javascript, sino, se llamará solamente &lt;span style="font-style: italic;"&gt;Personas&lt;/span&gt;.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace;
      color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;package logica;&lt;br /&gt;&lt;br /&gt;import org.directwebremoting.annotations.RemoteProxy;&lt;br /&gt;@RemoteProxy(name = "Personas")&lt;br /&gt;public class PersonasService {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Ahora, crearemos un método llamado getLista() que devolverá una lista de objetos &lt;span
      style="font-style: italic;"&gt;Persona&lt;/span&gt; que tendrá los registros de la base de datos. Para ello, primero crearemos la clase &lt;span style="font-style: italic;"&gt;beans.Persona&lt;/span&gt;.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;package
      beans;&lt;br /&gt;&lt;br /&gt;import java.util.Date;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class Persona {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;private int id;&lt;br /&gt;&lt;br /&gt;private String nombre;&lt;br /&gt;&lt;br /&gt;private String titulo;&lt;br /&gt;&lt;br /&gt;private boolean viajeroFrecuente;&lt;br /&gt;&lt;br /&gt;private Date ultimaActualizacion;&lt;br /&gt;&lt;br /&gt;public int getId() {&lt;br /&gt; return id;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setId(int id) {&lt;br
      /&gt; this.id = id;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getNombre() {&lt;br /&gt; return nombre;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setNombre(String nombre) {&lt;br /&gt; this.nombre = nombre;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getTitulo() {&lt;br /&gt; return titulo;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setTitulo(String titulo) {&lt;br /&gt; this.titulo = titulo;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Date getUltimaActualizacion() {&lt;br
      /&gt; return ultimaActualizacion;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setUltimaActualizacion(Date ultimaActualizacion) {&lt;br /&gt; this.ultimaActualizacion = ultimaActualizacion;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public boolean isViajeroFrecuente() {&lt;br /&gt; return viajeroFrecuente;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setViajeroFrecuente(boolean viajeroFrecuente) {&lt;br /&gt; this.viajeroFrecuente = viajeroFrecuente;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br
      /&gt;&lt;/code&gt;&lt;/pre&gt;Por alguna razón, los beans con anotaciones no son convertidos por DWR a objetos JavaScript. Al menos con esta versión. He seguido la documentación que indica cómo usar un bean con @DataTransferObject y nada. Si alguien lo puede lograr, lo agradeceré un montón.&lt;br /&gt;&lt;br /&gt;Pero para poder enviar beans en DWR, crearemos un archivo llamado &lt;span style="font-style: italic;"&gt;dwr.xml&lt;/span&gt; y lo guardamos dentro del directorio WEB-INF (en la misma
      ubicación del archivo &lt;span style="font-style: italic;"&gt;web.xml&lt;/span&gt;). En ese archivo colocaremos lo siguiente:&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;br /&gt;&amp;lt;!DOCTYPE dwr