<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2144613129989539839</id><updated>2024-11-01T09:44:58.905+01:00</updated><category term="Java"/><category term="programacion"/><category term="web"/><category term="maven"/><category term="BBDD"/><category term="GWT"/><category term="Hibernate"/><category term="Ibatis"/><category term="Persistencia"/><category term="Practical Solutions"/><category term="String"/><category term="clousures"/><category term="nube"/><category term="tecnologia"/><title type='text'>Codecriticon</title><subtitle type='html'>Blog Independiente de Programadores DECANTADOS</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://codecriticon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://codecriticon.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2144613129989539839.post-2450765071589803011</id><published>2011-10-19T14:28:00.006+02:00</published><updated>2011-10-20T22:21:24.363+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="BBDD"/><category scheme="http://www.blogger.com/atom/ns#" term="Hibernate"/><category scheme="http://www.blogger.com/atom/ns#" term="Ibatis"/><category scheme="http://www.blogger.com/atom/ns#" term="Persistencia"/><title type='text'>Frameworks de persistencia.Diferencias (I)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
Existen varios frameworks de persistencia como Hibernate, Ibatis, OpenJPA, etc... pero hoy voy a tratar las principales direfencias entre los dos primeros.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Antes de nada aclarar que un framework de persistencia es un marco de trabajo que se situa entre la logica de negocio y la capa de base de datos, abstrayendo uno del otro.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Comencemos por Hibernate.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;a href=&quot;http://www.hibernate.org/&quot; style=&quot;font-weight: bold;&quot;&gt;Hibernate&lt;/a&gt; es una herramienta &lt;a href=&quot;http://es.wikipedia.org/wiki/Mapeo_objeto-relacional&quot;&gt;ORM&lt;/a&gt; que facilita el mapeo de los atributos de una base de datos relacional con el modelo de datos de la aplicación.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Este mapeo se hace mediante archivos XML o anotaciones en los beans.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Tambien ofrece la posibilidad de utilizar un lenguaje de consulta de datos &lt;span style=&quot;font-weight: bold;&quot;&gt;HQL&lt;/span&gt; (Hibernate Query Lenguage).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por su parte, &lt;a href=&quot;http://ibatis.apache.org/&quot; style=&quot;font-weight: bold;&quot;&gt;Ibatis&lt;/a&gt; , asocia los beans del modelo de la aplicación con sentencias &lt;span style=&quot;font-weight: bold;&quot;&gt;SQL&lt;/span&gt; contenidos en ficheros XML.&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;span style=&quot;color: #666666; font-size: 130%; font-style: italic;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Veamos sus diferencias&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Entre sus diferencias principales destaca que Hibernate es ORM e Ibatis no lo es, basicamente por que Ibatis no hace el mapeo directo de los atributos de la base de datos con los beans del modelo de datos e Hibernate es plenamente capaz de hacerlo. Ibatis necesita que hagamos una sentencia SQL para la relacion entre ambas capas.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Debido a esto mismo, Ibatis genera menos problemas de funcionamiento o desarrollo ya que siempre sabes que es lo que se está lanzando a la base de datos.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Es cierto que Hibernate facilita el desarrollo al no tener por que tener conocimiento alguno acerca de SQL, pero el no conocer lo que se hace de una manera tan clara como en Ibatis, lo desaconseja para desarrollos en los que la definición del modelo de datos está ya definido o si las relaciones en el modelo de datos van a ser complejas.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Otra diferencia, en este caso, mas positiva para Hibernate es que al utilizar su propio lenguage de consulta de datos, lo convierte en multimotor de base de datos.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Ibatis por su parte, soporta el cacheado de consultas incluso en distribuido para entornos con contenedores en cluster.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por otro lado Ibatis consta con soporte para procedimientos almacenados e Hibernate solo a partir de la version 3.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En definitiva, son cosas parecidas, con un resultado similar, sin embargo, Hibernate podemos decir que sigue mas orientado a la filosofía basica de los frameworks, ya que nos separa mas esas capas permitiendo que se encargue el mismo de hacer las consultas e Ibatis hace que tengas que &quot;definir&quot; tu mismo el enlace, esto hace que se tenga mucho mas control sobre lo que estamos haciendo, pero nos separa de esa abstraccion de los framworks MVC.&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&amp;lt;\O,_,O/&amp;gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codecriticon.blogspot.com/feeds/2450765071589803011/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://codecriticon.blogspot.com/2011/10/diferencias-entre-frameworks-de.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/2450765071589803011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/2450765071589803011'/><link rel='alternate' type='text/html' href='http://codecriticon.blogspot.com/2011/10/diferencias-entre-frameworks-de.html' title='Frameworks de persistencia.Diferencias (I)'/><author><name>Ruben Rodriguez</name><uri>http://www.blogger.com/profile/10504178484711712587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhTaLVpZB5fqS4SJQMN_wpMePeAQmXGS1UIEABXv57_lE6LqQMtC7uwTvzzB7xvp7BYt5Oa8vhnr0_LHuc5TT1MNC2Uzd5e-4O1IYTkVRxK0AZbjkNHHP6pqG5aW4NZA/s220/1259602343764.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144613129989539839.post-5916338281661112866</id><published>2011-10-19T10:30:00.002+02:00</published><updated>2011-10-20T22:19:19.025+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="nube"/><category scheme="http://www.blogger.com/atom/ns#" term="tecnologia"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>La Nube y lo cerca que nos queda.</title><content type='html'>&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
Cuántas veces hemos hablar de este concepto relativamente nuevo y cuantas de nosotros entendemos la nube como una vuelta de turca a lo que ya hacíamos en la web 2.0. Una “nueva” forma de trabajar, un nuevo concepto para el desarrollo, la productividad, ocio y relaciones por&amp;nbsp;Internet. Pero cuánto hay de verdad en el apelativo “nuevo”. &amp;nbsp;Presentando una serie de servicios “en la nube” veremos cuánto hay de cierto en esta aseveración.&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
Las ventajas del concepto “en la nube” son de todos conocidas y evidentes a cualquiera. Como mas importante sobre todas las demás, cabe destacar la portabilidad de los datos. Esa posibilidad de recupera cualquier información desde prácticamente cualquier maquina, ordenadores públicos, teléfonos móviles, tablet, TV, etc…. , evidentemente hay otras ventajas. A citar entre ellas, la liberación de espacio en nuestro ordenadores, la facilitación para trabajar de forma colaborativa. Evidentemente hay una serie de desventajas o por lo menos una serie de dudas que siempre nos rondan cuando utilizamos estos servicios. La más destacable es la privacidad. ¿Cuánto de nuestra información está segura en la nube?&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;Correos Electrónicos&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
De todas las funcionalidades que nuestros ordenadores pueden realizar, posiblemente la que más importancia tenga en todos los ámbitos (laboral, ocio, social…) sea el correo electrónico y en este área “la nube” tiene un extenso camino ya recorrido. &amp;nbsp;Servicios como &amp;nbsp;&lt;b&gt;Windows Live Hotmail, Yahoo! Mail, Gmail... &lt;/b&gt;son veteranos, con años de vida, mejora y aumento de capacidad. Con este concepto las empresas responsables de estos servicios han dado en el clavo. La cantidad de correos que podemos recibir, la gestión de estos correos, la sincronizad que necesitamos dado el alto número de dispositivos que tenemos y la facilidad para acceder, sin configurar engorrosas cuentas, a todo nuestro correo. Hacen de este servicio algo, hoy en día, imprescindible.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;Gestión de archivos.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
La gestión de nuestros documentos es, de una forma subyacente, una función básica en nuestra vida informática. Ordenados o desordenados guardamos mucha información en nuestras maquinas, la compartimos, colaboramos en su creación y edición. Era necesario y el concepto en la nube ha cumplido con lo prometido así han surgido algunos servicios (&lt;b&gt;Droxbop&lt;/b&gt;) que nos permiten compartir documentos de forma sencilla e intuitiva, hasta llegar a la utilización de estos servicios como algo más dentro de nuestras maquinas en forma de carpeta sincronizada o cualquier otra forma, un servicio que nos proporciona la portabilidad de los &amp;nbsp;documentos &amp;nbsp;que nos interesan.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;Vida Social y Comunicaciones.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
Debemos rendirnos a la evidencia, pocos son los que resisten sin una o todos las redes sociales (&lt;b&gt;Facebook, Twitter&lt;/b&gt;,…). Las ventajas son incuestionables en cuanto a muchas aéreas. Difusión más rápida, comunicación instantánea,…&amp;nbsp; es simplemente un apartado mas de nuestra vida, algo que mirar después de leer tus correos. Si posiblemente estas redes sociales se han centrado más en la vida personal de los usuarios, aunque no faltan las redes sociales laborales (&lt;b&gt;Linkedin&lt;/b&gt;, etc…), no ocurre asi con servicios de mensajería instantánea. Conocidos servicios de mensajería (&lt;b&gt;Google Talk, Skype&lt;/b&gt;,…) son utilizados a partes iguales por empresas y particulares, todo ello “en la nube”, sin problemas de espacio, servidores o configuraciones engorrosas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;Otros servicios.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
Existen otra gran cantidad de servicios que se centran en otras aéreas de suma importancia y así gestionan documentos, agenda, calendario, multimedia, juegos, etc… y muchos de ellos son referencia para todos (&lt;b&gt;Spotify,&lt;/b&gt;&lt;b&gt; iTunes Match, &lt;/b&gt;&lt;b&gt;Google Music&lt;/b&gt;,….). El mayor auge y a la vez la mayor de los éxitos es la aparición de los “market”. Estos servicios de venta de aplicaciones a sin licencias simples y los precios excesivos, nos permiten tener mucha más información a dos click. &lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;El futuro&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot; style=&quot;text-align: justify;&quot;&gt;
&lt;b&gt;Google&lt;/b&gt; lo tiene claro o esos nos gustaría pensar. &lt;b&gt;Chrome OS &lt;/b&gt;el sistema operativo en la red es su apuesta, en cambio otras empresas siguen confiando en sus sistemas operativos locales, aligerándolos y haciéndolos mas rápidos moviendo sus aplicaciones a la nube.&lt;o:p&gt;&lt;/o:p&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codecriticon.blogspot.com/feeds/5916338281661112866/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://codecriticon.blogspot.com/2011/10/la-nube-y-lo-cerca-que-nos-queda.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/5916338281661112866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/5916338281661112866'/><link rel='alternate' type='text/html' href='http://codecriticon.blogspot.com/2011/10/la-nube-y-lo-cerca-que-nos-queda.html' title='La Nube y lo cerca que nos queda.'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10574562115441617910</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144613129989539839.post-4822257800188077471</id><published>2011-10-18T16:33:00.000+02:00</published><updated>2011-10-20T22:19:08.781+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="maven"/><category scheme="http://www.blogger.com/atom/ns#" term="programacion"/><title type='text'>Ejecutable con Maven (II)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
La continuación al post anterior se centra en la formación de una estructura de archivos, que contendrá el archivo empaquetado (.jar) y una carpeta con las librerías necesarias para el proyecto. Este proceso es más laborioso en una primera instancia, porque debemos configurar los plugin de maven para hacer diferentes procesos.&lt;/div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;&lt;i&gt;Empaquetar un ejecutable con las librerías exterior.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Generar un jar con el manifiesto necesario; esto es, que indique la clase con el punto de entrada main y las dependencias y  obtener todos los jars de las dependencias, directas y transitivas, en un directorio de salida aparte (lib, por ejemplo).&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Por lo tanto teniendo generado el proyecto generado, debemos asumir que están referenciadas todas las dependencias del proyecto y creado el punto de entrada de la aplicación y en ese caso incluiremos en el archivo pom.xml el siguiente código: &lt;/div&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;properties&amp;gt;
&amp;lt;install-dir&amp;gt;${build.directory}&amp;lt;/install-dir&amp;gt;
&amp;lt;/properties&amp;gt;
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Vamos lo primero a identificar con esta orden la carpeta donde se compilar el ejecutable, simplemente por generar todos los archivos en una carpeta conjunta y con cierto orden. &lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre;&quot;&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;artifactId&amp;gt;maven-jar-plugin&amp;lt;/artifactId&amp;gt;
&amp;lt;version&amp;gt;2.2&amp;lt;/version&amp;gt;
&amp;lt;configuration&amp;gt;
&amp;lt;archive&amp;gt;
&amp;lt;manifest&amp;gt;
&amp;lt;mainClass&amp;gt;com.ClaseMain&amp;lt;/mainClass&amp;gt;
&amp;lt;addClasspath&amp;gt;true&amp;lt;/addClasspath&amp;gt;
&amp;lt;classpathPrefix&amp;gt;lib&amp;lt;/classpathPrefix&amp;gt;
&amp;lt;/manifest&amp;gt;
&amp;lt;/archive&amp;gt;
&amp;lt;/configuration&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
El primer plugin lo configuramos para que genere el ejecutable, con su punto de entra y le indicamos que las librerías se encontraran en la carpeta “lib”, este valor, como otros se puede parametrizar en el tag  properties.&lt;/div&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: monospace; white-space: pre;&quot;&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;artifactid&amp;gt;maven-dependency-plugin&amp;lt;/artifactid&amp;gt;
&amp;lt;version&amp;gt;2.0&amp;lt;/version&amp;gt;
&amp;lt;executions&amp;gt;
&amp;lt;execution&amp;gt;
&amp;lt;id&amp;gt;copy-dependencies&amp;lt;/id&amp;gt;
&amp;lt;phase&amp;gt;install&amp;lt;/phase&amp;gt;
&amp;lt;goals&amp;gt;
&amp;lt;goal&amp;gt;copy-dependencies&amp;lt;/goal&amp;gt;
&amp;lt;/goals&amp;gt;
&amp;lt;configuration&amp;gt;
&amp;lt;outputdirectory&amp;gt;${install-dir}/${artifactId}/lib&amp;lt;/outputdirectory&amp;gt;
&amp;lt;overwritereleases&amp;gt;false&amp;lt;/overwritereleases&amp;gt;
&amp;lt;overwritesnapshots&amp;gt;false&amp;lt;/overwritesnapshots&amp;gt;
&amp;lt;overwriteifnewer&amp;gt;true&amp;lt;/overwriteifnewer&amp;gt;
&amp;lt;/configuration&amp;gt;
&amp;lt;/execution&amp;gt;
&amp;lt;/executions&amp;gt;
&amp;lt;/plugin&amp;gt;
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
En el segundo plugin, vamos a realizar un install con una configuración específica indicándole que las dependencias deben guardarse en la ruta indicada.  Lanzaremos este proceso, utilizado el siguiente comando. &lt;/div&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;mvn install:install
&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Esto generara una carpeta con el nombre de la aplicación y dentro de ella el ejecutable y una carpeta “lib” con los archivos/librerías de la aplicación, solo queda copiar estos dos elementos y lanzar la aplicación.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codecriticon.blogspot.com/feeds/4822257800188077471/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://codecriticon.blogspot.com/2011/10/ejecutable-con-maven-ii.html#comment-form' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/4822257800188077471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/4822257800188077471'/><link rel='alternate' type='text/html' href='http://codecriticon.blogspot.com/2011/10/ejecutable-con-maven-ii.html' title='Ejecutable con Maven (II)'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10574562115441617910</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144613129989539839.post-165506374611653652</id><published>2011-10-18T14:35:00.024+02:00</published><updated>2011-10-20T22:18:56.847+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="GWT"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="Practical Solutions"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Como empaquetar GWT en un WAR</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Google Web Toolkit&lt;/span&gt;, es un framework de desarrollo web caracterizado por funcionar sin cambios en el codigo en todos los navegadores, o eso dice su publicidad...&lt;span style=&quot;font-weight: bold;&quot;&gt;(¬¬) &lt;/span&gt;.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La ultima versión del development kit esta disponible &lt;a href=&quot;http://google-web-toolkit.googlecode.com/files/gwt-2.4.0.zip&quot;&gt;aqui&lt;/a&gt;, por si quieres actualizarte a la última versión disponible, aunque lo más habitual para comenzar es descargar el plugin para utilizarlo en el IDE Eclipse (&lt;a href=&quot;http://code.google.com/intl/es-ES/eclipse/docs/download.html&quot;&gt;Eclipse Plugin+GWTSdk&lt;/a&gt;).&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Veamos como podemos empaquetar nuestro proyecto en un simple .WAR&lt;/div&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez generemos nuestro proyecto GWT, para esta entrada me he servido del propio ejemplo que se nos genera al crear un nuevo Web Application Project con Eclipse&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpITATSd3BAZB43zL8s05YSauE5zwbDxComKoPJZ6r03Pj-OAHLrsPoheKIJoQmA8hT4RAj2FzAtBMpIGZrHRa5PVcRN3cHXWNLxb6aJvQZKaVqPi71seSthRcvoy1KntfUDH2XwjCSOs/s1600/CriticonProject_inicio.bmp&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5664819650654918546&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpITATSd3BAZB43zL8s05YSauE5zwbDxComKoPJZ6r03Pj-OAHLrsPoheKIJoQmA8hT4RAj2FzAtBMpIGZrHRa5PVcRN3cHXWNLxb6aJvQZKaVqPi71seSthRcvoy1KntfUDH2XwjCSOs/s400/CriticonProject_inicio.bmp&quot; style=&quot;cursor: pointer; height: 241px; width: 400px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Como bien sabréis, lo que hace Google con nuestros javas de nuestro proyecto es generar numerosos documentos HTML y JS.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Es cierto que si queremos dejar la estructura generada tal cual en nuestro servidor de aplicaciones, funcionará sin problemas, aunque si vais a tener mas de un proyecto, a mi gusto, queda mucho mas limpio si lo empaquetamos dentro de un .war, por ejemplo.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Y como muchos os habreis dado cuenta, si pinchamos encima de nuestro proyecto GWT e intentamos exportarlo como .war, no nos encontrara el proyecto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Desconozco si se puede llegar a hacer esto mismo modificando algun parametro del web.xml o quizas añadiendo algun otro documento, es posible que existan más maneras de hacerlo, yo voy a mostrar una bastante sencilla.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
La idea es empaquetar la parte de los javas como si fueran un .JAR, asi conseguiremos una libreria que añadiremos dentro del .WAR, el cual contendrá las clases generadas de nuestro proyecto.&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnwsyNm3x1D_Sm7_52NaWaYA9wsqzocqoaW_i7nQtD6ZgzwThSC_F2H1E31b3hf40rZo8h_GFH0nrP95XjTWw4ei3SeivNXK2Ysazzuuif8pmBFvjz4Je2Sj8H282UJWMw6l-bC2dxEIU/s1600/Dibujo3.bmp&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; id=&quot;BLOGGER_PHOTO_ID_5664823337288914002&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnwsyNm3x1D_Sm7_52NaWaYA9wsqzocqoaW_i7nQtD6ZgzwThSC_F2H1E31b3hf40rZo8h_GFH0nrP95XjTWw4ei3SeivNXK2Ysazzuuif8pmBFvjz4Je2Sj8H282UJWMw6l-bC2dxEIU/s400/Dibujo3.bmp&quot; style=&quot;cursor: pointer; height: 400px; width: 344px;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Recordar empaquetar en el .JAR solamente lo que exista en el src del proyecto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Una vez hayamos generado el .JAR, lo dejaremos dentro de la carpeta /war/WEB-INF/lib&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
y lo añadiremos a nuestro buildPath.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
A continuación crearemos un antFile para que nos genere el .WAR&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&lt;project basedir=&quot;.&quot; default=&quot;default&quot; name=&quot;”CriticonProject”&quot;&gt;
&lt;target depends=&quot;buildwar,deploy&quot; name=&quot;default&quot;&gt;&lt;/target&gt;
&lt;target name=&quot;buildwar&quot;&gt;
&lt;war basedir=&quot;war&quot; destfile=&quot;CriticonProject.war&quot; webxml=&quot;war/WEB-INF/web.xml&quot;&gt;
&lt;exclude name=&quot;WEB-INF/**&quot;&gt;
&lt;webinf dir=&quot;war/WEB-INF/&quot;&gt;
&lt;include name=&quot;**/*.jar&quot;&gt;
&lt;/include&gt;&lt;/webinf&gt;&lt;/exclude&gt;
&lt;target name=&quot;deploy&quot;&gt;
&lt;copy file=&quot;CriticonProject.war&quot; todir=&quot;.&quot;&gt;
&lt;/copy&gt;&lt;/target&gt;
&lt;/war&gt;&lt;/target&gt;&lt;/project&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;wp_syntax&quot; style=&quot;text-align: left;&quot;&gt;
&lt;div class=&quot;code&quot;&gt;
&lt;pre class=&quot;xml&quot; face=&quot;monospace&quot;&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Este antFile, lo añadiremos a nuestro proyecto y ejecutaremos usando boton derecho sobre el xml que acabamos de crear, Run as --&amp;gt;Ant Build.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Asi conseguimos un .WAR con nuestro proyecto GWT.&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&amp;lt;\O,_,O/&amp;gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://codecriticon.blogspot.com/feeds/165506374611653652/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://codecriticon.blogspot.com/2011/10/como-empaquetar-gwt-en-un-war.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/165506374611653652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/165506374611653652'/><link rel='alternate' type='text/html' href='http://codecriticon.blogspot.com/2011/10/como-empaquetar-gwt-en-un-war.html' title='Como empaquetar GWT en un WAR'/><author><name>Ruben Rodriguez</name><uri>http://www.blogger.com/profile/10504178484711712587</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjhTaLVpZB5fqS4SJQMN_wpMePeAQmXGS1UIEABXv57_lE6LqQMtC7uwTvzzB7xvp7BYt5Oa8vhnr0_LHuc5TT1MNC2Uzd5e-4O1IYTkVRxK0AZbjkNHHP6pqG5aW4NZA/s220/1259602343764.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjpITATSd3BAZB43zL8s05YSauE5zwbDxComKoPJZ6r03Pj-OAHLrsPoheKIJoQmA8hT4RAj2FzAtBMpIGZrHRa5PVcRN3cHXWNLxb6aJvQZKaVqPi71seSthRcvoy1KntfUDH2XwjCSOs/s72-c/CriticonProject_inicio.bmp" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144613129989539839.post-4325612456216726273</id><published>2011-10-18T14:33:00.000+02:00</published><updated>2011-10-20T22:17:55.429+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="maven"/><category scheme="http://www.blogger.com/atom/ns#" term="programacion"/><title type='text'>Ejecutable con Maven (I)</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;
La generación de un paquete java ejecutable conlleva en muchos casos la utilización de paquetes. La diferencia entre radica en la forma de ordenar estas paquetes o librerías.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Queremos desempaquetar estos paquetes dentro del ejecutable y tener todas las clases disponibles dentro de un solo archivo, que nos permite portarlo a cualquier entorno, de una forma sencilla o por el contrario queremos tener las librerías ordenadas en una carpeta aparte y de esta forma tener más control sobre el proyecto.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Evidentemente la elección queda del lado del desarrollador, pero vamos a disgregar las dos formas de hacerlo utilizado la potente herramienta de gestión de proyectos &lt;b&gt;maven&lt;/b&gt;.&lt;/div&gt;
&lt;br /&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Arial,Helvetica,sans-serif; font-size: large;&quot;&gt;&lt;i&gt;Empaquetar un ejecutable con las librerías en su interior.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Teniendo generado el proyecto generado, debemos asumir que están referenciadas todas las dependencias del proyecto y creado el punto de entrada de la aplicación y en ese caso incluiremos en el archivo pom.xml el siguiente código:

&lt;/div&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;plugin&amp;gt;
 &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
 &amp;lt;artifactId&amp;gt;maven-assembly-plugin&amp;lt;/artifactId&amp;gt;
 &amp;lt;configuration&amp;gt;
  &amp;lt;archive&amp;gt;
   &amp;lt;manifest&amp;gt;
    &amp;lt;mainClass&amp;gt;myPackage.MyMainClass&amp;lt;/mainClass&amp;gt;
   &amp;lt;/manifest&amp;gt;
  &amp;lt;/archive&amp;gt;
  &amp;lt;descriptorRefs&amp;gt;
   &amp;lt;descriptorRef&amp;gt;jar-with-dependencies&amp;lt;/descriptorRef&amp;gt;
  &amp;lt;/descriptorRefs&amp;gt;
 &amp;lt;/configuration&amp;gt;
&amp;lt;/plugin&amp;gt;

&lt;/pre&gt;
Para empaquetar el proyecto debemos ejecutar el comando el comando assembly
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;mvn assembly:assembly&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Esto generara dos archivos empaquetados uno de ellos definido con las dependencias, solo nos queda ejecutar ese archivo y comprobar que la aplicación funciona correctamente.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codecriticon.blogspot.com/feeds/4325612456216726273/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://codecriticon.blogspot.com/2011/10/ejecutable-con-maven-i.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/4325612456216726273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/4325612456216726273'/><link rel='alternate' type='text/html' href='http://codecriticon.blogspot.com/2011/10/ejecutable-con-maven-i.html' title='Ejecutable con Maven (I)'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10574562115441617910</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144613129989539839.post-1107099010629915347</id><published>2011-10-17T15:05:00.000+02:00</published><updated>2011-10-20T22:16:55.223+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="clousures"/><category scheme="http://www.blogger.com/atom/ns#" term="Java"/><category scheme="http://www.blogger.com/atom/ns#" term="programacion"/><category scheme="http://www.blogger.com/atom/ns#" term="String"/><category scheme="http://www.blogger.com/atom/ns#" term="web"/><title type='text'>Java 7 una evolución lógica</title><content type='html'>&lt;div style=&quot;margin-bottom: 18pt; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #333333; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;El pasado mes de julio se publico después de 4 años desde su última actualización la nueva versión de &lt;b&gt;Java&lt;/b&gt;. Esta versión no solo se destina a depurar una serie de bug, sino a mejoras y cambios que generan una nueva revisión del antiguo, pero no extinto lenguaje de programación.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 18pt; text-align: justify;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: #333333; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Java 7&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #333333; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;, como ya he comentado no es solo una solución a los errores de otras versiones. Incluso me atrevería a decir que es una versión para alcanzar los nuevos estándares y así poder gestionar los nuevos de recursos que se disponen a día de hoy. Siendo así, &lt;b&gt;Oracle&lt;/b&gt; ha incluido nueva API para el sistema de archivos y un nuevo enfoque para el trabajo con varios núcleos. Además en esta versión se permite utilizar otros lenguajes, mejor gestión de recursos, más compatibilidades con los estándares y otras funcionalidades.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 15pt; margin: 0cm 0cm 12pt; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #333333; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Algunos de las implementaciones, mejoras o cambios que ha sufrido este lenguaje pueden resultar simples evoluciones que hace años este lenguaje debería haber ofrecido pero eso no cambia su importancia. Es el ejemplo del &lt;b&gt;proyecto Coin &lt;/b&gt;que simplifica el lenguaje de tareas que se realizan diariamente. Entre estas mejoras tenemos la posibilidad de hacer un “&lt;i&gt;switch”&lt;/i&gt; con tipos &lt;b&gt;String&lt;/b&gt;, gestionar recursos automáticamente, simplificar el uso de lista de parámetros o mejorar la gestión de excepciones.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 18pt; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #333333; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Oracle no ha cumplido el cupo de todos los programadores, posiblemente porque el numero de detractores de otras ideas es alto y necesitan más tiempo para limar los últimos detalles, así pues tendremos que esperar al &lt;b&gt;JSE8&lt;/b&gt; para ver otras mejoras, como el &lt;b&gt;proyecto Lambda&lt;/b&gt; o, dicho de otro modo, utilización de &lt;b&gt;clousures. &lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;margin-bottom: 18pt; text-align: justify;&quot;&gt;
&lt;span style=&quot;color: #333333; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;Personalmente voy a ponerme manos a la obra a “trastear” la nueva actualización.&lt;/span&gt;&lt;span style=&quot;color: #333333; font-family: &amp;quot;Helvetica&amp;quot;,&amp;quot;sans-serif&amp;quot;;&quot;&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://codecriticon.blogspot.com/feeds/1107099010629915347/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://codecriticon.blogspot.com/2011/10/java-7-una-evolucion-logica.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/1107099010629915347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144613129989539839/posts/default/1107099010629915347'/><link rel='alternate' type='text/html' href='http://codecriticon.blogspot.com/2011/10/java-7-una-evolucion-logica.html' title='Java 7 una evolución lógica'/><author><name>Anonymous</name><uri>http://www.blogger.com/profile/10574562115441617910</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>