<?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>xml-utils.com &#187; Java</title>
	<atom:link href="http://xml-utils.com/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://xml-utils.com</link>
	<description>by Ricardo Borillo</description>
	<lastBuildDate>Wed, 18 Jan 2012 12:46:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Presentación en IPSA: &#8220;Infrastructura y servicios de firma digital&#8221;</title>
		<link>http://xml-utils.com/2011/07/30/presentacion-en-ipsa-infrastructura-y-servicios-de-firma-digital/</link>
		<comments>http://xml-utils.com/2011/07/30/presentacion-en-ipsa-infrastructura-y-servicios-de-firma-digital/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 16:49:16 +0000</pubDate>
		<dc:creator>borillo</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[All]]></category>
		<category><![CDATA[Firma digital]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Publicaciones]]></category>

		<guid isPermaLink="false">http://xml-utils.com/?p=168</guid>
		<description><![CDATA[Presentación realizada en]]></description>
			<content:encoded><![CDATA[<p>Presentación realizada en <a href="http://www.ipsa.es/ target="_blank">IPSA</a> durante mi <a href="http://www.desk-surfing.org/" target="_blank">DeskSurfing</a>:</p>
<p><object id="doc_52439" name="doc_52439" height="475" width="100%" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;" ><param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"><param name="wmode" value="opaque"><param name="bgcolor" value="#ffffff"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><param name="FlashVars" value="document_id=61134443&#038;access_key=key-1cw7hmegmimm4kvt3oy&#038;page=1&#038;viewMode=list"><embed id="doc_52439" name="doc_52439" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=61134443&#038;access_key=key-1cw7hmegmimm4kvt3oy&#038;page=1&#038;viewMode=list" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="475" width="100%" wmode="opaque" bgcolor="#ffffff"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://xml-utils.com/2011/07/30/presentacion-en-ipsa-infrastructura-y-servicios-de-firma-digital/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DeskSurfing@Day 4</title>
		<link>http://xml-utils.com/2011/07/30/desksurfingday-4/</link>
		<comments>http://xml-utils.com/2011/07/30/desksurfingday-4/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 16:40:50 +0000</pubDate>
		<dc:creator>borillo</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[All]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://xml-utils.com/?p=165</guid>
		<description><![CDATA[Último día en IPSA, esta vez junto a @AlfredoCasado. El objetivo de hoy era dar un repaso a todos los temas pendientes y acabar de completar así los aspectos que tenía pensados tratar en mi estancia. Esto ha hecho que hayamos podido reparasar aspectos bastante interesantes como: Testing de la capa REST Proceso de release [...]]]></description>
			<content:encoded><![CDATA[<p>Último día en <a href="http://www.ipsa.es" target="_blank">IPSA</a>, esta vez junto a <a href="http://twitter.com/AlfredoCasado" target="_blank">@AlfredoCasado</a>.</p>
<p>El objetivo de hoy era dar un repaso a todos los temas pendientes y acabar de completar así los aspectos que tenía pensados tratar en mi estancia. Esto ha hecho que hayamos podido reparasar aspectos bastante interesantes como:</p>
<ul>
<li>Testing de la capa REST</li>
<li><a href="http://maven.apache.org/plugins/maven-release-plugin/" target="_blank">Proceso de release con maven</a> y de creación de <a href="http://maven.apache.org/plugins/maven-assembly-plugin/" target="_blank">distribuciones de producto con maven assembly</a>.</li>
<li>El uso del fichero META-INF/services para la carga dinámica de módulos.</li>
<li>Creación de nuevos arquetipos para Maven.</li>
</ul>
<p>En definitiva, una mañana muy interesante!!</p>
<p>Como mi tren salía hoy a las 17:00, hemos aprovechado la comida para despedirnos y tomar unas cañas con el equipo completo. </p>
<p>Gran equipo humano el de IPSA, que me ha hecho sentir como en casa durante toda la semana y han sido unos anfitriones excelentes <img src='http://xml-utils.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Hasta aquí mi <a href="http://www.desk-surfing.org/" target="_blank">DeskSurfing</a> &#8230; ¿Cuando empiezas el tuyo?</p>
]]></content:encoded>
			<wfw:commentRss>http://xml-utils.com/2011/07/30/desksurfingday-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DeskSurfing@Day 3</title>
		<link>http://xml-utils.com/2011/07/30/desksurfingday-3/</link>
		<comments>http://xml-utils.com/2011/07/30/desksurfingday-3/#comments</comments>
		<pubDate>Sat, 30 Jul 2011 16:26:25 +0000</pubDate>
		<dc:creator>borillo</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[All]]></category>
		<category><![CDATA[Firma digital]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://xml-utils.com/?p=161</guid>
		<description><![CDATA[Tras la vuelta de nuevo al panel para ver el estado de las tareas, hoy he comenzado preparando unas slides para la presentación que tenía que realizar a las 12:00 sobre &#8220;Infrastructura y servicios de firma digital&#8221;. La verdad es que ha sido genial ver como ha venido un montón de gente de la empresa, [...]]]></description>
			<content:encoded><![CDATA[<p>Tras la vuelta de nuevo al panel para ver el estado de las tareas, hoy he comenzado preparando unas slides para la presentación que tenía que realizar a las 12:00 sobre &#8220;Infrastructura y servicios de firma digital&#8221;.</p>
<p>La verdad es que ha sido genial ver como ha venido un montón de gente de la empresa, y no sólo la gente del propio grupo de desarrollo. La sesión ha servido para dar un repaso al funcionamiento de una autoridad certificadora, algunos de los servicios que ofrece (OCSP/TSA) y el uso aplicado de los procesos de firma digital tanto en herramientas existentes como OpenOffice o Acrobat Reader, como su implementación en aplicaciones web con <a href="http://universitatjaumei.jira.com/browse/CRYPTOAPPLET" target="_blank">CryptoApplet</a>.</p>
<p>Sinceramente, lo he pasado genial, ya que estas cosas me encantan <img src='http://xml-utils.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Tras la presentación, me he unido a <a href="http://twitter.com/jjballano" target="_blank">@jjballano</a> para comenzar una nueva tarea que tenía asignada y poder ver así un poco más en detalle el entramado de tests de la aplicación.</p>
<p>Hemos ido avanzando, pero la segunda parte ha quedado pendiente para el día siguiente.</p>
<p>Al final de la jornada, hemos decidido hacer una visita al <a href="http://betabeers.com/" target="_blank">Betabeers</a>, donde parecía que podríamos encontrar una interesante conversación sobre Desarrollo móvil y JavaScript, acompañada de unas <a href="http://betabeers.com/presentaciones/presentaciones-del-28-julio-en-betabeers/" target="_blank">presentaciones de nuevos proyectos</a>. </p>
<p>Al final nos hemos quedado poco rato, pero eso sí, hemos tenido una conversación muy intersante sobre JavaScript con uno de los valores en alza de estas semanas <a href="http://twitter.com/pasku1" target="_blank">@pasku1</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://xml-utils.com/2011/07/30/desksurfingday-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DeskSurfing@Day 2</title>
		<link>http://xml-utils.com/2011/07/27/desksurfingday-2/</link>
		<comments>http://xml-utils.com/2011/07/27/desksurfingday-2/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 21:57:59 +0000</pubDate>
		<dc:creator>borillo</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[All]]></category>
		<category><![CDATA[Firma digital]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[UJI]]></category>

		<guid isPermaLink="false">http://xml-utils.com/?p=158</guid>
		<description><![CDATA[Segundo día en IPSA: Testing day. El día de hoy ha comenzado con la habitual reunión diaria frente al panel para ver en qué tareas comenzaba a trabajar el equipo. Después del reparto, me he unido a @AlfredoCasado para comenzar una de las historias de usuario que prometía dar guerra. Aunque era una historia de [...]]]></description>
			<content:encoded><![CDATA[<p>Segundo día en <a href="http://www.ipsa.es" target="_blank">IPSA</a>: Testing day.</p>
<p>El día de hoy ha comenzado con la habitual reunión diaria frente al panel para ver en qué tareas comenzaba a trabajar el equipo. Después del reparto, me he unido a <a href="http://twitter.com/AlfredoCasado" target="_blank">@AlfredoCasado</a> para comenzar una de las historias de usuario que prometía dar guerra.</p>
<p>Aunque era una historia de usuario bastante delicada al afectar partes centrales del producto, es un lujo ver cuando una buena base de tests hacen que todo el trabajo se limite a ir haciendo pequeños ajustes, arreglar tests y finalmente poder añadir la nueva funcionalidad teniendo todo el sistema de nuevo operativo.</p>
<p>Durante la implementación de esta historia de usuario he podido ahondar un poco más en conceptos como los <a href="http://www.junit.org/node/580" target="_blank">Rules de jUnit</a>, el uso de builders para la inicialización de los datos o las mejoras de expresividada en los asserts con <a href="http://joe.truemesh.com/blog/000511.html" target="_blank">assertThat</a> y <a href="http://code.google.com/p/hamcrest/" target="_blank">Harmcrest</a>.</p>
<p>No ha faltado la visión divertida, a la vez que instructiva de <a href="http://twitter.com/AlfredoCasado" target="_blank">@AlfredoCasado</a> en muchos aspectos del desarrollo, sobretodo en las comparaciones de Google Guice/Spring, JDBC/JPA y otras muchas <img src='http://xml-utils.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Al final ha sido un día muy productivo y casi casi hemos completado la historia asignada, con lo que mañana toca afinar unos pequeños detalles y listo.</p>
<p>Adicionalmente, hemos decidido hacer mañana una pequeña presentación a todo el equipo sobre temas de firma. Así que durante una hora intentaré darles una visión sobre los distintos enfoques que se pueden seguir, formatos existentes y herramientas disponibles como <a href="http://universitatjaumei.jira.com/browse/CRYPTOAPPLET" target="_blank">CryptoApplet</a>. Espero que sirva para dar a la gente de <a href="http://www.ipsa.es" target="_blank">IPSA</a> una buena impresión de lo que es un <a href="http://desk-surfing.org/" target="_blank">DeskSurfing</a> &#8230; </p>
<p>Eso es todo por hoy. Mañana más &#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://xml-utils.com/2011/07/27/desksurfingday-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Consultas SQL type-safe sencillas para JPA con QueryDSL</title>
		<link>http://xml-utils.com/2011/03/26/consultas-sql-type-safe-sencillas-para-jpa-con-querydsl/</link>
		<comments>http://xml-utils.com/2011/03/26/consultas-sql-type-safe-sencillas-para-jpa-con-querydsl/#comments</comments>
		<pubDate>Sat, 26 Mar 2011 20:21:53 +0000</pubDate>
		<dc:creator>borillo</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://xml-utils.com/?p=122</guid>
		<description><![CDATA[Desde hace algún tiempo, estaba cuestionándome la forma en que mis DAO realizaban las consultas a base de datos haciendo uso de mis entidades JPA (clases con anotaciones @Entity). Inicialmente, opté por escribir las consultas en texto utilizando el lenguaje JPQL (Java Persistence Query Language). Esta me pareció una primera aproximación bastante sencilla, legible y [...]]]></description>
			<content:encoded><![CDATA[<p>Desde hace algún tiempo, estaba cuestionándome la forma en que mis <a href="http://www.codefutures.com/products/firestorm/benefits/" target="_blank">DAO</a> realizaban las consultas a base de datos haciendo uso de mis entidades JPA (clases con anotaciones @Entity).</p>
<p>Inicialmente, opté por escribir las consultas en texto utilizando el lenguaje <a href="http://en.wikipedia.org/wiki/Java_Persistence_Query_Language" target="_blank">JPQL</a> (Java Persistence Query Language). Esta me pareció una primera aproximación bastante sencilla, legible y rápida de realizar las consultas.</p>
<p>Como uso Spring Framework en mis desarrollos y suelo apoyarme en el JpaTemplate, mis consultas quedaban de la siguiente forma:</p>
<p><code>List<Empleado> listaEmpleados = jpaTemplate.find("from Empleado e where e.id = " + empleadoId);</code></p>
<p>Los problemas de utilizar esta sintaxis, aparecen rápidamente. El primero puede ser la seguridad, ya que me pueden inyectar código SQL y modificar el comportamiento de mis consultas.</p>
<p>Al margen de estas consideraciones, está el problema de que cuando comienzo a concatenar criterios, construir la cadena final que exprese la consulta a ejecutar se vuelve un proceso bastante complicado y muy propenso a errores.</p>
<p>Existen algunas maneras de evitar concatenar los valores de los filtros utilizando por ejemplo la clase MessageFormat de Java:</p>
<p><code>MessageFormat.format("from Empleado e where e.id = {0}", empleadoId);</code></p>
<p>O también la posibilidad de realizar las llamadas mediante &#8220;named params&#8221;:</p>
<p><code>Map<String, String> params = new HashMap<String, String>();<br />
params.put("empleadoId", empleadoId);<br />
jpaTemplate.findByNamedParams("from Empleado where e.id = :empleadoId", params);</code></p>
<p>Estas construcciones previenen la inyección de código SQL, pero seguimos teniendo el problema de que cualquier fallo que tengamos al codificar las consultas SQL, no se verá hasta que ejecutemos la consulta.</p>
<p>Está claro que deberíamos implementar tests que garanticen el correcto funcionamiento de nuestra capa de persistencia, pero sería deseable que este tipo de errores de codificación se pudieran detectar de forma más temprana.</p>
<p>Una de las soluciones al respecto es utilizar la <a href="http://www.altuure.com/2010/09/23/jpa-criteria-api-by-samples-part-i/" target="_blank">Criteria API</a> que tenemos disponible en JPA 2. Con esta API podemos construir las consultas de forma programática y evitar errores.</p>
<p>Básicamente, el uso de la Criteria API tiene el problema de que es un poco enrevesada de utilizar, de forma que las consultas producidas quedan muy poco legibles.</p>
<p>Ejemplo de consulta con la Criteria API:</p>
<p><code>CriteriaQuery query = builder.createQuery();<br />
Root<Person> men = query.from(Person.class);<br />
Root<Person> women = query.from(Person.class);<br />
Predicate menRestriction = builder.and(<br />
        builder.equal(men.get(Person_.gender), Gender.MALE),<br />
        builder.equal(men.get(Person_.relationshipStatus),<br />
        RelationshipStatus.SINGLE));<br />
Predicate womenRestriction = builder.and(<br />
        builder.equal( women.get(Person_.gender), Gender.FEMALE),<br />
        builder.equal( women.get(Person_.relationshipStatus),<br />
       RelationshipStatus.SINGLE));<br />
query.where(builder.and(menRestriction, womenRestriction));<br />
</code></p>
<p>Como posible solución a estos escenarios, aparece <a href="http://www.querydsl.com/" target="_blank">QueryDSL</a>. <a href="http://www.querydsl.com/" target="_blank">QueryDSL</a> nos ofrece una sintaxis mucho más flexible y natural, siendo necesaria la generación de una serie de clases a partir de nuestras entidades JPA mediante el uso de APT (Annotation Processing Tool).</p>
<p>Esta generación es posible realizarla de forma automática mediante <a href="http://blog.mysema.com/2010/07/querying-hibernate-with-querydsl.html" target="_blank">Ant o Maven</a>.</p>
<p>En defintiva, que <a href="http://www.querydsl.com/" target="_blank">QueryDSL</a> procesará todas las clases que tengamos con anotaciones del tipo @Entity, y producirá un nuevo conjunto de clases que permitirán construir consultas de una manera muy simple y semántica.</p>
<p>Con <a href="http://www.querydsl.com/" target="_blank">QueryDSL</a>, la consulta anterior quedaría como:</p>
<p><code>JPAQuery query = new JPAQuery(em);<br />
    QPerson men = new QPerson("men");<br />
    QPerson women = new QPerson("women");<br />
    query.from(men, women).where(<br />
          men.gender.eq(Gender.MALE),<br />
          men.relationshipStatus.eq(RelationshipStatsu.SINGLE),<br />
          women.gender.eq(Gender.FEMALE),<br />
          women.relationshipStatsu.eq(RelationshipStatus.SINGLE));<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://xml-utils.com/2011/03/26/consultas-sql-type-safe-sencillas-para-jpa-con-querydsl/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>El camino hacia una universidad ágil</title>
		<link>http://xml-utils.com/2011/01/10/el-camino-hacia-una-universidad-agil/</link>
		<comments>http://xml-utils.com/2011/01/10/el-camino-hacia-una-universidad-agil/#comments</comments>
		<pubDate>Sun, 09 Jan 2011 22:57:25 +0000</pubDate>
		<dc:creator>borillo</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[All]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://xml-utils.com/?p=96</guid>
		<description><![CDATA[Desde el pasado septiembre de 2010, nos planeamos un reto en la Universitat Jaume I de Castellón: Comenzar la transformación dentro de una administración pública, de un equipo de desarrollo clásico a un equipo ágil. El objetivo es bien sencillo a la par que complicado de conseguir. Se trata de comenzar desde cero, cuestionarse la [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify;">
Desde el pasado septiembre de 2010, nos planeamos un reto en la <a href="http://www.uji.es" target="_blank">Universitat Jaume I</a> de Castellón: Comenzar la transformación dentro de una administración pública, de un equipo de desarrollo clásico a un equipo ágil.
</p>
<p><img src="http://xml-utils.com/wp-content/uploads/2011/01/p.png" width="189" height="62" align="right" style="margin-left:15px; margin-bottom:15px;" /></p>
<p style="text-align:justify;">
El objetivo es bien sencillo a la par que complicado de conseguir. Se trata de comenzar desde cero, cuestionarse la forma de trabajo de los últimos años y ver como mejorarla con el fin de profesionalizar el desarrollo dentro de un ámbito en el que, hasta hace muy poco, parecía impensable una transformación de este tipo.
</p>
<p style="text-align:justify;">
Algunos estereotipos no han jugado precisamente a nuestro favor. La idea de funcionarios formando parte de un equipo ágil gestionado con <a href="http://www.scrumalliance.org/" target="_blank">Scrum</a> y produciendo software de calidad parece una utopía para muchos, pero con el esfuerzo de un conjunto de profesionales con nuevas metas y motivaciones, todo parece posible.
</p>
<p style="text-align:justify;">
De esta forma, con mucha ilusión y con la motivación de poder ser partícipes de un cambio organizativo, tecnológico y de mejora en la calidad de los productos elaborados, comenzó la andadura de la UJI en el mundo ágil.
</p>
<p style="text-align:justify;">
Antes de empezar, no faltó la gran pregunta que dirigiría las primeras acciones planteadas. ¿Cómo se puede hacer esto en una administración pública?
</p>
<p style="text-align:justify;">
En esta entrada voy a intentar responderla con el fin de compartir nuestra experiencia y nuestras inquietudes <img src='http://xml-utils.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</p>
<p style="text-align:justify;">
El cambio que plateamos presenta nuevos retos a nuestros desarrolladores, así que la primera acción sería replantearnos el plan de formación del 2010/2011. Este nuevo plan de formación debería de dar soporte tanto al cambio metodológico como al puramente técnico, así que nuestra primera apuesta fue encaminada a aprender cómo las metodologías ágiles podían guiar nuestros pasos.
</p>
<p style="text-align:justify;">
Con el primer curso de formación en Scrum, nuestro equipo aprendió nuevas técnicas para dar la mayor relevacia posible al usuario, a planificar los ciclos de desarrollo y a estimar el trabajo a realizar. Una nueva forma de trabajar. Una forma de trabajar más adaptada a las necesidades del negocio. Una forma de trabajar centrada en obtener entregas de calidad, en tiempos menores y que realmente puedan satisfacer las necesidades de nuestros clientes.
</p>
<p><img src="http://xml-utils.com/wp-content/uploads/2011/01/169340254-300x179.jpg" width="300" height="179" align="left" style="margin-right:15px; margin-bottom:15px;" /></p>
<p style="text-align:justify;">
En este punto nos podríamos plantear ¿Porque elegir trabajar con metodologías ágiles? Pues por muchos motivos &#8230;
</p>
<ul>
<li>- Contamos con un equipo de desarrollo de un tamaño medio y que trabaja en múltiples proyectos de forma simultánea</li>
<li>- Nuestro cliente está muy cercano a nosotros (tanto que forma parte de nuestra organización: servicios de la propia universidad, departamentos, profesores o los propios alumnos).</li>
<li>- Los requisitos son cambiantes: Nuevas leyes, nuevos requisitos impuestos por el ministerio, etc.</li>
<li>- Nuestro cliente demanda software que funciona muy adaptado y personalizado a sus necesidades y cuyas funcionalidades básicas estén disponibles en el menor tiempo posible (entregas rápidas y frecuentes).</li>
</ul>
<p style="text-align:justify;">
En definitiva, un modelo productivo ágil parece que puede ayudarnos a cumplir con estos objetivos y a poder trabajar como un équipo más cohesionado. ¿Será así?
</p>
<p><img src="http://xml-utils.com/wp-content/uploads/2011/01/4972968809_85459489cb-300x179.jpg" width="300" height="179" align="right" style="margin-left:15px; margin-bottom:15px;" /></p>
<p style="text-align:justify;">
Para intentar responder a esta pregunta, el primer paso fue la creación de un pequeño grupo de personas que, robando unas horas al dia a dia, dedicarían parte de su esfuerzo diario a un proyecto piloto que permitiera completar un demostrativo basado en la tecnología elegida. Y es que nuestro cambio, también pasa por la adaptación tecnológica y la revisión tanto de nuestro entorno de desarrollo, como de los lenguajes y tecnologías a emplear.
</p>
<p style="text-align:justify;">
El problema inicial es el gran número de interrogantes planteados &#8230; ¿Qué lenguaje empleo como base de mis nuevos desarrollos? ¿Qué arquitectura planteo para mis aplicaciones? ¿Cómo diseño mi entorno para poder adaptarse al desarrollo ágil de software y a mis nuevos requisitos organizativos y de calidad?
</p>
<p style="text-align:justify;">
Para intentar contestarlos todos, no hay que perder de vista el conjunto de la organización y a donde queremos ir. El planteamiento a largo plazo siempre ha sido la elaboración de software que pudiera convertirse en software libre y ser adoptado por otras universidades, así que necesitamos generar productos que sean facilmente integrables en los entornos más habituales. Este punto, junto a la existencia previa en nuestra organización de servicios y APIs que hacen uso de Java (como el proyecto <a href="http://proyectostic.uji.es/pr/cryptoapplet/" target="_blank">CryptoApplet</a>), provocó la elección de este lenguaje como base para los desarrollos internos.
</p>
<p><img src="http://xml-utils.com/wp-content/uploads/2011/01/rest_up-300x161.png" width="300" height="161" align="right" style="margin-left:15px; margin-bottom:15px;" /></p>
<p style="text-align:justify;">
Otro punto importante es la interoperabilidad de nuestras aplicaciones y de los formatos que manejan. Esto se ve plasmado, en numerosas ocasiones, en la necesidad de exponer ciertas funcionalidades como servicios a otras aplicaciones desarrolladas por terceras partes (sistemas, departamentos, proyectos, terceros, etc). En definitiva, se trata de conseguir &#8220;volcar&#8221; todo nuestro conocimiento del negocio en un stack de servicios que permitan su explotación y que acaben constituyendo un API universitario. En este punto, las tecnologías <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer" target="_blank">REST</a> emergieron como una solución perfecta para nuestras necesidades.
</p>
<p style="text-align:justify;">
Con un API de estas características, el desarrollo de los interfaces de cliente pasa a ser un proceso que puede desarrollarse en paralelo de una forma desacoplada. Inicialmente se están desarrollando todos los interfaces gráficos con tecnologías de cliente rico a través de web utilizando ExtJS, pero igual de fácil puede ser el desarrollo de una aplicación con cualquier otra tecnología que acceda al API diseñado: Android, Flex, Swing, WPF, etc. Lo importante es que el API REST exponga de una forma controlada y encapsulada, el acceso a los servicios de gestión de nuestro ERP universitario.
</p>
<p><img src="http://xml-utils.com/wp-content/uploads/2011/01/gear-bevel-300x257.jpg" width="200"  align="left" style="margin-right:15px; margin-bottom:15px;" /></p>
<p style="text-align:justify;">
Por último sólo queda la revisión del entorno de desarrollo, otorgando importancia por igual tanto a la parte de gestión de historias de usuario, tareas, bugs, revisiones de código, etc (gestionado todo con <a href="http://www.atlassian.com/hosted/studio/" target="_blank">JIRA Studio</a>), como a la inherente al propio desarrollo compuesta por el repositorio de código (<a href="http://svnbook.red-bean.com/" target="_blank">Subversion</a>), el servidor de integración contínua (<a href="http://hudson-ci.org/" target="_blank">Hudson</a>), el de gestión de artefactos (<a href="http://maven.apache.org/" target="_blank">Maven</a> + <a href="http://nexus.sonatype.org/" target="_blank">Nexus</a>) o el de análisis estático del código (<a href="http://www.sonarsource.org/" target="_blank">Sonar</a>).
</p>
<p style="text-align:justify;">
Con todas las líneas tecnológicas definidas y un par de cursos de apoyo de Java y de REST con <a href="http://jersey.java.net/" target="_blank">Jersey</a>, comenzamos el desarrollo del proyecto piloto, y por supuesto, del primer sprint <img src='http://xml-utils.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />
</p>
<p style="text-align:justify;">
A partir de ese momento, la proridad del equipo de desarrollo del piloto se centra en completar las historias de usuario planificadas para el primer sprint y en diseminar el conocimiento adquirido al resto de desarrolladores que no participan de forma diaria en el proyecto. Para esto, se crean los viernes de &#8220;difusión de la palabra&#8221;. En estas sesiones de los viernes, el equipo piloto es el encargado de contar al resto de desarrolladores qué han aprendido esa semana y sentarse por parejas con el resto de desarrolladores para intentar aplicarlo de forma colaborativa a la base de código existente.
</p>
<p style="text-align:justify;">
De esta forma y en definitiva, si juntamos un equipo con ganas y motivación de afrontar un cambio, una metodología ágil como Scrum y una nueva plataforma tecnológica adaptada a los objetivos que se desean alcanzar, puede ser posible el más dificil todavia &#8230; Que el equipo de desarrollo de una universidad o, en general de cualquier administración pública, pueda recorrer el camino hacia la profesionalización de la mano del desarrollo ágil. Aunque mucho mucho queda por recorrer <img src='http://xml-utils.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://xml-utils.com/2011/01/10/el-camino-hacia-una-universidad-agil/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Máster en desarrollo web avanzado 2010/2011</title>
		<link>http://xml-utils.com/2010/11/15/master-en-desarrollo-web-avanzado-20102011/</link>
		<comments>http://xml-utils.com/2010/11/15/master-en-desarrollo-web-avanzado-20102011/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 16:40:25 +0000</pubDate>
		<dc:creator>borillo</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://xml-utils.com/?p=92</guid>
		<description><![CDATA[Con el fin de conocer más a fondo los nuevos entornos y tecnologías relacionadas con el desarrollo de aplicaciones Web, presentamos el &#8220;Máster online en desarrollo web avanzado&#8221; en la Universitat Jaume I de Castellón. En esta tercera edición prevista desde Noviembre del 2010 a Junio de 2011, se abordarán las siguientes temáticas: * Web [...]]]></description>
			<content:encoded><![CDATA[<p><img style="float: right; margin-left: 10px;" src="http://cursowebavanzado.uji.es/img/cdwa-anieto2k-2009.png"></p>
<p>Con el fin de conocer más a fondo los nuevos entornos y tecnologías relacionadas con el desarrollo de aplicaciones Web, presentamos el &#8220;Máster online en desarrollo web avanzado&#8221; en la Universitat Jaume I de Castellón.</p>
<p>En esta tercera edición prevista desde Noviembre del 2010 a Junio de 2011, se abordarán las siguientes temáticas:</p>
<p>    * Web 2.0: Conceptos e implicaciones<br />
    * Activos de información: Gestión, protección y control<br />
    * Herramientas y nuevos entornos de desarrollo: Wiki, Subversion, Eclipse, JIRA<br />
    * Tecnologías base de cliente: XHTML/XML, CSS, JavaScript, SVG en cuanto a las tecnologías base y algunos frameworks de cliente rico como Prototype, JQuery o ExtJS<br />
    * Tecnologías de servidor: PHP y Java<br />
    * Seguridad en entornos web<br />
    * Arquitecturas orientadas a servicios: SOA, Web Services, WSDL y REST</p>
<p>Para más información, se encuentra disponible la página del curso donde, además, se pueden ver algunos ejemplos descargables de los materiales proporcionados:</p>
<p><a href="http://cursowebavanzado.uji.es/" target="_blank">http://cursowebavanzado.uji.es/</a></p>
<p>Os esperamos!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://xml-utils.com/2010/11/15/master-en-desarrollo-web-avanzado-20102011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Disponible el vídeo de la charla sobre ExtJS y REST</title>
		<link>http://xml-utils.com/2010/11/07/disponible-el-video-de-la-charla-sobre-extjs-y-rest/</link>
		<comments>http://xml-utils.com/2010/11/07/disponible-el-video-de-la-charla-sobre-extjs-y-rest/#comments</comments>
		<pubDate>Sun, 07 Nov 2010 17:22:12 +0000</pubDate>
		<dc:creator>borillo</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Publicaciones]]></category>

		<guid isPermaLink="false">http://xml-utils.com/?p=90</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://player.vimeo.com/video/16306385?portrait=0" width="500" height="375" frameborder="0"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://xml-utils.com/2010/11/07/disponible-el-video-de-la-charla-sobre-extjs-y-rest/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taller sobre Arquitectura y diseño de un entorno de desarrollo</title>
		<link>http://xml-utils.com/2010/05/03/taller-sobre-arquitectura-y-diseno-de-un-entorno-de-desarrollo/</link>
		<comments>http://xml-utils.com/2010/05/03/taller-sobre-arquitectura-y-diseno-de-un-entorno-de-desarrollo/#comments</comments>
		<pubDate>Mon, 03 May 2010 16:13:47 +0000</pubDate>
		<dc:creator>borillo</dc:creator>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[All]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Publicaciones]]></category>

		<guid isPermaLink="false">http://xml-utils.com/?p=68</guid>
		<description><![CDATA[El pasado día 30 de Abril de 2010 tuve la oportunidad de impartir un pequeño taller sobre cómo diseñar, tanto humana como tecnológicamente, un entorno de desarrollo ágil. En él se ofrece una introducción a componentes que pueden completar el ecosistema de herramientas necesarias para conseguir un equipo altamente integrado y productivo. A continuación os [...]]]></description>
			<content:encoded><![CDATA[<p>El pasado día 30 de Abril de 2010 tuve la oportunidad de impartir un pequeño taller sobre cómo diseñar, tanto humana como tecnológicamente, un entorno de desarrollo ágil.</p>
<p>En él se ofrece una introducción a componentes que pueden completar el ecosistema de herramientas necesarias para conseguir un equipo altamente integrado y productivo.</p>
<p>A continuación os dejo las slides del taller por si son de vuestro interés:</p>
<p><object id="doc_358099550549266" name="doc_358099550549266" height="500" width="450" type="application/x-shockwave-flash" data="http://d1.scribdassets.com/ScribdViewer.swf" style="outline:none;" ><param name="movie" value="http://d1.scribdassets.com/ScribdViewer.swf"><param name="wmode" value="opaque"><param name="bgcolor" value="#ffffff"><param name="allowFullScreen" value="true"><param name="allowScriptAccess" value="always"><param name="FlashVars" value="document_id=30852569&#038;access_key=key-299hijxmvgrcy41qasjm&#038;page=1&#038;viewMode=slideshow"><embed id="doc_358099550549266" name="doc_358099550549266" src="http://d1.scribdassets.com/ScribdViewer.swf?document_id=30852569&#038;access_key=key-299hijxmvgrcy41qasjm&#038;page=1&#038;viewMode=slideshow" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="500" width="450" wmode="opaque" bgcolor="#ffffff"></embed></object>	</p>
]]></content:encoded>
			<wfw:commentRss>http://xml-utils.com/2010/05/03/taller-sobre-arquitectura-y-diseno-de-un-entorno-de-desarrollo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CryptoApplet en el Podcast 80 de JavaHispano sobre criptografía y firma digital</title>
		<link>http://xml-utils.com/2010/04/06/cryptoapplet-en-el-podcast-80-de-javahispano-sobre-criptografia-y-firma-digital/</link>
		<comments>http://xml-utils.com/2010/04/06/cryptoapplet-en-el-podcast-80-de-javahispano-sobre-criptografia-y-firma-digital/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 11:06:25 +0000</pubDate>
		<dc:creator>borillo</dc:creator>
				<category><![CDATA[All]]></category>
		<category><![CDATA[Firma digital]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Publicaciones]]></category>

		<guid isPermaLink="false">http://xml-utils.com/?p=58</guid>
		<description><![CDATA[Ya está disponible la entrevista que nos hicieron la gente de JavaHispano sobre criptografía y firma digital. En ella, a parte de introducir una serie de conceptos básicos acerca de qué es y para qué sirve la criptografía y la firma digital, también tuvimos la ocasión de introducir nuestro proyecto CryptoApplet. CryptoApplet es un applet [...]]]></description>
			<content:encoded><![CDATA[<p>Ya está disponible la entrevista que nos hicieron la gente de <a href="http://www.javahispano.org" target="_blank">JavaHispano</a> sobre <a href="http://www.javahispano.org/contenidos/es/javahispano_podcast__080__criptografia_y_firma_digital/" target="_blank">criptografía y firma digital</a>.</p>
<p>En ella, a parte de introducir una serie de conceptos básicos acerca de qué es y para qué sirve la criptografía y la firma digital, también tuvimos la ocasión de introducir nuestro proyecto <a href="http://proyectostic.uji.es/pr/cryptoapplet/" target="_blank">CryptoApplet</a>.</p>
<p><a href="http://proyectostic.uji.es/pr/cryptoapplet/" target="_blank">CryptoApplet</a> es un applet de firma digital multiformato, liberado bajo licencia GPL por la <a href="http://www.uji.es/" target="_blank">Universitat Jaume I de Castellón</a>.</p>
<p>Muchas gracias a Jorge Rubira por contar con nosotros y por la oportunidad de pasar un buen rato hablando de tecnología.</p>
]]></content:encoded>
			<wfw:commentRss>http://xml-utils.com/2010/04/06/cryptoapplet-en-el-podcast-80-de-javahispano-sobre-criptografia-y-firma-digital/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

