<?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>Yo en el Universo &#187; java</title>
	<atom:link href="http://sixservix.com/blog/david/tag/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://sixservix.com/blog/david</link>
	<description>El blog de David Bonilla</description>
	<lastBuildDate>Fri, 24 Jun 2011 05:30:27 +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>21 días</title>
		<link>http://sixservix.com/blog/david/2010/11/05/21-dias/</link>
		<comments>http://sixservix.com/blog/david/2010/11/05/21-dias/#comments</comments>
		<pubDate>Fri, 05 Nov 2010 06:10:17 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[david]]></category>
		<category><![CDATA[tecnologías de la información]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[atlassian]]></category>
		<category><![CDATA[bitbucket]]></category>
		<category><![CDATA[care of me]]></category>
		<category><![CDATA[fernando alonso]]></category>
		<category><![CDATA[hipotecas]]></category>
		<category><![CDATA[ignite]]></category>
		<category><![CDATA[innova-g]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jira]]></category>
		<category><![CDATA[jobsket]]></category>
		<category><![CDATA[Linking Paths]]></category>
		<category><![CDATA[mercurial]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[pomodoro technique]]></category>
		<category><![CDATA[pomodoroworld]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[tobias mayer]]></category>
		<category><![CDATA[wiseri]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=4709</guid>
		<description><![CDATA[Durante 21 días he estado aislado del mundo ¿Qué ha pasado en todo este tiempo en el mundo en general y en el sector de la informática en particular?]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><img class="alignleft size-full wp-image-4711" style="border: 0pt none;margin-right: 10px" title="viajeeneltiempo" src="http://sixservix.com/blog/david/files/2010/11/viajeeneltiempo.jpg" alt="Viaje en el Tiempo" width="300" height="198" />Durante 21 días he vivido apartado de mi día a día. Dos de los principales motivos para elegir Nueva Zelanda como destino de <a href="http://sixservix.com/blog/david/2010/10/11/nueva-zelanda/" target="_blank">mi luna de miel</a> fueron las 13 horas de diferencia horaria y los 20.000 km de distancia hasta mi mesa de trabajo, dos factores que proporcionan el aislamiento del resto del mundo. Era algo que le debía a mi mujer y a mí mismo.</p>
<p style="text-align: justify">¿Y qué ha pasado durante estos 21 días? ¿Realmente ha ocurrido algo que merezca la pena? Cuando llegué a casa, me sentí como un <strong>viajero del tiempo venido del pasado</strong>. Utilizando los correos, twitter y alguna página web, he conseguido hacerme una idea de que ha sucedido durante mi viaje. Si tienes interés por saber qué es lo que más me llamó la atención como recién llegado, sigue leyendo. Es un artículo largo, pero ¿qué queréis? He estado 21 días callado.</p>
<h3><strong>EL MUNDO EN GENERAL</strong></h3>
<p style="text-align: justify"><strong>Salí de España con un Gobierno y, a la vuelta, me he encontrado con otro</strong>. Creo que, como siempre, ha habido acalorados debates entre partidarios y detractores, pero a mí -debe ser que no entiendo mucho de política- me parece que todo ha cambiado para seguir siendo lo mismo.</p>
<p style="text-align: justify">Hablando de cosas más serias, <strong>Fernando Alonso dio un golpe de mano al mundial de Fórmula 1</strong> gracias a su pericia y a la suerte. Lo curioso del caso es que, mucho antes de enterarme del resultado del Gran Premio de Korea, soñé que ocurría exactamente lo mismo. A lo mejor debo empezar a hacer más caso a mis sueños y perseguirlos&#8230;</p>
<p style="text-align: justify"><strong>El New York Times, dedicó a mi país <a href="http://www.nytimes.com/2010/10/28/world/europe/28spain.html" target="_blank">un articulazo</a> completo donde denunciaba el abuso que cometen los bancos con las hipotecas en España</strong>. No pueden entender los americanos como los bancos podían concedernos hipotecas con la casa como valor que asegure el préstamo y, en el caso de que no podamos pagarlo, tener derecho a venderla por la mitad del valor del préstamo -ojo, no de la casa- y obligarnos a pagar la otra mitad. Parece ser que, en Estados Unidos, si no puedes pagar tu hipoteca entregas las llaves de la casa y a empezar de nuevo. Tiene sentido. El banco se queda con lo que estimó como garantía suficiente para concederte el préstamo. El artículo me recordó lo bueno que es replantearse si las cosas deben ser como son o son como son porque lo hemos permitido.</p>
<h3><strong><img class="alignright size-full wp-image-4716" style="border: 0pt none;margin-left: 10px" title="maquinatiempo" src="http://sixservix.com/blog/david/files/2010/11/maquinatiempo.jpg" alt="Maquina del Tiempo" width="225" height="346" />LA INFORMÁTICA EN PARTICULAR</strong></h3>
<p style="text-align: justify">Parece ser que hemos vivido un APOCALIPSIS en el mundo del desarrollo.<strong> Apple ha anunciado que va a dejar de implementar por su cuenta las distintas especificaciones de Java</strong> y, <a href="http://www.javahispano.org/contenidos/es/apple_caracteriza_a_java_en_mac_os_como_deprecated/" target="_blank">según algunos</a>, eso quiere decir que todos los que disfrutamos de un Mac tenemos, o bien que cambiar de lenguaje de programación o bien tirar nuestros ordenadores.</p>
<p style="text-align: justify">Yo, por si acaso, voy a guardar el mío, no sea que a <strong>Oracle </strong>le dé por sacar JREs para Mac. Más que nada por la pereza de tener que cambiar el eslogan de <em>compile once run everywhere</em>. Digo yo que, ya que se ponen, a lo mejor proporcionan un JDK y todo. Si no lo hacen, que avisen. Me imagino que habrá muchas compañías dispuestas a disputarse el pastel que representan los desarrolladores java sobre plataforma Mac.</p>
<p style="text-align: justify">Importante el movimiento hacia la <em>oficialidad</em> y la <em>profesionalización</em> de <strong>Francesco Cirillo</strong> y su<strong> Técnica Pomodoro</strong> a través de <a href="http://www.pomodoroworld.com/" target="_blank">PomodoroWorld</a>. Ahora resulta que, para dar cursos <em>oficiales </em>de la técnica, tengo que pasar por caja y hacerme<em> Pomodoro Master</em> (no es broma) y luego <em>Pomodoro Trainer</em>. Espero que todo esto no acabe tan mal como el tema de las certificaciones y la <strong>Scrum Alliance</strong> que<a href="http://agileanarchy.wordpress.com/2010/10/12/the-scrum-compliance/" target="_blank"> ha denunciado Tobias Mayer</a>.</p>
<p style="text-align: justify">También tenemos <a href="http://blogs.atlassian.com/jira/2010/10/jira-42-faster-issue-tracking.html" target="_blank">nueva versión de JIRA</a> y que la gente de <strong>Atlassian</strong> ha salido de compras y <a href="http://techcrunch.com/2010/09/29/atlassian-buys-mercurial-project-hosting-site-bitbucket/" target="_blank">se ha hecho con <strong>Bitbucket</strong></a>, un <em>hosting</em> de proyectos gestionados con <strong>Mercurial</strong>. Cada vez avanzan más en su objetivo de proporcionar todas las herramientas que un grupo de desarrollo pueda necesitar. Cada vez cuesta más reconocer a los chicos que empezaron en un pequeño taller de Melbourne.</p>
<h3><strong>MI MUNDO EN ESPECIAL</strong></h3>
<p style="text-align: justify">En mi entorno más cercano también han ocurrido cosas. Compruebo con satisfacción que los amiguetes no paran y siguen haciendo cosas, motivándonos a los demás para que les sigamos. Los chavalotes de <strong>Linking Paths</strong> se curraron la interesante <a href="http://careof.me/" target="_blank">Care of me</a> en 48 horas. Las bestias pardas de <strong>Jobsket </strong>ganaron el <a href="http://www.slideshare.net/agestico/premios-innova-g2010" target="_blank">premio <strong>Innova-g </strong>a &#8220;Mejor desarrollo 2.0&#8243;</a> y seguro que no será el último. Y, encima&#8230; ¡bola extra! Por fin se desveló el destino del amigo <strong>Jorge Jiménez,</strong> más conocido como @<a href="http://twitter.com/semurat" target="_blank">semurat</a>: otro portal/aplicación de empleo llamado <strong>Wiseri</strong> ¿otro? NO, este promete ser &#8220;<a href="http://www.wiseri.com/en" target="_blank">algo más</a>&#8220;. Perfecto, está claro que, si alguna vez busco trabajo, tendré claro a qué puertas llamar primero :)</p>
<p style="text-align: justify">Más gente que hace cosas: como anunció un camarada <a href="http://sixservix.com/blog/david/2010/10/18/epopeya-oceanica/#IDComment105293370" target="_blank">en este mismo blog</a>, se confirma la celebración del <a href="http://www.aletic.es/imagenes/descargas/Tecnomedia/Ignite.pdf" target="_blank">primer Ignite en León</a>. Para los que no sepáis qué es eso de <strong>Ignite</strong>, deciros que <a href="http://sixservix.com/blog/david/2010/03/01/oreilly-ignite/" target="_blank">los madrileños no hemos sido capaces de organizar uno</a> y han tenido que venir desde León a enseñarnos cómo se hace, así que <em>kudos </em>para ellos.</p>
<p style="text-align: justify"><img class="alignleft size-full wp-image-4746" style="border: 0pt none;margin-right: 10px" title="maquinadeltiempo" src="http://sixservix.com/blog/david/files/2010/11/maquinadeltiempo.jpg" alt="Maquina del Tiempo" width="300" height="227" />También comprobé que soy realmente un tío importante. Al menos, lo suficiente como para que a un abogado alemán, <strong>Tobias Knieper,</strong> le merezca la pena escribirme un correo en el que me exige que retire una foto de salsa de chile, en concreto <a href="http://sixservix.com/blog/david/files/2010/07/chili-sauce.jpg" target="_blank"><strong>ésta</strong></a>, de uno de mis artículos sobre la antes mencionada <strong>Técnica Pomodoro</strong>. La verdad es que no recuerdo ni de donde saqué la foto, pero estoy seguro que no comprobé la licencia de la misma. En la vida se me hubiera ocurrido que a nadie le pudiera molestar que adornara un artículo sobre gestión de tiempo y productividad. No te preocupes Tobias, mañana mismo retiraré la foto.</p>
<p style="text-align: justify">Y por supuesto&#8230; <strong>entramos en producción</strong>. Después de siete años trabajando en <a href="http://sixservix.com/es/erps1.php" target="_blank">ERP S1</a> y unos  cuatro en <a href="http://sixservix.com/es/storetto.php" target="_blank">STORETTO</a>, hemos terminado el set completo de funcionalidades y lo hemos puesto en producción en todas las empresas del <strong>Grupo VARMA</strong>, al cual pertenecemos. Podríamos discutir si hubiéramos podido utilizar otras metodologías u otras tecnologías, pero no es el momento de eso, sino de mirar hacía atrás, comprobar todo lo que he aprendido en el camino y agradecer su esfuerzo y ayuda a todos los que me acompañaron. A los que están -un maravilloso atajo de <em>apandadores</em> de primer nivel- y a los que ya no están, pero de los que nunca nos olvidamos (<strong>David Gaviña, Alex <em>aka</em> Asertus, Ernesto Funes, Pablo Varasa, Luis Miguel de Sancho, Pepe, Mario</strong>&#8230; y muchos, muchos más). <strong>Gracias, muchas gracias</strong>.</p>
<h3>MI CABEZA EN SINGULAR</h3>
<p style="text-align: justify">Y por último, todo lo que ha pasado en mi cabezota. Hacía AÑOS que tenía ganas de hacer una pequeña pausa para reflexionar y he tenido que casarme e irme de luna de miel para conseguirlo.</p>
<p style="text-align: justify">Puede que sea porque me sienta <em>liberado</em> después de acabar lo que era mi responsabilidad directa en <strong>SIXSERVIX</strong> o por comenzar el proyecto más importante de mi vida, formar una familia con mi mujer, pero estoy seguro de que no soy la misma persona que era hace un mes.</p>
<p style="text-align: justify">Evidentemente, no creo que nadie pueda cambiar radicalmente en treinta días. Ha sido más bien un largo proceso de maduración que, sencillamente, ha concluido. He evolucionado. No sé si a algo mejor o peor, pero desde luego, a algo diferente. Paseando por una playa en Nueva Zelanda, me di cuenta de que ya estaba listo para asumirlo.</p>
<p style="text-align: justify">Así que, a partir de ahora, sin prisa pero si pausa, esperad cambios. Desde las cosas más pequeñas -como este <em>blog</em>- hasta las más importantes. <strong>Bonilla 3.0</strong> <strong>también está a punto de entrar en producción</strong>.</p>
<p style="text-align: justify">
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/11/05/21-dias/feed/</wfw:commentRss>
		<slash:comments>518</slash:comments>
		</item>
		<item>
		<title>BonillaTV &#8211; Capítulo 4: ¡Esto empieza!</title>
		<link>http://sixservix.com/blog/david/2010/09/21/bonillatv-capitulo-4-esto-empieza/</link>
		<comments>http://sixservix.com/blog/david/2010/09/21/bonillatv-capitulo-4-esto-empieza/#comments</comments>
		<pubDate>Tue, 21 Sep 2010 14:46:25 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[BonillaTV]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tecnologías de la información]]></category>
		<category><![CDATA[bonillaTV]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[javaone10]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=4541</guid>
		<description><![CDATA[Primer día de javaOne, primer día de conferencias. Y queremos contároslo, eso si, con la habitual linea periodística de BonillaTV :)


Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/09/28/bonillatv-capitulo7/' rel='bookmark' title='Permanent Link: BonillaTV &#8211; Capítulo 7: Fin de Fiesta'>BonillaTV &#8211; Capítulo 7: Fin de Fiesta</a> <small>El APOTEOSICO fin de fiesta del Oracle Open World /...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/09/23/bonillatv-capitulo-6/' rel='bookmark' title='Permanent Link: BonillaTV – Capítulo 6: El cuarto poder'>BonillaTV – Capítulo 6: El cuarto poder</a> <small>Una zona oculta del Moscone Center para la mayoría de...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/09/22/bonillatv-capitulo-5/' rel='bookmark' title='Permanent Link: BonillaTV &#8211; Capítulo 5: Pasándonoslo PIRATA'>BonillaTV &#8211; Capítulo 5: Pasándonoslo PIRATA</a> <small>Segundo día de javaOne y ya estamos totalmente integrados en...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Primer día de <strong>javaOne</strong>, primer día de conferencias. Por fin nos encontramos con los técnicos, por fin estamos disfrutando de lo que hemos venido a hacer aquí. Y queremos contároslo, eso si, con la habitual linea periodística de <strong>BonillaTV</strong> :)</p>
<p style="text-align: center"><p><a href="http://sixservix.com/blog/david/2010/09/21/bonillatv-capitulo-4-esto-empieza/"><em>Pinche aquí para ver el vídeo</em></a></p></p>
<p style="text-align: justify">Este es el primero de los vídeos que vamos a intentar publicar con regularidad a la misma hora: 7:30h-8:30h hora de San Francisco (16:30h-17:30h horario español)</p>


<p>Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/09/28/bonillatv-capitulo7/' rel='bookmark' title='Permanent Link: BonillaTV &#8211; Capítulo 7: Fin de Fiesta'>BonillaTV &#8211; Capítulo 7: Fin de Fiesta</a> <small>El APOTEOSICO fin de fiesta del Oracle Open World /...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/09/23/bonillatv-capitulo-6/' rel='bookmark' title='Permanent Link: BonillaTV – Capítulo 6: El cuarto poder'>BonillaTV – Capítulo 6: El cuarto poder</a> <small>Una zona oculta del Moscone Center para la mayoría de...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/09/22/bonillatv-capitulo-5/' rel='bookmark' title='Permanent Link: BonillaTV &#8211; Capítulo 5: Pasándonoslo PIRATA'>BonillaTV &#8211; Capítulo 5: Pasándonoslo PIRATA</a> <small>Segundo día de javaOne y ya estamos totalmente integrados en...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/09/21/bonillatv-capitulo-4-esto-empieza/feed/</wfw:commentRss>
		<slash:comments>459</slash:comments>
		</item>
		<item>
		<title>Me voy a San Francisco</title>
		<link>http://sixservix.com/blog/david/2010/09/17/me-voy-a-san-francisco/</link>
		<comments>http://sixservix.com/blog/david/2010/09/17/me-voy-a-san-francisco/#comments</comments>
		<pubDate>Fri, 17 Sep 2010 08:50:54 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[david]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[tecnologías de la información]]></category>
		<category><![CDATA[javaone]]></category>
		<category><![CDATA[san francisco]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=4498</guid>
		<description><![CDATA[Me voy a San Francisco a pasar una semana INTENSA. Voy a hacer lo que más me gusta: a aprender, hablar y vivir desarrollo de software.


Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/09/20/bonillatv-capitulo-2/' rel='bookmark' title='Permanent Link: Bonilla TV &#8211; Capítulo 2: Llegando a San Francisco'>Bonilla TV &#8211; Capítulo 2: Llegando a San Francisco</a> <small>Segundo capítulo de BonillaTV. Viajes, hoteles y ciudadanos chinos. De...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/09/07/agenda-javaone-2010/' rel='bookmark' title='Permanent Link: Mi agenda para la javaOne 2010'>Mi agenda para la javaOne 2010</a> <small>Esta es mi agenda preliminar para la edición 2010 de...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><img class="size-medium wp-image-4499 alignleft" style="border: 0pt none;margin-right: 10px" title="SanFrancisco" src="http://sixservix.com/blog/david/files/2010/09/DowntownSanFrancisco-228x300.jpg" alt="" width="228" height="300" />Hoy no habrá &#8216;artículo de humor del viernes&#8217;. Mañana me voy a San Francisco para asistir a la <a href="http://sixservix.com/blog/david/2010/07/23/javaone2010/" target="_blank">javaOne 2010</a>. Será una semana intensa, no habrá mucho tiempo para hacer turismo o disfrutar de la ciudad pero, no me quejo.</p>
<p style="text-align: justify">No quiero caer en la típica actitud de plañidera de &#8220;<em>es un viaje de trabajo. Me voy a dejar la piel y va a ser horrible</em>&#8220;.</p>
<p style="text-align: justify">Me voy a <strong>San Francisco</strong>, una de las ciudades más bonitas de Estados Unidos, a la conferencia más importante del mundo relativa a mi profesión, donde aprenderé un montón de cosas y conoceré a gente muy interesante.</p>
<p style="text-align: justify">Y, encima, con entrada gratis como &#8220;blogger relevante&#8221; gracias a Oracle y el resto de los gastos cubiertos por la empresa donde trabajo, <a title="Sixservix" href="http://sixservix.com/es/" target="_blank">SIXSERVIX</a>, una compañía del <strong>Grupo VARMA</strong>. Me lo voy a pasar pirata.</p>
<p style="text-align: justify">Quiero agradecer a la empresa que apueste y financie un año más este viaje y, sobre todo, a mis compañeros que no han podido venir y que se quedan con el <em>marrón </em>del día a día y, encima, cubren mi trabajo. <span style="text-decoration: underline"><strong>Sois unos cracks</strong></span>.</p>
<p style="text-align: justify">Cómo el año pasado, intentaré publicar algún articulillo en <a title="javaHispano" href="http://www.javahispano.org" target="_blank">javaHispano </a>para cumplir con la Comunidad y, como novedad de este año, grabar algún episodio de <a href="http://www.bonillatv.com" target="_blank">BonillaTV</a>, el <em>videoblog </em>que he lanzado recientemente. Digo &#8216;intentaré&#8217; porque no sé el tiempo que tendré disponible una vez que llegue a San Francisco. En <a href="http://sixservix.com/blog/david/2010/09/07/agenda-javaone-2010/" target="_blank">mi agenda</a>, tengo días con sesiones de 8h a 20h y, en muchas ocasiones, compromisos para cenar con unos y otros. Para que os hagáis una idea del tiempo que se tarda en hacer las cosas, la edición del último capítulo de <strong>BonillaTV</strong>, prácticamente <a href="http://twitter.com/david_bonilla/status/24625235743" target="_blank">me dejó sin dormir</a>.</p>
<p style="text-align: justify">Aún hay mucha gente que me pregunta &#8220;¿Por qué lo haces? ¿De donde sacas el tiempo?&#8221; y, por eso, lo explicaré de nuevo: Lo hago en mi tiempo libre. Y lo hago porque <strong>me encanta mi profesión y hablar de ella</strong>. Hay gente que habla de fútbol o de música. Yo hablo de lo que me gusta y me apasiona. No entiendo como hay personas que no quieran ser desarrolladores de software :)</p>
<p style="text-align: justify">Un abrazo a todos los que estáis ahí. Seguiremos informando desde San Francisco.</p>
<p style="text-align: justify">


<p>Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/09/20/bonillatv-capitulo-2/' rel='bookmark' title='Permanent Link: Bonilla TV &#8211; Capítulo 2: Llegando a San Francisco'>Bonilla TV &#8211; Capítulo 2: Llegando a San Francisco</a> <small>Segundo capítulo de BonillaTV. Viajes, hoteles y ciudadanos chinos. De...</small></li>
<li><a href='http://sixservix.com/blog/david/2010/09/07/agenda-javaone-2010/' rel='bookmark' title='Permanent Link: Mi agenda para la javaOne 2010'>Mi agenda para la javaOne 2010</a> <small>Esta es mi agenda preliminar para la edición 2010 de...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/09/17/me-voy-a-san-francisco/feed/</wfw:commentRss>
		<slash:comments>241</slash:comments>
		</item>
		<item>
		<title>Papá ¿Por qué siempre usamos .NET?</title>
		<link>http://sixservix.com/blog/david/2010/07/02/papa/</link>
		<comments>http://sixservix.com/blog/david/2010/07/02/papa/#comments</comments>
		<pubDate>Fri, 02 Jul 2010 04:50:06 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[javazone]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=3438</guid>
		<description><![CDATA[¿Java o .NET? ¿Sega o Nintendo? ¿Cocacola o Pepsi? Durante toda nuestra vida nos han empujado a posicionarnos, a elegir innecesariamente entre una y otra cosa.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">¿<strong>Java</strong> o <strong>.NET</strong>? ¿Sega o Nintendo? ¿Cocacola o Pepsi? ¿Sabrina Salerno o Samantha Fox? Durante toda nuestra vida nos han empujado a posicionarnos, a elegir innecesariamente entre una y otra cosa en vez de disfrutar de lo mejor que te proporcione cada una de ellas.</p>
<p style="text-align: justify">Todo esta introducción, sólo es una excusa para presentaros <strong>el mejor vídeo sobre java que se ha hecho nunca</strong>. Cuando digo nunca es NUNCA. Simplemente, IMPRESCINDIBLE. Disfrutadlo&#8230;</p>
<p style="text-align: center"><p><a href="http://sixservix.com/blog/david/2010/07/02/papa/"><em>Pinche aquí para ver el vídeo</em></a></p></p>
<p style="text-align: justify">Es el impresionante <em>trailer</em> que ha creado la gente de <a href="http://jz10.java.no/index.html" target="_blank">JavaZone</a>, una conferencia de desarrolladores celebrada en Escandinavia con más de <strong>2300 entradas vendidas</strong>.</p>
<p style="text-align: justify">Dedicado a la gente de <a href="http://twitter.com/AltNetHispano" target="_blank">AltNetHispano</a> -que tan bien lo están haciendo- en general y a <a href="http://twitter.com/amaliahern" target="_blank">Amalia Hernandez</a> en particular.</p>
<p style="text-align: justify">(Visto en <a href="http://www.meneame.net/story/papa-siempre-usamos-net-eng" target="_blank">Meneame</a>, donde los comentarios demuestran que, desgraciadamente, aún hay gente que cree que hay lenguajes buenos y malos, no buenos o malos programadores&#8230;)</p>
<p style="text-align: justify"><span style="color: #008000"><strong>PEDAZO DE DISCLAIMER:</strong></span></p>
<p style="text-align: justify"><strong><span style="color: #008000">Este vídeo me llegó el fin de semana pasada e inmediatamente redacté este <em>post </em>como boniartículo humorístico para el siguiente viernes. Cuando vi que <a href="http://twitter.com/dani_latorre/status/17020586276" target="_blank">ya lo habían publicado</a> en su cuenta de <em>twitter </em>gente como Dani Latorre, Erick Camacho o Sergi Almar también lo hice <a href="http://twitter.com/david_bonilla/status/17077706736" target="_blank">en la mía</a> pero, mantuve la publicación del artículo para el siguiente viernes.</span></strong></p>
<p style="text-align: justify"><strong><span style="color: #008000">Después vi que el vídeo había corrido como la espuma por Internet y que hasta Abraham había hecho <a href="http://javahispano.org/contenidos/es/divertido_trailer_publicitario_de_javazone/" target="_blank">referencia al mismo en javaHispano</a>. Aún así, lo mantuve. Primero <span style="text-decoration: underline">porque soy un cabezón</span> :) y, segundo, porque quiero creer -ayudado por las estadísticas de Google Analytics- que no todo el mundo que me lee viene de jH  (&#8220;sólo&#8221; un 14,16%&#8230;).</span></strong></p>
<p style="text-align: justify"><strong><span style="color: #008000">Hoy, al repasar el artículo por última vez, me he alegrado profundamente de haber esperado hasta el viernes para publicarlo porque, lo que se dice modula completamente el &#8220;polémico&#8221; <a href="http://sixservix.com/blog/david/2010/06/30/porque-java-apesta-y-c-sharp-mola/#idc-container" target="_blank">artículo del miércoles</a> y me ha animado a escribir este <em>disclaimer</em>.<br />
</span></strong></p>
<p style="text-align: justify"><strong><span style="color: #008000">Aún así, puede haber algún <em>bocachancla </em>que diga que este artículo es oportunista y se ha escrito posteriormente. Lo estoy esperando. Menos mal que el bendito sistema de gestión de WordPress guarda un histórico de cambios con hora y fecha&#8230;</span></strong></p>
<p style="text-align: justify"><strong><span style="color: #008000">Un saludo a todos y que viva .NET, Java, Ruby y Fortran. Como he dicho muchas veces, tenemos la profesión más bonita del mundo. Da igual el lenguaje que utilicemos&#8230;</span></strong></p>
<p style="text-align: justify"><span style="color: #008000"><strong>PS: Una última mención de agradecimiento a <a href="http://jorgerubira.blogspot.com/" target="_blank">Jorge Rubira</a> que encontró una versión alternativa del vídeo después de que lo hubieran retirado de YouTube.</strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/07/02/papa/feed/</wfw:commentRss>
		<slash:comments>405</slash:comments>
		</item>
		<item>
		<title>Porque Java apesta y C# mola</title>
		<link>http://sixservix.com/blog/david/2010/06/30/porque-java-apesta-y-c-sharp-mola/</link>
		<comments>http://sixservix.com/blog/david/2010/06/30/porque-java-apesta-y-c-sharp-mola/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 04:42:16 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[Jeffrey Zhao]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=3453</guid>
		<description><![CDATA[Según Jeffrey Zhao, Java es un truño infumable y C# el futuro inmediato. ¿Tiene esta afirmación alguna base técnica real? Descúbrelo en este artículo.


Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2009/08/21/gestion-de-memoria-en-java/' rel='bookmark' title='Permanent Link: Gestión de memoria en Java'>Gestión de memoria en Java</a> <small>Hace poco me llegó un correo de un compañero del...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">He programado en Java durante toda mi carrera profesional. He utilizado otros lenguajes como <strong>C </strong>o <strong>ensamblador</strong>, y uso <strong>HTML</strong>, <strong>JavaScript</strong> o <strong>SQL</strong> en mi día a día como todo hijo de vecino pero, al final, mi confort zone siempre ha sido el territorio de James Gosling y Duke.</p>
<p style="text-align: justify">He de reconocer que, hasta hace poco, era un relativo <em>fanboy</em> de java pero, cada día soy más agnóstico respecto al lenguaje y me interesa más el producto; lo que, traducido a cristiano, significa que me da igual como esté hecho algo, lo importante es las funcionalidades que implemente y, por supuesto, que esté bien hecho.</p>
<p style="text-align: justify">Y en este estado de las cosas, ha caído en mis manos una maravillosa presentación de <strong>Jeffrey Zhao </strong>titulada “Porque Java apesta y C# mola”. El texto es imprescindible, lo mires por donde lo mires. No sólo porque supone una comparativa técnica y científica que rebosa calidad por todos los lados, sino porque detrás de un título de apariencia <em>troll</em>, se esconde una reflexión realista y desapasionada en la que no se aprecia fanatismo alguno.</p>
<p style="text-align: justify">Pero lo más importante de todo es que <span style="text-decoration: underline"><strong>Jeffrey Zhao</strong> SE MOJA</span>. Es de agradecer que alguien tome posición, la argumente y sea lo suficientemente valiente como para hacerla pública y, a lo torero, pedir réplica a la misma con la frase “contacta conmigo, muéstrame tu idea&#8230; y pruébala” proporcionando su <a href="http://blog.zhaojie.me/" target="_blank">blog</a>, correo y <a href="http://www.twitter.com/jeffz_cn" target="_blank">cuenta de twitter</a>. Ahí es nada.</p>
<p style="text-align: justify">Por si fuera poco, las diapositivas están salpicadas de frases memorables y un fino humor que es difícil de encontrar en un texto técnico. Me ha encantado la reflexión  “si la <strong>JVM </strong>es la máquina, los <em>byte codes</em> son el código máquina y programar en Java&#8230; es como programar en ensamblador ¿De verdad quieres programar en ensamblador?”. Sencillamente, brillante.</p>
<p style="text-align: justify">El texto finaliza con una reflexión: ni siquiera nos pide que cambiemos de plataforma, entendiendo como plataforma la <strong>JVM</strong>, sino que pregunta ¿Por qué no utilizar otros lenguajes más poderosos a nivel de sintaxis y que se pueden utilizar dentro de la <strong>JVM </strong>como <strong>Scala</strong>, <strong>Ruby </strong>(JRuby) o <strong>Python </strong>(Jhyton)?</p>
<p style="text-align: justify">Qué grande es Jeffrey Zhao y qué grande es esta presentación. Tengo el orgullo de presentárosla aquí:</p>
<p style="text-align: center"><object width="400" height="328"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=why-java-sucks-and-csharp-rocks-100418041313-phpapp02"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=why-java-sucks-and-csharp-rocks-100418041313-phpapp02"  type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="328"></embed></object></p>
<p style="text-align: justify">La conclusión a la que llego después de haber leído la presentación es que Jeffrey, como tantos otros, no nos está pidiendo a los que venimos del mundo Java que abandonemos la <strong>JVM </strong>ni la potencia de todo el mundo de librerías que hay detrás de ella, sino que probemos otros lenguajes que se pueden ejecutar en la misma.</p>
<p style="text-align: justify">¿Realmente merece la pena hacerlo cuando desgraciadamente hay un alto porcentaje de programadores a los que les suena a chino la mayoría de las cosas de las que habla Jeffrey? Bueno&#8230; depende. Si formas parte de una maligna megacorporación, puede que no, pero, si eres miembro de un pequeño y altamente productivo equipo de desarrollo&#8230;, a lo mejor el hecho de utilizar un lenguaje donde poder ordenar un <em>array </em>pasando la lógica de ordenación como parámetro, en vez de implementando una clase <em>Comparator, </em>marca la diferencia.</p>
<p style="text-align: justify">Voy a echarle un vistazo a <strong>Scala</strong>&#8230;</p>


<p>Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2009/08/21/gestion-de-memoria-en-java/' rel='bookmark' title='Permanent Link: Gestión de memoria en Java'>Gestión de memoria en Java</a> <small>Hace poco me llegó un correo de un compañero del...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/06/30/porque-java-apesta-y-c-sharp-mola/feed/</wfw:commentRss>
		<slash:comments>395</slash:comments>
		</item>
		<item>
		<title>James Gosling deja Oracle</title>
		<link>http://sixservix.com/blog/david/2010/04/12/james-gosling-deja-oracle/</link>
		<comments>http://sixservix.com/blog/david/2010/04/12/james-gosling-deja-oracle/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 04:50:43 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[tecnologías de la información]]></category>
		<category><![CDATA[james gosling]]></category>
		<category><![CDATA[jhonathan schwartz]]></category>
		<category><![CDATA[kohsuke kawaguchi]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[simon phipps]]></category>
		<category><![CDATA[sun]]></category>
		<category><![CDATA[Tim Bray]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=2708</guid>
		<description><![CDATA[James Gosling, 'padre' del lenguaje de programación java ha dejado Oracle ¿Cómo afectará esto a la compañía y a la comunidad de desarrollo?


Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/06/17/oracle_y_bloggers/' rel='bookmark' title='Permanent Link: Compartiendo mesa y mantel con Oracle'>Compartiendo mesa y mantel con Oracle</a> <small>Ayer acudí a un encuentro de bloggers organizado por Oracle...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><img class="alignleft size-full wp-image-2710" style="border: 0pt none;margin-right: 10px;margin-bottom: 3px" src="http://sixservix.com/blog/david/files/2010/04/James_Gosling.jpg" alt="James_Gosling" width="200" height="275" /><strong>James Gosling</strong>, el <em>padre</em> del lenguaje de programación <strong>java</strong>, deja <strong>Oracle</strong>. El día 9 de abril, mediante <a href="http://nighthacks.com/roller/jag/entry/time_to_move_on" target="_blank">una entrada en su <em>blog</em></a>, confirmaba los rumores anunciando que había abandonado la compañía una semana antes.</p>
<p style="text-align: justify"><strong>Gosling </strong>se une a una larga y creciente lista de notables ex-empleados de <strong>SUN</strong>, que han renunciado a su puesto desde que <strong>Oracle </strong>la comprara en enero y que incluye a personalidades como el CEO <a href="http://en.wikipedia.org/wiki/Jonathan_I._Schwartz" target="_blank">Jhonathan Schwartz</a>; el co-inventor del lenguaje XML, <a href="http://en.wikipedia.org/wiki/Tim_Bray" target="_blank">Tim Bray;</a> el creador de Hudson, <a href="http://weblogs.java.net/blog/kohsuke/archive/2010/04/05/good-bye-sunoracle" target="_blank">Kohsuke Kawaguchi</a>; o el responsable de <em>open source</em>, <a href="http://www.fayerwayer.com/2010/03/chief-open-source-officer-de-sun-deja-la-compania/" target="_blank">Simon Phipps</a>.</p>
<p style="text-align: justify">La marcha de <strong>Gosling </strong>y sus compañeros supone un duro golpe para la comunidad de desarrollo que ha crecido alrededor del lenguaje <strong>java,</strong> aunque técnicos como <a href="http://twitter.com/jerolba" target="_blank">Jerónimo López</a> crean que &#8220;<em>para el sector, todo esto que está pasando es  positivo. El panorama se llenará de nuevas empresas repletas de gente con muchas  ideas, que podrán desarrollar/explorar con aún más libertad que cuando  estaban en <strong>SUN</strong>. Seguro que muchas de esas ideas impulsarán/crearán áreas  nuevas</em>&#8220;.</p>
<p style="text-align: justify">Además, aunque algunos crean que los resultados de <strong>Oracle </strong>y sus ventas no se verán  afectadas por la marcha de <strong>Gosling, </strong>como <a href="http://weblogs.javahispano.org/jh/entry/nos_presentamos_iii" target="_blank">Abraham Otero</a> que comenta en <a href="http://javahispano.org/contenidos/es/y_despues_de_kohsuke__llega_el_turno_de___/?menuId=ANNOUNCEMENTS" target="_blank">javaHispano</a> &#8220;<em>&#8230; las &#8216;empresas serias&#8217; ni sabían quién era el &#8216;hippie&#8217; ese  de <strong>Gosling</strong>&#8230;</em>&#8220;, la pregunta que debemos hacernos todos y, especialmente, los accionistas de <strong>Oracle </strong>es: <strong>¿vale más o menos Oracle sin todos estos técnicos dentro de ella?</strong> Si la valoración de una empresa se basa no sólo en sus activos financieros sino en su posibilidad de generar beneficios en un futuro, ¿se verá penalizada la valoración de <strong>Oracle </strong>en bolsa? ¿Se reducirá su capacidad de desarrollar nuevos productos y tecnologías?</p>
<p style="text-align: justify">Aunque no suelo ser un buen oráculo, pronostiqué deserciones masivas de técnicos en <a href="http://sixservix.com/blog/david/2010/02/01/el-traje-nuevo-del-emperador/" target="_blank">antiguos artículos</a> y en el <a href="http://www.javahispano.org/contenidos/es/javahispano_podcast__074__impresiones_del_webcast_de_larry_ellison/" target="_blank"><em>podcast </em>de javaHispano</a> donde comentamos la compra de <strong>SUN </strong>por parte de <strong>Oracle. SUN </strong>ya no es la compañía que atraía y contrataba a los mejores técnicos.</p>
<p style="text-align: justify">¿A dónde llevará todo esto? Nadie puede pronosticarlo, pero sí podemos asegurar que el panorama de java y su ecosistema va a cambiar radicalmente.</p>


<p>Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/06/17/oracle_y_bloggers/' rel='bookmark' title='Permanent Link: Compartiendo mesa y mantel con Oracle'>Compartiendo mesa y mantel con Oracle</a> <small>Ayer acudí a un encuentro de bloggers organizado por Oracle...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2010/04/12/james-gosling-deja-oracle/feed/</wfw:commentRss>
		<slash:comments>2953</slash:comments>
		</item>
		<item>
		<title>Gestión de memoria en Java</title>
		<link>http://sixservix.com/blog/david/2009/08/21/gestion-de-memoria-en-java/</link>
		<comments>http://sixservix.com/blog/david/2009/08/21/gestion-de-memoria-en-java/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 16:32:35 +0000</pubDate>
		<dc:creator>David Bonilla</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[-Xmn]]></category>
		<category><![CDATA[-Xms]]></category>
		<category><![CDATA[-Xmx]]></category>
		<category><![CDATA[-Xss]]></category>
		<category><![CDATA[garbage collector]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[OutOfMemoryError]]></category>
		<category><![CDATA[StackOutOfMemoryError]]></category>

		<guid isPermaLink="false">http://sixservix.com/blog/david/?p=32</guid>
		<description><![CDATA[Hace poco me llegó un correo de un compañero del metal pidiéndome ayuda sobre la gestión de memoria en java. No me conocía pero, había encontrado mi correo en un hilo de javaHispano sobre la gestión de consultas a base de datos con respuesta con muchos registros de, nada mas y nada menos que&#8230; ¡el [...]


Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/06/30/porque-java-apesta-y-c-sharp-mola/' rel='bookmark' title='Permanent Link: Porque Java apesta y C# mola'>Porque Java apesta y C# mola</a> <small>Según Jeffrey Zhao, Java es un truño infumable y C#...</small></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify"><img class="alignright size-medium wp-image-42" src="http://sixservix.com/blog/david/files/2009/08/memoria-300x253.jpg" alt="memoria" width="300" height="253" />Hace poco me llegó un correo de un compañero del metal pidiéndome ayuda sobre la gestión de memoria en java. No me conocía pero, había encontrado mi correo en un hilo de <a title="javaHispano" href="http://www.javahispano.org" target="_blank">javaHispano</a> sobre la <a title="Un post del pleistoceno" href="http://www.javahispano.org/forum/j2ee/es/oracle_y_java___devolver_muchisimos_registros/" target="_blank">gestión de consultas a base de datos con respuesta con muchos registros</a> de, nada mas y nada menos que&#8230; ¡el 2004!.</p>
<p style="text-align: justify">Han pasado 5 años, un presidente del gobierno, una crisis mundial por las hipotecas <em>subprime </em>y 6 entrenadores por <a title="La página del glorioso" href="http://www.clubatleticodemadrid.com/" target="_blank">el equipo de mis amores</a> y,  después de todo, parece que aun hay bastantes dudas sobre la gestión de memoria con el lenguaje java así que, he decidido recopilar los <a title="Porque todo el mundo tiene un pasado" href="http://weblogs.javahispano.org/dbonillaf/search?q=jvm&amp;cat=" target="_blank">post sobre memoria de mi antiguo blog</a>, darles un lavado de cara, completar información y escribir el post ¿definitivo? sobre gestión de memoria.</p>
<p style="text-align: justify"><span id="more-32"></span>Empecemos por el principio, la <strong>maquina virtual</strong>. La maquina virtual de java -o <strong>JVM </strong>en sus siglas en inglés- es el anclaje &#8220;físico&#8221; de nuestro maravilloso lenguaje multiplataforma con el Sistema Operativo correspondiente y, como tal, ocupa y utiliza memoria del sistema. Bien, esto es evidente pero, lo que es menos conocido, es como está implementada esta gestión de memoria.</p>
<p style="text-align: justify">La JVM se arranca reservando, por defecto, 64MB de memoria para trabajar que va ampliando según necesidades. Sin embargo, estas sucesivas <em>ampliaciones automáticas</em> llegan a un límite. Podemos <strong>gestionar nosotros mismos estos límites</strong> -tanto por arriba como por abajo- gracias a unos parámetros con los que se puede acompañar al comando de arranque de la JVM.<br />
Esto es IMPORTANTE si sabemos que nuestra aplicación va a requerir una gran cantidad de memoria para su funcionamiento y queremos evitar un <strong>OutOfMemoryError</strong> o si, por el contrario, nuestra aplicación compite con otras de mayor prioridad en un sistema y queremos que utilice solo una parcela de memoria.</p>
<h3 style="text-align: justify">PARÁMETROS DE GESTIÓN DE MEMORIA</h3>
<p style="text-align: justify">Antes de nada, es importante tener en cuenta que los parámetros de gestión de memoria son, en la mayoría de los casos,  específicos de la maquina virtual. Así, el parámetro -Xlp es exclusivo de la maquina virtual implementada por IBM y se puede utilizar exclusivamente con esta. Aunque hay <a href="http://en.wikipedia.org/wiki/List_of_Java_virtual_machines" target="_blank">un montón de implementaciones de JVMs</a>, en la práctica, solo 3 o 4 son utilizadas en un porcentaje significativo y, en cualquier caso, siempre tendremos que probar nuestra aplicación con la implementación de referencia, la de SUN, para evitar posibles problemas de compatibilidades. Por eso, nos centraremos en los parámetros que se puedan utilizar con las maquinas virtuales de SUN.</p>
<p style="text-align: justify">Los parámetros de gestión de memoria se identifican por un sistema de prefijos que indican la naturaleza de dichos parámetros, así y<a href="http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp" target="_blank"> según SUN</a>:</p>
<ul>
<li>Los parámetros que comienzan con <em>-X</em> no son estándar, no se garantiza su implementación en todas las implementaciones de la JVM y pueden cambiar en futuras versiones del JDK.</li>
<li>Los  parámetros que comienzan con <em>-XX</em> no se consideran estables (¿¿??) y no se recomienda su uso para usuarios sin un conocimiento especifico.</li>
</ul>
<div id="attachment_56" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-56" src="http://sixservix.com/blog/david/files/2009/08/leonardo_jvm-300x292.jpg" alt="La primera maquina virtual :)" width="300" height="292" /><p class="wp-caption-text">La primera maquina virtual :)</p></div>
<p style="text-align: justify">Los principales parámetros de gestión de memoria son:</p>
<ul>
<li><em>Xms &lt; tamaño &gt; </em> establece la cantidad inicial de memoria</li>
<li><em>Xmx &lt; tamaño &gt; </em> establece la cantidad máxima de memoria</li>
<li><em>Xss &lt; tamaño &gt; </em> establece el tamaño máximo de pila de cada hilo JAVA</li>
</ul>
<p style="text-align: justify">Es decir, si quisiéramos arrancar nuestra aplicación con una cantidad de memoria asignada de 64MB y queremos que llegue a utilizar un GB, por ejemplo, tendríamos que lanzar un script de la siguiente manera:</p>
<p style="text-align: justify"><em>java -Xms64m -Xmx1024m</em> <em>&lt;&lt;nombre de nuestra aplicación&gt;&gt;</em></p>
<p style="text-align: justify">Es importante conocer en profundidad <strong>que implican y para que se utilizan cada uno de estos parámetros</strong>:</p>
<ul style="text-align: justify">
<li>Los parámetros <strong>Xms </strong>y <strong>Xmx </strong>establecen el tamaño inicial y máximo de la cantidad de memoria que la JVM utilizará para ejecutar programas java pero, esto no implica que nuestro proceso java ocupe en memoria un tamaño máximo como el establecido en el parámetro Xmx. Como se ha especificado antes, la JVM es un proceso en si mismo y, como tal, necesita memoria para poder cargar su código y datos. Por tanto, <span style="text-decoration: underline">un proceso java puede llegar a ocupar mas espacio en memoria que el determinado en Xmx</span>.</li>
<li>El parámetro <strong>Xss </strong>sirve para determinar cual es la cantidad de memoria máxima que podrá utilizar un hilo ejecutado dentro de la maquina virtual. Para aquellos que no estén familiarizados con la gestión de hilos, pondremos un ejemplo de sencilla comprensión: imaginemos una aplicación web desarrollada en java. Esta aplicación web tendrá sus datos comunes y ocupará X espacio en memoria. Cada vez que alguien haga una petición a nuestra página web, se creará un hilo de ejecución independiente que tendrá sus propios datos (por ejemplo, los datos de un formulario de registro en nuestra página) y que no serán compartidos por el resto de hilos que se estén ejecutando en dicho momento (nuestra página web no es monousuario puede tener un montón de usuarios concurrentes). Bueno, en este caso, toda la memoria que utilice cada uno de los hilos se suma para el cómputo de memoria global determinado por el parámetro Xmx pero, además cada hilo comprueba que no supere el máximo de memoria que determina el parámetro Xss. Si se supera, se lanza un <strong>StackOutOfMemoryError.</strong></li>
</ul>
<p style="text-align: justify">Un caso común y conocido donde se puede dar un <strong>StackOutOfMemoryError</strong> es a la hora de usar reflexión en procesos XSLT por lo que, probablemente tengamos que subir el tamaño máximo de pila por hilo si utilizamos este tipo de tecnología.</p>
<h3 style="text-align: justify">PARÁMETROS AVANZADOS DE GESTIÓN DE MEMORIA</h3>
<p style="text-align: justify">Hasta ahora, hemos visto los parámetros más básicos de gestión de memoria pero hay muchísimos más. Vamos a centrarnos en dos de los más importantes o, lo que es lo mismo, de los que pueden solucionarnos problemas tanto de rendimiento como de funcionamiento (seamos sinceros, nadie se interesa por esto hasta que el marrón le estalla entre las manos).</p>
<p style="text-align: justify">El problema es que, antes de poder especificar los comandos, tendremos que tragarnos algo de literatura para comprender de que estamos hablando.</p>
<p style="text-align: justify"><strong><span style="text-decoration: underline">EL GARBAGE COLLECTOR</span></strong></p>
<p style="text-align: justify">Toda máquina virtual viene con un <em>recolector de basura</em> o Garbage Collector. Este maravilloso invento es el que consigue que los programadores java nos olvidemos por completo de tener que lidiar con la gestión de la memoria (y es el culpable, por otro lado, que todo este tema nos suene tan raro y distante&#8230; y de ahí este articulo).</p>
<p style="text-align: justify">El Garbage Collector libera el espacio de memoria ocupado por objetos que no van a volver a ser utilizados. <span style="text-decoration: underline">El proceso de localización y eliminado de esos objetos puede ser tan pesado que llegue a parar una aplicación hasta su conclusión</span>, por lo que es especialmente importante que lo configuremos correctamente.</p>
<p style="text-align: justify">La JVM divide el espacio en &#8220;generaciones&#8221; o particiones en los que poder aplicar sofisticados algoritmos de recolección. Cuando alguno de estos espacios se llena, se fuerza una recolección de objetos y, la eficiencia de este sistema se basa en que la mayoría de los objetos tienen una vida útil muuuy corta. El espacio en memoria, se divide generalmente en dos particiones: la nueva y la vieja generación.</p>
<p style="text-align: justify">Cuando el tamaño de la <em>nueva generación</em> se llena, se invoca una recolección de objetos muy rápida (GC) que acaba con los objetos que no vayan a ser utilizados y que traspasa a la <em>vieja generación</em> los objetos con vida. Cuando la <em>vieja generación</em> se llena, se invoca una recolección completa (Full GC) que implica a toda la memoria y que es mucho más lenta que la recolección rápida. Para entender un poco mas gráficamente de lo que estamos hablando, veamos unas trazas de una JVM:</p>
<pre style="text-align: justify">[GC 50650K-&gt;21808K(76868K), 0.0478645 secs]
[GC 51197K-&gt;22305K(76868K), 0.0478645 secs]
[GC 52293K-&gt;23867K(76868K), 0.0478645 secs]
[Full GC 52970K-&gt;1690K(76868K), 0.54789968 secs]</pre>
<p style="text-align: justify">
<p style="text-align: justify">En estas trazas se puede ver cómo, tras la primera recolección rápida (GC), se pasó de 50650Kb usados a 21808Kb (de un total de 76868Kb que es el espacio asignado mediante -Xmx). También se puede ver cómo, tras la recolección completa (Full GC) se pasó a un uso de tan solo 1690Kb pero, a cambio de casi medio segundo de inactividad de nuestra aplicación, que es lo que tardo la recolección completa en llevarse a cabo.</p>
<p style="text-align: justify">Por tanto, no parece tener mucho sentido que tengamos un espacio de 4GB asignado a nuestro proceso java y un espacio de 2MB -que es lo que viene asignado por defecto- para nuestra <em>nueva generación</em>. Normalmente, se recomienda que pongamos el tamaño de la <em>nueva generación</em> que queramos <strong>mientras no supere el tamo determinado en -<em>Xmx</em> </strong>y, como buena práctica, se recomienda asignar la mitad del espacio total de memoria (Ej. <em>java -Xmx1024m -Xmn512m &lt;&lt;nombre de nuestra aplicación&gt;&gt;</em>). Así:</p>
<ul>
<li><em>Xmn &lt; tamaño &gt; </em> establece la memoria asignada para la<em> nueva generación</em>.</li>
</ul>
<p style="text-align: justify">El <em>tunning</em> del Garbage Collector respecto al uso de la <em>nueva generación </em>da para mucho, como podéis ver <a href="http://www.jroller.com/imeshev/entry/effect_of_jvm_heap_size" target="_blank">aquí</a> y en muchos otros sitios.</p>
<p style="text-align: justify"><img class="aligncenter size-medium wp-image-70" src="http://sixservix.com/blog/david/files/2009/08/distributed_cache_latency_and_jvm_heap_size-001-300x196.jpg" alt="distributed_cache_latency_and_jvm_heap_size-001" width="300" height="196" /></p>
<p style="text-align: justify">También se puede forzar la recolección mediante una llamada al sistema en java con <em>System.gc()</em> pero, no se recomiendo su uso porque fuerza recolecciones completas e impide la escalabilidad de los grandes sistemas.</p>
<p style="text-align: justify">
<p style="text-align: justify"><strong><span style="text-decoration: underline">LA MEMORIA PERMANENTE<br />
</span></strong></p>
<p style="text-align: justify">Un concepto que, a veces, no queda muy claro es que todo esto de lo que estamos hablando se refiere a <strong>memoria volátil</strong>, es decir memoria ocupada por datos con una esperanza de vida mas o menos larga pero, en ningún caso, pensados para ser utilizados durante todo el tiempo de ejecución de nuestro proceso. Sin embargo, si hay datos permanentes que utilizará nuestro proceso java.</p>
<p style="text-align: justify">Estos datos (<em>classes</em>, librerías, etc.) se almacenan en la <strong>memoria permanente</strong> que funciona adicionalmente al espacio establecido por nosotros para la memoria volátil mediante el parámetro <em>-Xmx</em>.</p>
<p style="text-align: justify">¿Que para que se utiliza esto realmente? Para la carga y descarga de <em>classes </em>dinamicamente y, cuando alguien se pregunte que clases son esas que se cargan dinamicamente debe recordar que <span style="text-decoration: underline">nuestras JSPs se convierten en <em>classes</em></span> <span style="text-decoration: underline">dinamicamente según se van invocando</span> (aunque se pueda efectuar una precompilación para ganar en rendimiento) y que las librerías invocadas por nuestras aplicaciones también utilizan este espacio.</p>
<p style="text-align: justify">¿Cómo puede afectarnos esto? Bueno, la JVM establece por defecto un tamaño máximo de 64mb para la memoria permanente. Si nuestra aplicación empieza a generar clases como si no hubiera mañana (nadie duda de que todos nosotros hace aplicaciones con TRILLONES de usuarios concurrentes) y <span style="text-decoration: underline">llenamos este espacio en memoria, forzaremos una recolección completa del Garbage Collector que penalizará el rendimiento de nuestra aplicación</span>. En un escenario más real, si nos hemos dedicado a agregar y usar librerías y librerías con sus dependencias y nuestra memoria permanente no puede cargar todas las que necesitamos, daremos con un <strong>OutOfMemoryError</strong> que nos romperá el Chi a nosotros y a nuestros usuarios (no te digo ya a nuestro jefe). No parece que tenga muchos sentido, por otro lado, que le demos a nuestra mega-aplicación 2GB de memoria volátil y la dejemos con 64mb para cargar clases y librerías ¿verdad?. Así:</p>
<ul>
<li><em>XX:PermSize</em>=&lt; tamaño &gt; establece el tamaño mínimo de la memoria permanente</li>
<li><em>XX:MaxPermSize=</em>&lt; tamaño &gt; establece el tamaño máximo de la memoria permanente</li>
</ul>
<p style="text-align: justify">Si, por ejemplo, queremos utilizar 128mb para nuestra memoria permanente, ejecutaremos algo como <em>java -Xmx1024m -Xmn512m <strong>-</strong></em><strong><em>XX:PermSize</em>=128m</strong><em> &lt;&lt;nombre de nuestra aplicación&gt;&gt;</em>)</p>
<p style="text-align: justify">Es importante recalcar que <span style="text-decoration: underline">la <strong>memoria permanente</strong> es adicional a la memoria volátil establecida por el comando </span><strong><span style="text-decoration: underline">-Xmx</span>.</strong> Por eso, si arrancamos un proceso java con un <em>permSize </em>de 256mb y un <em>-Xms</em> de 256mb, el espacio total de memoria usada será de mas de 512mb (256 de memoria volátil + 256 de memoria permanente + la memoria que utilice la maquina virtual en si) Ej.</p>
<pre style="text-align: justify">---------------------------------------------
$ java <strong>-Xms256m -Xmx256m -XX:PermSize=256m -XX:MaxPermSize=256m</strong> Hello
$ pmap 6472
6472:   /usr/java1.3.1/bin/../bin/sparc/native_threads/java -Xms256m
-Xmx256m
  <strong>total   550544K</strong>
---------------------------------------------</pre>
<p style="text-align: justify">
<p style="text-align: justify">Podéis encontrar todo esto mucho mejor explicado <a href="http://www.unixville.com/~moazam/stories/2004/05/17/maxpermsizeAndHowItRelatesToTheOverallHeap.html" target="_blank">aquí</a> (pero eso si, en inglés).</p>
<h3 style="text-align: justify">OPTIMIZACIÓN DEL RENDIMIENTO EN ARRANQUE Y EN TIEMPO DE EJECUCIÓN</h3>
<p style="text-align: justify">Otra optimización que hay que tener en cuenta es la proporcionada por los diferentes perfiles de la maquina virtual y el uso del compilador de cada uno de los mismos. Así, el perfil por defecto es el de <em>-<span style="text-decoration: underline">client</span></em><span style="text-decoration: underline"> que prioriza la velocidad de arranque del proceso antes que el rendimiento general de la aplicación</span>. Por el contrario, el perfil <em>-s<span style="text-decoration: underline">erver</span></em><span style="text-decoration: underline"> prima el rendimiento en tiempo de ejecución en vez que el arranque rápido del proceso</span> (además de modificar ciertos valores por defecto como, por ejemplo, el tamaño por defecto de la memoria permanente que pasa de 32 a 64mb).</p>
<p style="text-align: justify">Para utilizar el perfil <em>-server</em> solo hay que introducirlo como parámetro en la ejecución de nuestro proceso java.</p>
<p style="text-align: justify">
<h3 style="text-align: justify">CONCLUSIONES</h3>
<p style="text-align: justify">Por último, además de la correcta configuración de nuestra maquina virtual, otra de las cosas que debemos tener en cuenta es seguir una serie de buenas practicas a la hora de programar nuestras aplicaciones aunque dejaremos esto para otro post. Se pueden encontrar múltiples sitios con listas de optimización de memoria para nuestras aplicaciones pero destaquemos un articulo reciente sobre <a href="http://blog.dynatrace.com/2009/08/13/java-memory-problems/" target="_blank">antipatrones de memoria que hay que evitar</a> y que puede enseñarnos mucho.</p>
<p style="text-align: justify">También es importante tener en cuenta el enorme muestrario de aplicaciones de <em>profiling </em>y monitorización disponibles en el mercado, gratuitas y de pago, para comprender que pasa con nuestra memoria, cuando y porqué.</p>
<p style="text-align: justify">Espero que hayáis encontrado este artículo de utilidad.</p>


<p>Artículos relacionados:<ol><li><a href='http://sixservix.com/blog/david/2010/06/30/porque-java-apesta-y-c-sharp-mola/' rel='bookmark' title='Permanent Link: Porque Java apesta y C# mola'>Porque Java apesta y C# mola</a> <small>Según Jeffrey Zhao, Java es un truño infumable y C#...</small></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://sixservix.com/blog/david/2009/08/21/gestion-de-memoria-en-java/feed/</wfw:commentRss>
		<slash:comments>269</slash:comments>
		</item>
	</channel>
</rss>

