<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog de Desarrollo Web &#187; Java</title>
	<atom:link href="http://desarrollo.dsisweb.com/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://desarrollo.dsisweb.com</link>
	<description>Blog de Desarrollo y Programación con .NET, Java, PHP entre otros. Por Rodolfo Baeza Madrid.</description>
	<lastBuildDate>Fri, 16 Jul 2010 01:43:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>¿Qué deparará el futuro para Java y otros productos de Sun?</title>
		<link>http://desarrollo.dsisweb.com/2010/01/%c2%bfque-deparara-el-futuro-para-java-y-otros-productos-de-sun/</link>
		<comments>http://desarrollo.dsisweb.com/2010/01/%c2%bfque-deparara-el-futuro-para-java-y-otros-productos-de-sun/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 16:10:01 +0000</pubDate>
		<dc:creator>REBM</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Glassfish]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Solaris]]></category>
		<category><![CDATA[Sun]]></category>

		<guid isPermaLink="false">http://desarrollo.dsisweb.com/?p=192</guid>
		<description><![CDATA[Finalmente el día de ayer 27 de enero del 2010 Oracle anunció sus planes respecto a los diversos productos recien adquiridos de la compañía Sun. Al parecer hay buenas noticias, porque Oracle ha reafirmado su compromiso por mejorar el lenguaje Java en todas sus ediciones, cosa que ya le hacía falta a Java, porque para [...]]]></description>
			<content:encoded><![CDATA[<p>Finalmente el día de ayer 27 de enero del 2010 Oracle anunció sus planes respecto a los diversos productos recien adquiridos de la compañía Sun.</p>
<p>Al parecer hay buenas noticias, porque Oracle ha reafirmado su compromiso por mejorar el lenguaje Java en todas sus ediciones, cosa que ya le hacía falta a Java, porque para mi gusto se ha quedado muy rezagada en comparación a C#. Ahora lo que falta es ver que lo cumplan, aunque yo creo que así será ya que a Oracle le conviene seguir impulsando la plataforma Java, ya que la mayoría de sus productos dependen directamente de ella.</p>
<p>Respecto a MySQL, Glassfish, Netbeans, VirtualBox y OpenOffice, igual anunciaron que seguirán dando soporte y haciéndolos cada vez mejores productos.</p>
<p>Supongo que a la mayoría de los desarrolladores que trabajamos con Java, nos gustaría que la estrategia de Oracle siga siendo en favor del Open Source. Que sigan manteniendo la portura que Sun tenía respecto a sus productos. No nos gustaría tener un segundo Microsoft en el mundo de la tecnología.</p>
<p>Sin embargo, sí se podría convertir en la principal competencia de Microsoft en el mundo empresarial respecto a ofrecer soluciones integrales. Al igual que Microsoft, Oracle podrá ofrecer ahora una solución que incluya sistema operativo (Solaris), base de datos (Oracle o MySQL), plataforma de desarrollo (Java), suite de oficina (OpenOffice) y entorno de desarrollo (JDeveloper o Netbeans). Además podrá ofrecer el hardware y la plataforma de virtualización (VirtualBox). Definitivamente estará al nivel de competir contra Microsoft en rubros donde antes no podía.</p>
<p>Lo bueno es que la competencia siempre trae cosas buenas para nosotros los desarrolladores y para los clientes finales.</p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollo.dsisweb.com/2010/01/%c2%bfque-deparara-el-futuro-para-java-y-otros-productos-de-sun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disponible versión final de Netbeans 6.8</title>
		<link>http://desarrollo.dsisweb.com/2009/12/disponible-version-final-de-netbeans-6-8/</link>
		<comments>http://desarrollo.dsisweb.com/2009/12/disponible-version-final-de-netbeans-6-8/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 19:35:31 +0000</pubDate>
		<dc:creator>REBM</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://desarrollo.dsisweb.com/?p=181</guid>
		<description><![CDATA[Por fin ya está disponible la versión final de Netbeans 6.8. Esta versión trae muchas mejoras, entre ellas las más sobresalientes son las siguientes: Soporte para la edición empresarial de Java 6 (recién liberada también) Proyectos web con Java Server Faces (JSF) 2.0 Soporte mejorado para JavaFX Soporte para kenai.com (página para colaboración entre desarrolladores) [...]]]></description>
			<content:encoded><![CDATA[<p>Por fin ya está disponible la versión final de Netbeans 6.8. Esta versión trae muchas mejoras, entre ellas las más sobresalientes son las siguientes:</p>
<ul>
<li>Soporte para la edición empresarial de Java 6 (recién liberada también)</li>
<li>Proyectos web con Java Server Faces (JSF) 2.0</li>
<li>Soporte mejorado para JavaFX</li>
<li>Soporte para <a href="http://kenai.com">kenai.com</a> (página para colaboración entre desarrolladores)</li>
<li>Soporte para PHP 5.3</li>
<li>Ruby 1.9 y Rails 2.3.4</li>
<li>Mejor soporte para Groovy y Grails</li>
<li>Entre otras&#8230;</li>
</ul>
<p>Así que no esperen más y <a href="http://netbeans.org/downloads/">descárguenlo</a> para obtener los beneficios de esta nueva versión. Yo por mi parte ya lo tengo instalado en ambas particiones, en Ubuntu y Windows 7 y lo utilizo para proyectos de java y php principalmente.</p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollo.dsisweb.com/2009/12/disponible-version-final-de-netbeans-6-8/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Java por fin incluirá Closures</title>
		<link>http://desarrollo.dsisweb.com/2009/11/java-por-fin-incluira-closures/</link>
		<comments>http://desarrollo.dsisweb.com/2009/11/java-por-fin-incluira-closures/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 17:06:12 +0000</pubDate>
		<dc:creator>REBM</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://desarrollo.dsisweb.com/?p=179</guid>
		<description><![CDATA[Una noticia muy sonada en los últimos días relacionada con el lenguaje Java, es que aparentemente por fin serán incluidos los Closures que tanto se han esperado, y que se encuentran disponibles en la mayoría de los lenguajes dinámicos. En el 2008 Sun había informado que no se incluirían para la versión 7 de Java, [...]]]></description>
			<content:encoded><![CDATA[<p>Una noticia muy sonada en los últimos días relacionada con el lenguaje Java, es que aparentemente por fin serán incluidos los <a href="http://es.wikipedia.org/wiki/Clausura_(inform%C3%A1tica)">Closures</a> que tanto se han esperado, y que se encuentran disponibles en la mayoría de los lenguajes dinámicos. En el 2008 Sun había informado que no se incluirían para la versión 7 de Java, pero hace unos días se anunció un repentino cambio en la decisión por lo que ahora sí se incluirá en la siguiente versión de Java.</p>
<p>Con todo y la buena noticia, nada es perfecto. También se anunció que la siguiente versión será lanzada hasta finales del año 2010, lo cual significa un retraso de más de seis meses respecto a la fecha indicada anteriormente. Esto no creo que sean buenas noticias para Java, porque siento que le puede ocasionar pérdida de terreno frente a otros lenguajes o plataformas. A principios del próximo año sale la versión 2010 de Visual Studio y con esto el .NET Framework 4 con muchas mejoras. También los lenguajes dinámicos como Ruby, Python, PHP e incluso Groovy siguen mejorando y ganando terreno. Definitivamente Java seguirá siendo usado por las grandes empresas que requieren todo el conjunto de componentes que conforman la edición empresarial de Java JEE, pero para otro tipo de aplicaciones cada vez hay más opciones que se ve un futuro incierto para Java.</p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollo.dsisweb.com/2009/11/java-por-fin-incluira-closures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurando Tomcat 6 para usarlo en Netbeans sobre Ubuntu</title>
		<link>http://desarrollo.dsisweb.com/2009/11/configurando-tomcat-6-para-usarlo-en-netbeans-sobre-ubuntu/</link>
		<comments>http://desarrollo.dsisweb.com/2009/11/configurando-tomcat-6-para-usarlo-en-netbeans-sobre-ubuntu/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 02:52:33 +0000</pubDate>
		<dc:creator>REBM</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://desarrollo.dsisweb.com/?p=128</guid>
		<description><![CDATA[Normalmente al instalar Netbeans se instala también de forma automática el servidor Glassfish, pero ¿qué pasa si necesitamos un servidor un poco más ligero? Pues en este caso podemos recurrir a instalar el servidor web Tomcat. Mi experiencia fue que instalé el Tomcat mediante el Synaptic y al parecer a Netbeans no le gusta este [...]]]></description>
			<content:encoded><![CDATA[<p>Normalmente al instalar Netbeans se instala también de forma automática el servidor Glassfish, pero ¿qué pasa si necesitamos un servidor un poco más ligero? Pues en este caso podemos recurrir a instalar el servidor web Tomcat.</p>
<p>Mi experiencia fue que instalé el Tomcat mediante el Synaptic y al parecer a Netbeans no le gusta este tipo de configuración, porque al tratar de configurar un nuevo servidor web Tomcat desde el IDE me marcaba un error de que el archivo &#8220;(catalina_home)/conf/server.xml&#8221; no es válido. El problema es que Ubuntu instala el archivo server.xml en la carpeta /etc/tomcat6, por lo que tenemos que ejecutar el siguiente comando para corregirlo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">ln</span> <span style="color: #660033;">-s</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>tomcat6 <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>tomcat6<span style="color: #000000; font-weight: bold;">/</span>conf</pre></div></div>

<p>Ahora dentro de Netbeans le podemos dar la ruta correcta del tomcat que es</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>share<span style="color: #000000; font-weight: bold;">/</span>tomcat6</pre></div></div>

<p>Espero que este pequeño tip les ayude a resolver este problema.</p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollo.dsisweb.com/2009/11/configurando-tomcat-6-para-usarlo-en-netbeans-sobre-ubuntu/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Framework MVC para Java sin complicaciones</title>
		<link>http://desarrollo.dsisweb.com/2009/11/framework-mvc-para-java-sin-complicaciones/</link>
		<comments>http://desarrollo.dsisweb.com/2009/11/framework-mvc-para-java-sin-complicaciones/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 18:02:42 +0000</pubDate>
		<dc:creator>REBM</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[Play]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://desarrollo.dsisweb.com/?p=110</guid>
		<description><![CDATA[En la búsqueda incesante de frameworks más ligeros para programar en Java, encontré hace poco un proyecto llamado &#8220;Play&#8221; que ofrece una solución a la compleja plataforma Java Enterprise Edition. Se enfoca en la productividad de los desarrolladores y utiliza arquitectura REST. Según el sitio web, Play es una herramienta perfecta para el desarrollo ágil. [...]]]></description>
			<content:encoded><![CDATA[<p>En la búsqueda incesante de frameworks más ligeros para programar en Java, encontré hace poco un proyecto llamado &#8220;Play&#8221; que ofrece una solución a la compleja plataforma Java Enterprise Edition. Se enfoca en la productividad de los desarrolladores y utiliza arquitectura REST. Según el sitio web, Play es una herramienta perfecta para el desarrollo ágil.</p>
<p>El objetivo del framework Play es facilitar el desarrollo de aplicaciones web sin tener que abandonar la plataforma Java. En teoría suena muy bien, habría que probarlo para saber si cumplen con lo que prometen.</p>
<p>Entre las características que anuncian se encuentran las siguientes:</p>
<p><strong>Un framework Java sin tantas complicaciones</strong><br />
Play es un framework desarrollado completamente en Java y te permite continuar con tus herramientas de desarrollo y librerías favoritas. Si ya utilizas Java como plataforma de desarrollo entonces no tienes porque cambiarte a otro lenguaje, otro IDE o a otras librerías.</p>
<p><strong>Corrige el error y presiona F5</strong><br />
La plataforma Java siempre ha sido famosa por su baja productividad para aplicaciones web, principalmente debido a la necesidad de compilar para poder realizar actualizaciones.<br />
En Play esto ya no es necesario, ya que el mismo framework realiza la compilación directamente de los archivos .java y los carga en tiempo de ejecución directamente a la máquina virtual (JVM) sin necesidad de reiniciar el servidor web.<br />
Con esta característica el ciclo de desarrollo se asemeja mucho a la programación en PHP o Ruby on rails en cuanto a agilidad. Incluso ya no necesitarías un IDE, ya podrías trabajar con cualquier editor de texto si quisieras.</p>
<p><strong>Arquitectura MVC</strong><br />
Las arquitecturas que se basan en la sesión para guardar el estado hacen que sea fácil cierto tipo de programación, pero a la vez nos ocasionan varios problemas. Por eso la tendencia actual es eliminar cualquier capa de complejidad y apegarnos lo más posible al modelo de petición-respuesta HTTP.<br />
Para esto, Play utiliza la misma arquitectura MVC que utilizan frameworks como Rails, Django o CakePHP; modelo que ha tenido mucho éxito y ha permitido facilitar la programación de sitios web dinámicos y la inclusión de Ajax en los mismos.</p>
<p><strong>Mapeo de HTTP a código</strong><br />
A diferencia de otros frameworks que intentan abstraer el modelo HTTP del programador, en Play se le presenta al desarrollador todo el poder de accesar al protocolo HTTP y sus conceptos mediante el framework. Por ejemplo, para vincular un URI (identificador de recurso único) a un método de Java, sólamente es necesaria la siguiente línea.</p>
<pre>GET    /clientes/{id}        Clientes.show</pre>
<p><strong>Plantillas eficientes</strong><br />
La idea detrás de JSP y el lenguaje de expresiones (EL) es muy buena. Pero el problema es que se complica con todas las configuraciones que hay que hacer y más aun con el uso de librerías de etiquetas (tag libraries). JSP tiene algunas limitantes, es por eso que los creadores del framework decidieron programador su propia librería de plantillas, inspirada por JSP pero sin sus limitantes.</p>
<p>Por ejemplo, en lugar de escribir esto:</p>

<div class="wp_syntax"><div class="code"><pre class="jsp" style="font-family:monospace;">&lt;%@ taglib uri=&quot;http://java.sun.com/jsp/jstl/core&quot; prefix=&quot;c&quot; %&gt;
&lt;%@ taglib uri=&quot;http://java.sun.com/jsp/jstl/functions&quot; prefix=&quot;fn&quot; %&gt;
&nbsp;
&lt;c:choose&gt;
&lt;c:when test=&quot;${correos.sinLeer != null &amp;&amp; fn:size(correos.sinLeer)}&quot;&gt;
Tienes ${fn:size(correos.sinLeer)} correo(s) sin leer!
&lt;/c:when&gt;
&lt;c:otherwise&gt;
No tienes correos sin leer!
&lt;/c:otherwise&gt;
&lt;/c:choose&gt;</pre></div></div>

<p>Es mucho más fácil entender esto:</p>

<div class="wp_syntax"><div class="code"><pre class="jsp" style="font-family:monospace;">Tienes ${correos.sinLeer ?: 'no'} ${correos.sinLeer?.pluralize('correo')} !</pre></div></div>

<p>El lenguaje de expresiones utilizado por Play es <a href="http://groovy.org.es/">Groovy</a> que proporciona una sintaxis consistente con Java.</p>
<p><strong>JPA mejorado<br />
</strong>JPA es una de los mejores ORM que existen para Java. Play ofrece una integración muy sencilla y sin configuraciones con JPA.</p>
<p><strong>Desarrollo orientado a pruebas (Test driven development)</strong><br />
Play trae un módulo integrado para ejecutar las pruebas. Puedes escribir todo tipo de pruebas, desde pruebas unitarias hasta pruebas de aceptación y ejecutarlas directamente con Selenium.</p>
<p><strong>Completo ambiente de desarrollo</strong><br />
El framework Play cuenta con todo lo necesario para crear aplicaciones web modernas:</p>
<ul>
<li>Soporte a bases de datos relacionales mediante JDBC.</li>
<li>Mapeo relacional-objetos (ORM) mediante Hibernate (con JPA).</li>
<li>Soporte de cacheo integrado.</li>
<li>Consumo de web services con JSON o XML.</li>
<li>Soporte de autentificación distribuida con OpenID.</li>
<li>API para manipulación de imágenes.</li>
<li>Entre otros&#8230;</li>
</ul>
<p>Si quieres probar el framework, puedes descargarlo desde su página web.</p>
<p><a href="http://www.playframework.org/">http://www.playframework.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollo.dsisweb.com/2009/11/framework-mvc-para-java-sin-complicaciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Será GWT el futuro del desarrollo web?</title>
		<link>http://desarrollo.dsisweb.com/2009/11/sera-gwt-el-futuro-del-desarrollo-web/</link>
		<comments>http://desarrollo.dsisweb.com/2009/11/sera-gwt-el-futuro-del-desarrollo-web/#comments</comments>
		<pubDate>Wed, 04 Nov 2009 14:36:35 +0000</pubDate>
		<dc:creator>REBM</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[SmartGWT]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://desarrollo.dsisweb.com/?p=108</guid>
		<description><![CDATA[Hace unos días Bob Balfe, miembro del staff técnico de IBM, hizo un comentario en su blog mencionando las bondades que ofrece la librería GWT (Google Web Toolkit) para el desarrollo web. Para los que no conozcan GWT, es una librería desarrollada por Google que te permite programar tu código en Java y diseñar tus [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días Bob Balfe, miembro del staff técnico de IBM, hizo un comentario en su <a href="http://blog.balfes.net/?p=869">blog</a> mencionando las bondades que ofrece la librería <a href="http://code.google.com/intl/es-MX/webtoolkit/">GWT</a> (Google Web Toolkit) para el desarrollo web.</p>
<p>Para los que no conozcan GWT, es una librería desarrollada por Google que te permite programar tu código en Java y diseñar tus interfaces de usuario como si fuera Swing, y al momento de compilarla te la convierte a Javascript muy optimizado. Después de ser compilada, sólo necesitas colocarlo en el servidor web y listo!. De esta forma obtenemos la ventaja de poder editar nuestro código con algún IDE como <a href="http://www.netbeans.org">NetBeans</a> o <a href="http://www.eclipse.org">Eclipse</a>. Google actualmente está utilizando GWT para desarrollar su más reciente proyecto <a href="http://code.google.com/intl/es-MX/events/io/2009/sessions/GoogleWavePoweredByGWT.html">Google Wave</a>.</p>
<p>Opinando acerca de este tema, yo considero que la librería GWT es adecuada para ciertas tareas y lo hace muy bien. Por ejemplo, si necesitas desarrollar algún sistema basado en web que sea muy interactivo como algún sistema de inventario, un ERP o GRP, entonces GWT sí podría ser la mejor opción; pero si lo que necesitas es un sitio web con sólo ciertas partes interactivas y que se requiera mucho diseño gráfico en la interfaz, entonces sería mejor otra opción.</p>
<p>GWT trae una librería de widgets o componentes algo limitada, pero permite crear los tuyos propios. También existen componentes de terceros que traen gran cantidad de elementos para todas las tareas posibles (Grids, Tabs, Árboles, Manejo de formularios, etc). La que más me ha gustado es <a href="http://code.google.com/p/smartgwt/">SmartGWT</a>, pero también existe ExtGWT (aunque tavez su licencia no sea la más adecuada).</p>
<p>En conclusión, podemos decir que GWT tiene un gran futuro y por ser un proyecto de Google igual sabemos que tendrá mucha atención por parte de los desarrolladores. Actualmente la mayoría de los IDEs ya cuentan con algún tipo de soporte para la librería, pero sería bueno ver en un futuro alguna opción Open Source de algún editor gráfico para desarrollar la interfaz y no tener que hacerlo con puro código. Otro punto importante sería que Oracle o IBM invirtieran recursos para mejorar la librería, lo cual sería muy bueno para todos nosotros.</p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollo.dsisweb.com/2009/11/sera-gwt-el-futuro-del-desarrollo-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GrailsFlow: librería open source de procesos y flujos de trabajo</title>
		<link>http://desarrollo.dsisweb.com/2009/11/grailsflow-libreria-open-source-de-procesos-y-flujos-de-trabajo/</link>
		<comments>http://desarrollo.dsisweb.com/2009/11/grailsflow-libreria-open-source-de-procesos-y-flujos-de-trabajo/#comments</comments>
		<pubDate>Mon, 02 Nov 2009 00:48:36 +0000</pubDate>
		<dc:creator>REBM</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://desarrollo.dsisweb.com/?p=93</guid>
		<description><![CDATA[Grails lentamente va tomando más fuerza entre los frameworks de desarrollo web. Cada día salen más herramientas y librerías para cubrir todas las necesidades que nos surjan. En esta ocasión platicaremos de GrailsFlow, que es una librería para control de procesos y flujos de trabajo (workflows), que puede ser integrada fácilmnte a aplicaciones de Groovy, [...]]]></description>
			<content:encoded><![CDATA[<p>Grails lentamente va tomando más fuerza entre los frameworks de desarrollo web. Cada día salen más herramientas y librerías para cubrir todas las necesidades que nos surjan.</p>
<p>En esta ocasión platicaremos de GrailsFlow, que es una librería para control de procesos y flujos de trabajo (workflows), que puede ser integrada fácilmnte a aplicaciones de Groovy, Grails o incluso Java.</p>
<p>GrailsFlow ofrece las siguientes ventajas:</p>
<ul>
<li>Sistema completo de control de procesos y flujos de trabajo.</li>
<li>Estructura muy simple y fácil de entender.</li>
<li>Lenguaje específico de dominio (DSL) basado en Groovy en lugar de XML para definir los procesos.</li>
<li>Interfaz de usuario para definir los procesos, administrar las listas de trabajo y monitoreo de procesos.</li>
</ul>
<p>La versión actual es la 1.0 RC1 y ya está completamente estable como para ser usada en producción. Puedes descargarla o también obtener más información en su página web: <a href="http://www.grailsflow.org/">http://www.grailsflow.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollo.dsisweb.com/2009/11/grailsflow-libreria-open-source-de-procesos-y-flujos-de-trabajo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IntelliJ IDEA se une a la lista de IDEs open source</title>
		<link>http://desarrollo.dsisweb.com/2009/10/intellij-idea-se-une-a-la-lista-de-ides-open-source/</link>
		<comments>http://desarrollo.dsisweb.com/2009/10/intellij-idea-se-une-a-la-lista-de-ides-open-source/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 17:27:46 +0000</pubDate>
		<dc:creator>REBM</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[IDEA]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://desarrollo.dsisweb.com/?p=84</guid>
		<description><![CDATA[Hace unos días Jetbrains (la empresa creadora de IDEA) anunció que lanzará una versión open source de este magnífico IDE. Esta versión se llama IntelliJ IDEA Community Edition y es una versión reducida en características de la versión comercial. Con este lanzamiento se une a NetBeans y Eclipse en el campo de IDEs open source [...]]]></description>
			<content:encoded><![CDATA[<p>Hace unos días <a href="http://www.jetbrains.com">Jetbrains</a> (la empresa creadora de IDEA) anunció que lanzará una versión open source de este magnífico IDE. Esta versión se llama IntelliJ IDEA Community Edition y es una versión reducida en características de la versión comercial.</p>
<p>Con este lanzamiento se une a NetBeans y Eclipse en el campo de IDEs open source enfocados principalmente a Java pero con soporte para varios lenguajes como PHP, Ruby, Python, etc. Es bueno tener una opción más para nosotros los programadores.</p>
<p>Si deseas descargar el programa, lo puedes hacer mediante el siguiente <a href="http://www.jetbrains.com/idea/nextversion/free_java_ide.html">enlace</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollo.dsisweb.com/2009/10/intellij-idea-se-une-a-la-lista-de-ides-open-source/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle revela planes para NetBeans, Glassfish y VirtualBox</title>
		<link>http://desarrollo.dsisweb.com/2009/10/oracle-revela-planes-para-netbeans-glassfish-y-virtualbox/</link>
		<comments>http://desarrollo.dsisweb.com/2009/10/oracle-revela-planes-para-netbeans-glassfish-y-virtualbox/#comments</comments>
		<pubDate>Wed, 28 Oct 2009 15:51:25 +0000</pubDate>
		<dc:creator>REBM</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Glassfish]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[VirtualBox]]></category>

		<guid isPermaLink="false">http://desarrollo.dsisweb.com/?p=72</guid>
		<description><![CDATA[Recientemente Oracle decidió por fin revelar sus planes futuros para las populares herramientas de Java (NetBeans y Glassfish) y la herramienta de virtualización (VirtualBox) que obtendría con la adquisición de Sun. Los planes son los siguientes (información original en inglés en este archivo pdf): NetBeans Oracle intenta proporcionar NetBeans como una opción adicional de código [...]]]></description>
			<content:encoded><![CDATA[<p>Recientemente Oracle decidió por fin revelar sus planes futuros para las populares herramientas de Java (NetBeans y Glassfish) y la herramienta de virtualización (VirtualBox) que obtendría con la adquisición de Sun. Los planes son los siguientes (información original en inglés en este <a href="http://www.oracle.com/ocom/groups/public/documents/webcontent/038563.pdf">archivo pdf</a>):</p>
<p><strong>NetBeans</strong><br />
Oracle intenta proporcionar NetBeans como una opción adicional de código abierto para complementar a JDeveloper y el paquete empresarial de Oracle para Eclipse. Sin embargo, Oracle deja en claro que JDeveloper seguirá siendo su herramienta estratégica para Oracle Fusion y futuras aplicaciones empresariales.</p>
<p><strong>Glassfish</strong><br />
Oracle dice que &#8220;invertirá lo necesario para alinear una infraestructura común de componentes e innovaciones&#8221; entre Oracle WebLogic y Glassfish. Planean continuar el desarrollo de Glassfish como la implementación de referencia de las especificaciones Java EE (Edición empresarial). También comentó que continuará dando soporte activamente a la comunidad Glassfish.</p>
<p><strong>VirtualBox</strong><br />
Comentaron que &#8220;esperan&#8221; continuar dando soporte a las diversos herramientas de virtualización que actualmente tiene Sun. Incluyen VDI, Secure Global Desktop, Sun Ray y VirtualBox.</p>
<p><strong>OpenOffice</strong><br />
Oracle seguirá desarrollando y dando soporte a OpenOffice como open source. Pero también incluirá una licencia comercial para aquellos clientes que requieran soporte y herramientas de nivel empresarial.</p>
<p>Respecto a sus planes de SPARC, Solaris y MySQL no hay novedades. También hay que aclarar que Oracle puso una nota en su FAQ donde comentan que estos comentarios están sujetos a cambios. Aun así, es bueno tener noticias para estar preparados con respecto al futuro de todos estos componentes tan utilizados en el mundo de Java y fuera de él.</p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollo.dsisweb.com/2009/10/oracle-revela-planes-para-netbeans-glassfish-y-virtualbox/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Primeros pasos con Grails</title>
		<link>http://desarrollo.dsisweb.com/2009/10/primeros-pasos-con-grails/</link>
		<comments>http://desarrollo.dsisweb.com/2009/10/primeros-pasos-con-grails/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 19:09:56 +0000</pubDate>
		<dc:creator>REBM</dc:creator>
				<category><![CDATA[Grails]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://desarrollo.dsisweb.com/?p=41</guid>
		<description><![CDATA[Introducción Últimamente han estado muy de moda los lenguajes dinámicos e interpretados, ya que se combinan muy bien con  la programación ágil que tan necesaria es en estos días. En esta ocasión, nos centraremos en conocer el lenguaje Groovy y más concretamente, el framework Grails. Groovy es un lenguaje de programación orientado a objetos que [...]]]></description>
			<content:encoded><![CDATA[<h2>Introducción</h2>
<p>Últimamente han estado muy de moda los lenguajes dinámicos e interpretados, ya que se combinan muy bien con  la programación ágil que tan necesaria es en estos días. En esta ocasión, nos centraremos en conocer el lenguaje Groovy y más concretamente, el framework Grails.</p>
<p>Groovy es un lenguaje de programación orientado a objetos que está implementado sobre la plataforma de Java, y por lo tanto para su ejecución necesita de una máquina virtual de Java (JVM). Tiene características muy parecidas a Perl, Ruby y Python, aunque su sintaxis es muy similar a la de Java, y una de las principales ventajas es que puede tener acceso a todas las librerías existentes de Java (que son muchísimas). La versión estable más reciente al momento de escribir este artículo es la 1.6.</p>
<p>Grails por su parte, es un framework para aplicaciones web desarrollado sobre Groovy orientado al patrón de diseño MVC (Modelo-Vista-Controlador). Es un marco de trabajo muy productivo y se basa en paradigmas como la convención sobre configuración y no te repitas (DRY por sus siglas en inglés), y proporciona un entorno de desarrollo estandarizado y oculta gran parte de los detalles de configuración al programador. Es un marco de trabajo muy estable ya que se está construido a partir de librerías ampliamente utilizadas en el mundo de Java, como son <a href="http://www.hibernate.org" target="_blank">Hibernate</a> y <a href="http://www.springsource.org" target="_blank">Spring</a>.</p>
<p>En el siguiente tutorial crearemos un proyecto muy sencillo con Grails para mostrar la funcionalidad básica.</p>
<h2>Instalando Groovy y Grails</h2>
<p>Para instalar Groovy es necesario realizar los siguientes pasos:</p>
<ol>
<li>Primero, es necesario <a href="http://groovy.codehaus.org/Download" target="_blank">descargar</a> una distribución binaria y luego descomprimirla en alguna carpeta.</li>
<li>Establecer la variable de ambiente GROOVY_HOME hacia la carpeta donde lo descomprimimos.</li>
<li>Agregar GROOVY_HOME/bin a la variable de ambiente PATH del sistema operativo.</li>
<li>Establecer la variable JAVA_HOME al directorio de instalación del JDK. En Windows esto es normalmente en c:\Archivos de Programa\Java\jdk[versión instalada], en el OS X se instala normalmente en /Library/Java/Home y en Linux en /usr/java.</li>
</ol>
<p>Posteriormente, necesitaremos instalar Grails siguiendo estas instrucciones:</p>
<ul>
<li><a href="http://grails.org/Download" target="_blank">Descarga</a> la versión más reciente de Grails.</li>
<li>Extrae los archivos en alguna carpeta del sistema.</li>
<li>Crea la variable de ambiente GRAILS_HOME que apunte a la carpeta donde se descomprimieron los archivos.</li>
<li>Anexa GRAILS_HOME\bin al PATH del sistema.</li>
<li>Teclea “grails” en la línea de comandos y si sale un mensaje de ayuda, ya todo estará instalado correctamente.</li>
</ul>
<p>Es importante notar que como se mencionó anteriormente, Groovy se ejecuta sobre la plataforma de Java, por lo tanto es necesario tener instalado el JDK que puede ser descargado desde la página de <a href="http://java.sun.com/javase/downloads/index.jsp" target="_blank">Sun</a>.</p>
<h2>Creando el proyecto</h2>
<p>Una vez que ya está instalado todo, podemos empezar a programar con Grails. Para crear un proyecto, primero nos situamos en la carpeta donde queremos crearlo mediante la línea de comandos y luego tecleamos lo siguiente:</p>

<div class="wp_syntax"><div class="code"><pre class="grails" style="font-family:monospace;">grails create-app</pre></div></div>

<p>Se te preguntará por el nombre del proyecto y se generará un proyecto con la siguiente estructura:</p>

<div class="wp_syntax"><div class="code"><pre class="grails" style="font-family:monospace;">%CARPETA_PROYECTO%
    + grails-app
       + conf                 --- Archivos de configuración
           + hibernate              --- Configuración opcional de Hibernate
           + spring                 --- Configuración opcional de Spring
       + controllers          --- Directorio para los controladores
       + domain               --- Directorio para los objetos de dominio (modelo)
       + i18n                 --- Directorio para los mensajes para localizar la aplicación
       + services             --- Directorio para los servicios
       + taglib               --- Directorio para las librerías de etiquetas
       + util                 --- Directorio para utilerías diversas
       + views                --- Directorio para las vistas
           + layouts              --- Directorio para las vistas maestras
   + lib
   + scripts                  --- Directorio para scripts
   + src
       + groovy               --- Opcional: archivos de Groovy adicionales.
       + java                 --- Opcional: archivos Java
   + test                     --- Clases generadas para realizar pruebas
   + web-app
       + WEB-INF</pre></div></div>

<h2>Configurando un Origen de Datos (opcional)</h2>
<p>El script &#8220;create-app&#8221; creó un archivo de configuración del origen de datos en el directorio &#8220;/grails-app/conf&#8221; con el nombre de DataSource.groovy con closures (<a href="http://en.wikipedia.org/wiki/Closure_%28computer_science%29" target="_blank">link</a> para más información en inglés) para cada uno de los ambientes estándar: Desarrollo (Development), Pruebas (TestData) y Producción (Production). Todos los ejemplos de este artículo utilizan el ambiente de Desarrollo.</p>
<p>Por defecto, todos los orígenes de datos están configurados para utilizar la base de datos HSQLDB (excelente para realizar pruebas, pero talvez no tan útil para producción).</p>

<div class="wp_syntax"><div class="code"><pre class="groovy" style="font-family:monospace;">dataSource <span style="color: #66cc66;">&#123;</span>
  pooled <span style="color: #66cc66;">=</span> <span style="color: #000000; font-weight: bold;">false</span>
  driverClassName <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;org.hsqldb.jdbcDriver&quot;</span>
  username <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;sa&quot;</span>
  password <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;&quot;</span>
<span style="color: #66cc66;">&#125;</span>
<span style="color: #808080; font-style: italic;">// environment specific settings</span>
environments <span style="color: #66cc66;">&#123;</span>
  development <span style="color: #66cc66;">&#123;</span>
    dataSource <span style="color: #66cc66;">&#123;</span>
      dbCreate <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;create-drop&quot;</span> <span style="color: #808080; font-style: italic;">// one of 'create', 'create-drop','update'</span>
      url <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;jdbc:hsqldb:mem:devDB&quot;</span>
    <span style="color: #66cc66;">&#125;</span>
  <span style="color: #66cc66;">&#125;</span>
  test <span style="color: #66cc66;">&#123;</span>
    dataSource <span style="color: #66cc66;">&#123;</span>
      dbCreate <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;update&quot;</span>
      url <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;jdbc:hsqldb:mem:testDb&quot;</span>
    <span style="color: #66cc66;">&#125;</span>
  <span style="color: #66cc66;">&#125;</span>
  production <span style="color: #66cc66;">&#123;</span>
    dataSource <span style="color: #66cc66;">&#123;</span>
      dbCreate <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;update&quot;</span>
      url <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">&quot;jdbc:hsqldb:file:prodDb;shutdown=true&quot;</span>
    <span style="color: #66cc66;">&#125;</span>
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>Para configurar otro origen de datos sólo se necesita cambiar los valores de &#8220;url&#8221; para seleccionar la base de datos deseada y poner el archivo jar del driver en la carpeta &#8220;lib&#8221;.</p>
<h2>Creando una clase de Dominio</h2>
<p>Asegúrate de estar en el directorio raíz del proyecto y teclea lo siguiente:</p>

<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;"><span style="color: #b1b100; font-weight: bold;">cd</span> tutorial1
grails create-domain-class</pre></div></div>

<p>El comando nos preguntará el nombre de la clase que será creada. Respondamos al comando con &#8220;libro&#8221;, lo que nos generará el archivo Libro.groovy en el directorio &#8220;Domain&#8221; del proyecto. Es un archivo de texto plano, por lo que puede ser editado con cualquier editor de texto.</p>
<p><strong>Nota:</strong> Para nombrar tus clases de dominio, no se deben utilizar nombres de palabras clave de la base de datos. Tampoco se deben utilizar nombres como por ejemplo MILibro (que tengan dos o más letras mayúsculas al inicio), pero MiLibro es completamente permitido. Aparentemente Grails tiene problemas con ese tipo de nombres, ya que a veces se generan errores 404 (página no encontrada).</p>
<p>Una clase de dominio es un elemento persistente y todas sus propiedades son guardadas automáticamente a la base de datos.<br />
Pongamos lo siguiente en el archivo Libro.groovy:</p>

<div class="wp_syntax"><div class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> Libro <span style="color: #66cc66;">&#123;</span>
  <span style="color: #aaaadd; font-weight: bold;">String</span> titulo
  <span style="color: #aaaadd; font-weight: bold;">String</span> autor
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p>En este punto, probablemente sea buena idea tener datos para poder realizar pruebas. Una forma fácil de hacerlo es utilizando el método &#8220;init&#8221; del archivo &#8220;conf/BootStrap.groovy&#8221; como se muestra a continuación:</p>

<div class="wp_syntax"><div class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> BootStrap <span style="color: #66cc66;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">def</span> init <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#123;</span> servletContext <span style="color: #66cc66;">-&gt;</span>
    <span style="color: #000000; font-weight: bold;">new</span> Libro<span style="color: #66cc66;">&#40;</span>titulo:<span style="color: #ff0000;">'100 años de soledad'</span>, autor:<span style="color: #ff0000;">'Gabriel García Márquez'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">save</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">new</span> Libro<span style="color: #66cc66;">&#40;</span>titulo:<span style="color: #ff0000;">'La casa de los espíritus'</span>, autor:<span style="color: #ff0000;">'Isabel Allende'</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">save</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>
  <span style="color: #66cc66;">&#125;</span>
  <span style="color: #000000; font-weight: bold;">def</span> destroy <span style="color: #66cc66;">=</span> <span style="color: #66cc66;">&#123;</span> <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<h2>Creando un Controlador</h2>
<p>Los controladores son la parte central de las aplicaciones de Grails, ya que ellos controlan las peticiones que reciben de parte de los navegadores y los mapean a las clases y métodos correspondientes.</p>
<p>En este paso es necesario que ejecutes el comando &#8220;grails create-controller&#8221; y de nuevo se te pedirá un nombre para el controlador a crear. En nuestro caso tecleamos &#8220;Libro&#8221; lo que nos generará el archivo &#8220;grails-app/controllers/LibroController.groovy&#8221;.</p>
<p>Como siguiente paso, abrimos el archivo recién generado y utilizaremos una característica de Grails llamada <a href="http://www.grails.org/Scaffolding" target="_blank">Scaffolding</a> para generar parte de la aplicación dinámicamente en tiempo de ejecución.</p>

<div class="wp_syntax"><div class="code"><pre class="groovy" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">class</span> LibroController <span style="color: #66cc66;">&#123;</span>
  <span style="color: #000000; font-weight: bold;">def</span> scaffold <span style="color: #66cc66;">=</span> Libro
<span style="color: #66cc66;">&#125;</span></pre></div></div>

<p><strong>Nota:</strong>Es necesario quitar o comentar el código &#8220;def index = {}&#8221; que existe en el archivo para que funcione correctamente el Scaffolding.</p>
<p>También podriamos haber hecho uso del comando &#8220;grails generate-all&#8221; (recuerda que siempre se deben ejecutar en el directorio raíz del proyecto), el cual crearía todos los archivos necesarios por ti (controlador, vistas).</p>
<h2>Resultado final</h2>
<p>Por último, sólo nos resta ejecutar el servidor integrado de rails para ver el resultado final de nuestra aplicación web:</p>

<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">grails run-app</pre></div></div>

<p>Esto iniciará una instancia del servidor web integrado y que escuchará las peticiones en el puerto 8080. Si deseas que escuche en otro puerto, necesitas indicarle la configuración al momento de ejecutarlo:</p>

<div class="wp_syntax"><div class="code"><pre class="dos" style="font-family:monospace;">grails -Dserver.port=<span style="color: #cc66cc;">8090</span> run-app</pre></div></div>

<p>Para visualizar la lista de libros escribe en tu navegador la siguiente dirección:</p>
<pre>http://localhost:8080/tutorial1/libro/list</pre>
<p>O como el método &#8220;list&#8221; es el que se llama por defecto, también lo podemos omitir:</p>
<pre>http://localhost:8080/tutorial1/libro

<img class="aligncenter size-full wp-image-42" title="lista_libros" src="http://desarrollo.dsisweb.com/wp-content/uploads/2009/10/lista_libros.jpg" alt="lista_libros" width="485" height="438" /></pre>
<p>Hasta aquí con este tutorial sencillo de Grails, más adelante analizaremos más a fondo otros aspectos que lo hacen un gran entorno de desarrollo.</p>
]]></content:encoded>
			<wfw:commentRss>http://desarrollo.dsisweb.com/2009/10/primeros-pasos-con-grails/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	<img style='margin:0;padding:0;border:0;' width='1px' height='1px' src="http://desarrollo.dsisweb.com/wp-content/plugins/mystat/mystat.php?act=time_load&id=81303&rnd=348203620" /></channel>
</rss>
