<?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>Jesús Navarrete &#187; java</title>
	<atom:link href="http://www.jenaiz.com/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jenaiz.com</link>
	<description>jenaiz.com</description>
	<lastBuildDate>Thu, 14 Jan 2010 12:00:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Actualizar JDK 1.6 en Mac OS X</title>
		<link>http://www.jenaiz.com/2008/07/16/actualizar-jdk-16-en-mac-os-x/</link>
		<comments>http://www.jenaiz.com/2008/07/16/actualizar-jdk-16-en-mac-os-x/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 08:00:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[1.6]]></category>
		<category><![CDATA[jdk]]></category>
		<category><![CDATA[macosx]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=69</guid>
		<description><![CDATA[Hasta ahora he trabajado con la versión por defecto instalada en el OS X del JDK de java la 1.5; esta se ha ido actualizando automáticamente. Sin embargo ahora quería hacer algunas pruebas con VisualVM y resulta que necesitaba una versión más moderna del JDK, la 6.0 mínimo, así que he decidido ver como funciona [...]]]></description>
			<content:encoded><![CDATA[<p>Hasta ahora he trabajado con la versión por defecto instalada en el OS X del JDK de java la 1.5; esta se ha ido actualizando automáticamente. Sin embargo ahora quería hacer algunas pruebas con <a href="https://visualvm.dev.java.net/relnotes.html#system_requirements">VisualVM</a> y resulta que necesitaba una versión más moderna del JDK, la 6.0 mínimo, así que he decidido ver como funciona el sistema de actualizaciones de Mac OS X.</p>
<p>Cual ha sido mi sorpresa cuando en <a href="http://support.apple.com/kb/HT1856">una de las actualizaciones del sistema</a> venía la nueva versión del JDK. Sin embargo esta release no se convierte en la release por defecto, sino que si deseas utilizarla, debes hacer los cambios por ti mismo.</p>
<p>Investigando un poco logramos la ruta física donde se instalan todas las versiones de los JDK de java descargados:</p>
<blockquote><p>/System/Library/Frameworks/JavaVM.framework/Versions</p></blockquote>
<p>Además de todas las versiones, existen tres directorios llamativos: <em>A,</em> <em>Current</em> y <em>CurrentJDK</em>; estos dos últimos directorios son <em>symbolic links</em> a la versión que interesa. Lo que significa que para cambiar de versión del JDK sólo hay que cambiarlos a ellos.</p>
<p>Si buscáis por internet encontraréis <a href="http://www.macosxhints.com/article.php?story=20060121171126988">un script bastante utilizado</a>, que nos muestra las JDKS que existen instaladas en vuestra máquina y cambia el <em>CurrentJDK</em> a la versión que queramos. Sin embargo, habría que completar este script. Ambos <em>Current</em> y <em>CurrentJDK</em> deben ser cambiados o algunos programas os dejarán de funcionar. La verdad es que por lo que he encontrado, lo único que he podido sacar en claro es que hay algunas razones por las que no cambiar <em>CurrentJDK</em>:</p>
<blockquote><p>it affects the system globally, it changes the system from how Apple shipped it (things under /System are Apple managed), and it can cause updates to fail and/or have unintended side effects.</p></blockquote>
<p>Si aún así queréis seguir adelante con el cambio podéis hacer lo siguiente.</p>
<p>Un vistazo rápido al directorio : /System/Library/Frameworks/JavaVM.framework/Versions/ os devolverá algo parecido a:</p>
<blockquote><p>weemac:Versions jenaiz$ ls -la<br />
total 56<br />
drwxr-xr-x  14 root  wheel  476 15 jul 08:59 .<br />
drwxr-xr-x  11 root  wheel  374  4 jul 08:08 ..<br />
lrwxr-xr-x   1 root  wheel    5  7 may 20:39 1.3 -&gt; 1.3.1<br />
drwxr-xr-x   3 root  wheel  102 29 sep  2007 1.3.1<br />
lrwxr-xr-x   1 root  wheel    5 21 oct  2007 1.4 -&gt; 1.4.2<br />
lrwxr-xr-x   1 root  wheel    3  7 may 20:39 1.4.1 -&gt; 1.4<br />
drwxr-xr-x   8 root  wheel  272 21 oct  2007 1.4.2<br />
lrwxr-xr-x   1 root  wheel    5 21 oct  2007 1.5 -&gt; 1.5.0<br />
drwxr-xr-x   8 root  wheel  272 21 oct  2007 1.5.0<br />
lrwxr-xr-x   1 root  wheel    5  7 may 20:39 1.6 -&gt; 1.6.0<br />
drwxr-xr-x   8 root  wheel  272  7 may 20:39 1.6.0<br />
drwxr-xr-x   8 root  wheel  272  7 may 20:40 A<br />
lrwxr-xr-x   1 root  wheel    1 15 jul 08:57 Current -&gt; A<br />
lrwxr-xr-x   1 root  wheel    3 15 jul 08:59 CurrentJDK -&gt; 1.5</p></blockquote>
<p>Como podéis ver, en estos momentos mi <em>CurrentJDK</em> está usando la 1.5 y mi <em>Current</em> apunta a <em>A.</em></p>
<p>Para hacer que el JDK 1.6 sea el actual, tendréis que hacer:</p>
<blockquote><p>ln -hfs 1.6 Current<br />
y<br />
ln -hfs 1.6 CurrentJDK</p></blockquote>
<p>Así es tal como <a href="http://darelltan.multiply.com/journal/item/515">darrell</a> lo explica, y es parecido a como el script lo hace. Todo esto hay que hacerlo como <strong>super usuario</strong>.</p>
<p>El porqué algunas aplicaciones dejan de funcionar hay que encontrarlo a que existen <a href="http://java.dzone.com/news/java-6-mac-worsest-release-eve">algunos problemas</a> en esta versión, que Apple no ha considerado en solucionar aún:</p>
<blockquote><p>- Sólo soporta 64 bits: adios a los applets en Safari.<br />
- No hay soporte para Cocoa: aplicaciones como Cyberdurk dejarán de funcionar. Esto no <em>sólo</em> significa que no podamos tener look&amp;feel de Mac OS sino que también perderemos algunas de las utilidades tales, como poder usar Growl como sistema de notificación, por ejemplo.</p></blockquote>
<p>Si el tema de cómo está organizado el directorio de versiones de Java y el porqué de esta cosas, os interesa realmente, os  dejo unos links interesantes sobre todo esto, no sólo aplicable al JDK:</p>
<p><a href="http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/FrameworkAnatomy.html">Anatomy of Framework Bundles</a><br />
<a href="http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/VersionInformation.html">Framework Versions</a><br />
<a href="http://developer.apple.com/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WhatAreFrameworks.html#//apple_ref/doc/uid/20002303">What are Frameworks?<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/07/16/actualizar-jdk-16-en-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Conclusiones: OpenJavaDay 2008</title>
		<link>http://www.jenaiz.com/2008/07/01/conclusiones-openjavaday-2008/</link>
		<comments>http://www.jenaiz.com/2008/07/01/conclusiones-openjavaday-2008/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 17:45:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[opinión]]></category>
		<category><![CDATA[evento]]></category>
		<category><![CDATA[OpenJavaDay]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=66</guid>
		<description><![CDATA[Tras unos días de remanso, me gustaría contaros mis impresiones sobre el evento que la pasada semana se organizó en la Universidad Complutente, y al cual ya os comenté que asistiría.
Por mi parte pude asistir a todas las charlas que se dieron los dos días, pero no pude quedarme a los talleres, otra vez será. [...]]]></description>
			<content:encoded><![CDATA[<p>Tras unos días de remanso, me gustaría contaros mis impresiones sobre el evento que la pasada semana se organizó en la Universidad Complutente, y al cual ya os comenté que asistiría.</p>
<p>Por mi parte pude asistir a todas las charlas que se dieron los dos días, pero no pude quedarme a los talleres, otra vez será. La verdad es que se habló de todo: Cherokee, Software Quality Assurance, JCR, Struts 2, Grails, RIA, Netbeans Rich Client Platform, Maven, JavaME, y un largo etcétera.</p>
<p>Me gustaría hablar de todas ellas, cada una a su modo me aportó algo interesante, las experiencias vertidas, los problemas con los que se habían topado. Sin embargo mi memoria y las que más se me quedaron grabadas, por determinados temas fueron dos charlas:  <strong>Software Quality Assurance</strong>, impartida por Francisco Morero Peyrona y <strong>Desarrollo JavaME SIN necesidad de portabilidad</strong>, impartida por Curro Rueda.</p>
<p>Por su parte Peyrona logró hacerme recordar mi último proyecto, a cada cosa que Peyrona contaba, me acordaba de una situación distinta, de una fase. Como comentaba, la responsabilidad de que se pueda garantizar calidad en cada una de las partes, recae en cuánta calidad queremos dar a cada fase más que en sí realmente podemos dar dicha calidad. Una conclusión extraida allí mismo, hablando la voz de la experiencia:</p>
<blockquote><p>Dime cuánto quieres gastar y te diré cuantas garantías de calidad tendrá tu software.</p></blockquote>
<p>Por otro lado Curro me hizo recordar una época anterior, en la que trabajé con móviles, y pude realizar algunas cosillas, y digo bien, <strong>cosillas</strong>, porque oirle hablar de los problemas que se habían encontrado, oirle decir que el orden en la ejecución de determinadas funciones afectaba a que determinados terminales funcionen y otros no, el ver como resolvieron el problema de los tamaños de las fuentes, cómo ahorrar en cantidad de espacio en memoria, y un largo etcétera. Sin duda me hace recordar que yo hice <strong>cosillas</strong>, y ellos han realizado un trabajo impresionante para garantizar que con un sólo jar, puedas tener una aplicación corriendo en una gran cantidad de dispositivos, al margen del:</p>
<blockquote><p>Java Write Once, Run Anywhere.</p></blockquote>
<p>&#8230; y de la cruda realidad.</p>
<p>Una espinita que se me quedó clavada fue oir en la mesa redonda sobre frameworks web algunas cosas sobre Ruby on Rails, que ya han sido suficientemente desmitificadas y demostradas, o algunas otras que carecen de fundamento.</p>
<p>Por otro lado, destacar que como suele pasar en estos casos, hubo oportunidad de saludar a los amigos y de hacer nuevos conocidos, al igual que de cenar con algunos de ellos <img src='http://www.jenaiz.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> , un saludo a todos ellos y nos vemos en la próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/07/01/conclusiones-openjavaday-2008/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Entrevista a Rod Johnson sobre SpringSource Application Platform</title>
		<link>http://www.jenaiz.com/2008/05/07/entrevista-a-rod-johnson-sobre-springsource-application-platform/</link>
		<comments>http://www.jenaiz.com/2008/05/07/entrevista-a-rod-johnson-sobre-springsource-application-platform/#comments</comments>
		<pubDate>Wed, 07 May 2008 08:51:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Empresas]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[opinión]]></category>
		<category><![CDATA[entrevista]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=62</guid>
		<description><![CDATA[Hace pocos días SpringSource liberaba la beta de SpringSource Application Platform. La verdad es que medios como: Infoq, javahispano, yahoo, theserverside, etc, se han hecho eco de la noticia. Hasta ahora no había querido comentar nada, dado que tenía ganas de descubrir algo más en profundidad sobre el mismo. En principio me parecía un nuevo [...]]]></description>
			<content:encoded><![CDATA[<p>Hace pocos días SpringSource liberaba la <a href="http://www.springsource.com/beta/applicationplatform/membershipform.php">beta</a> de SpringSource Application Platform. La verdad es que medios como: Infoq, javahispano, yahoo, theserverside, etc, se han hecho eco de la noticia. Hasta ahora no había querido comentar nada, dado que tenía ganas de descubrir algo más en profundidad sobre el mismo. En principio me parecía un nuevo <em>server</em>, sin embargo una <a href="http://java.dzone.com/news/interview-rod-johnson-springso">entrevista</a> realizada a Rod Johnson en dzone me ha descubierto que la idea de <em>Platform</em> se acerca más a ellos.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://java.dzone.com/sites/all/files/SpringSource%20Application%20Platform%20Diagram.png" alt="" width="500" /></p>
<p>La plataforma está basada en la tecnología OSGi de forma interna, además de permitir su uso al usuario final. Comenta la participación de SpringSource en orientar más a OSGi al sector empresarial. También han estado trabajando de forma intensa en la nueva versión de Spring la 2.5.</p>
<p>El porqué su Application Platform, no implementa Java EE 5 según sus propias palabras:</p>
<blockquote><p>[...]does not satisfy the needs of our customers[...]</p></blockquote>
<p>También es cierto que nos habla de incompatibilidades entre OSGi y Java EE. Creen que el <a href="http://jcp.org/en/jsr/detail?id=277">JSR-277</a> y OSGi podrían convivir de una mejor manera.</p>
<p>Con OSGi tendremos una mejor, más eficiente y rápida manera de desplegar/testear y de redesplegar nuestras aplicaciones. Pudiendo desplegar sólo las partes que hayan cambiado. Podremos empaquetar en grupos y versionar esos paquetes (bundles). Tendremos más modularidad y un sistema de versiones encargado de todo ello, manejado por el servidor. Dando al usuario un mayor control sobre la división de la aplicación. Podremos hacer uso de dos versiones distintas de una librería, especificando al servidor la versión que queremos utilizar. OSGi y la forma de trabajar con bundles, permitirá una forma más rápida de parchear posibles fallos en su servidor.</p>
<p>La licencia es GPLv3, por lo que la gente podrá crear plugins para la infraestructura, y liberarlos como open source.</p>
<p>La explicación a ser Platform y no server:</p>
<blockquote><p>We didn&#8217;t want to call it a server because it will be able to be extended and accept different deployment modules, so it will be broader in scope than a typical server.</p></blockquote>
<p>Algo que nos facilitará la vida de cara al desarrollo, es SpringSource Tool Suite. Podremos declarar módulos OSGi, pudiendo desplegar sólo las partes que han cambiado. Aunque esto estará disponible para sus clientes, proveeran alguna herramienta adicional para open source.</p>
<p>La conclusión del para qué y el porqué ahora, viene dada al final de la entrevista. Concluyendo:<br />
- Es el momento correcto, el mercado y los analistas lo confirman.<br />
- La idea de los servidores tradicionales es demasiado anticuada y OSGi plantea grandes beneficios junto con Spring.<br />
- Y por los beneficios reales: inicios rápidos, da solución al versionado, manejo de librerías y dependencias y cree que:</p>
<blockquote><p>the product is introduced in the right place at the right time.</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2008/05/07/entrevista-a-rod-johnson-sobre-springsource-application-platform/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Es Java o el ambiente?</title>
		<link>http://www.jenaiz.com/2007/09/19/a%c2%bfes-java-o-el-ambiente/</link>
		<comments>http://www.jenaiz.com/2007/09/19/a%c2%bfes-java-o-el-ambiente/#comments</comments>
		<pubDate>Wed, 19 Sep 2007 09:00:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[opinión]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=47</guid>
		<description><![CDATA[Reconozco que programar en Java me gusta, aún no he llegado al punto de odiar el lenguaje, la tecnología o estar extasiado de todo lo que le rodea. Sin embargo no dejo de plantearme algunas veces si las cosas no deberían ser algo más sencillas.
Es cierto que la curva de aprendizaje de Java es elevada, [...]]]></description>
			<content:encoded><![CDATA[<p>Reconozco que programar en Java me gusta, aún no he llegado al punto de odiar el lenguaje, la tecnología o estar extasiado de todo lo que le rodea. Sin embargo no dejo de plantearme algunas veces si las cosas no deberían ser algo más sencillas.</p>
<p>Es cierto que la curva de aprendizaje de Java es elevada, que se necesita tirar muchas líneas de código para determinadas tareas, que el conocimiento de todas las librerías que existen es imposible, que para un proyecto de cierta embergadura en Java se necesita un equipo quizás más elevado que para otras tecnologías.</p>
<p>Algunas veces me encuentro con <a href="http://www.russellbeattie.com/blog/java-needs-an-overhaul">historias</a> que no me dejan indiferente porque quizás no todos, pero sí te llegan al alma algunas curiosidades que cuentan. He visto en ocasiones que para realizar determinadas tareas necesitas escribir más líneas de la cuenta.</p>
<p>¿Es un problema de la tecnología? ¿Es un problema del modo en que hacemos los proyectos? ¿Está el problema en los equipos gestores? No sé que ocurrirá en otros países, pero no es la primera vez que oigo a alguien con suficiente experiencia y ganas por la tecnología decir que cada vez <strong>odia</strong> más desarrollar en general y con Java en particular.</p>
<p>¿Son los lenguajes de script la solución? Cuando pienso en estas <em>generalizaciones</em> que me encuentro por ahí, siempre me acuerdo de una charla en el primer Congreso de JavaHispano donde un colosal Ricardo Devis con una forma extravagante, no dudó es destrozar no una tecnología en concreto sino el mal uso que en demasiadas ocasiones hacemos de ella. No uses una tecnología para hacerlo todo, si no atente a las consecuencias.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2007/09/19/a%c2%bfes-java-o-el-ambiente/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Curso de JSF</title>
		<link>http://www.jenaiz.com/2007/02/08/curso-de-jsf/</link>
		<comments>http://www.jenaiz.com/2007/02/08/curso-de-jsf/#comments</comments>
		<pubDate>Thu, 08 Feb 2007 12:48:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Proyectos]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsf]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=36</guid>
		<description><![CDATA[Hay veces que da gusto decir las cosas, y estas es una de ellas.
JavaConGanas inicia su primer curso, de la mano de Alberto Molpeceres, yo por mi parte ya estoy apuntado.
Daos prisa, quedan pocas plazas: anuncio
]]></description>
			<content:encoded><![CDATA[<p>Hay veces que da gusto decir las cosas, y estas es una de ellas.</p>
<p><a href="http://www.javaconganas.com">JavaConGanas</a> inicia su primer curso, de la mano de <a href="http://weblog.linkingpaths.com">Alberto Molpeceres</a>, yo por mi parte ya estoy apuntado.</p>
<p>Daos prisa, quedan pocas plazas: <a href="http://weblog.linkingpaths.com/index.php?/archives/100-Lo-prometido-es-deuda-curso-de-JSF.html">anuncio</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2007/02/08/curso-de-jsf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Java 6 de IBM, una reflexión</title>
		<link>http://www.jenaiz.com/2007/01/24/java-6-de-ibm-una-reflexia%c2%b3n/</link>
		<comments>http://www.jenaiz.com/2007/01/24/java-6-de-ibm-una-reflexia%c2%b3n/#comments</comments>
		<pubDate>Wed, 24 Jan 2007 20:00:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Open Source]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ibm]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=33</guid>
		<description><![CDATA[Leyendo la noticia acerca de la versión beta de Java 6 de IBM (en inglés), me han asaltado algunas hipótesis, quizás sin fundamento o quizás no tanto.
He visto en la web de IBM que los sistemas operativos para los que que esta JVM es distribuida son:
- Linux® on x86
- Linux® on PowerPC® 32-bit
- Linux® on [...]]]></description>
			<content:encoded><![CDATA[<p>Leyendo la noticia <a href="http://www.javahispano.org/news.item.action?id=382740661">acerca de la versión beta de Java 6 de IBM</a> (<a href="http://feeds.feedburner.com/~r/techtarget/tsscom/home/~3/79590129/thread.tss">en inglés</a>), me han asaltado algunas hipótesis, quizás sin fundamento o quizás no tanto.</p>
<p>He visto en la web de IBM que los sistemas operativos para los que que esta JVM es distribuida son:</p>
<blockquote><p>- Linux® on x86<br />
- Linux® on PowerPC® 32-bit<br />
- Linux® on PowerPC® 64-bit<br />
- Linux® on AMD64/EM64T<br />
- IBM AIX® on PowerPC 32-bit<br />
- IBM AIX® on PowerPC 64-bit</p></blockquote>
<p>Al ver esto, se me plantea una duda con respecto a la elección de IBM de no soportar plataformas Windows. Siendo totalmente prácticos e irreflexivos, podríamos pensar que esta estrategia está totalmente equivocada, tengamos en cuenta que la mayor parte de usuarios cuentan con Windows como sistema operativo; y claro, esto podría llevarnos a fabricar la hipótesis, Â¿algo errada!, de que su estrategia empresarial está totalmente equivocada, dado que de esta forma no van a conseguir que su JVM sea utilizada por el público en general, ni por los desarrolladores que tengan que trabajar en entornos Windows, que son unos pocos.</p>
<p>Quizás, la hipótesis pueda ser otra. IBM como gigante de la informática que es, cuenta con muchas vías de negocio dentro de la compañía y una que no debemos olvidar son sus máquinas. Dispone de una vía de negocio muy amplia con el negocio de servidores. No parece extraño pensar, por lo tanto, que si optimizas un JVM para los sistemas operativos que más se utilizan en tus máquinas, a la vez estás haciendo más atractivo el potencial que ofrecen tus servidores frente a los del mercado. En este punto no podemos olvidar que el principal representante de Java, Sun MicroSystems, también trabaja en ese mercado.</p>
<p>Por otro lado, me asalta la curiosidad. Si planteo un caso hipotético, un caso en el que el usuario de partida trabaja sobre windows, y realiza todo su desarrollo en dicha plataforma, necesita utilizar un JDK para ella, pongamos por caso que utiliza el de Sun, tras meses de desarrollo, su aplicación a sido preparada para un JDK, y ha sido más que probada, hasta la saciedad si se ha contemplado bien el tiempo de pruebas dentro del proyecto. Cabe hacerse la pregunta de si verdaderamente dicho software debe terminar o no ejecutándose en una JVM para la que apenás ha sido probada. Podrían presentarse, ¿incompatibilidades? Entiendo que no deberían de ser con respecto al lenguaje, pero cuando uno hace las cosas de diferente manera (me refiero a la JVM de IBM) se enfrenta a que quizás lo que el programador consideró más óptimo en un JDK-SUN no lo es en un JDK-IBM, por lo que parte del trabajo que se realizó en la fase de pruebas de desarrollo se ha perdido por completo. Además si hacemos bien las cosas, el salto de desarrollo a preproducción, implicará en la mayoría de los casos un tiempo extra para ver si el JDK-IBM continúa funcionando correctamente y nos ese mayor rendimiento del que hablábamos.</p>
<p>Preguntas que se me ocurren para aquellos que hayáis cambiado de un JDK-SUN a un JDK-IBM: ¿Es considerable el tiempo empleado en probar con un JDK y luego con el otro? Dado el modo en el que se suelen hacer las cosas para los cambios de desarrollo a preproducción y finalmente a producción, ¿os arriesgaríais a cambiar de una a otra?</p>
<p>A todo esto, ¿no os parece que así se pierde, un poco, una de las principales características de java, la multiplataforma?</p>
<p>(<a href=" https://www14.software.ibm.com/iwm/web/cc/earlyprograms/ibm/java6/">Más características</a>).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2007/01/24/java-6-de-ibm-una-reflexia%c2%b3n/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>sun-java en Ubuntu</title>
		<link>http://www.jenaiz.com/2006/11/16/sun-java-en-ubuntu/</link>
		<comments>http://www.jenaiz.com/2006/11/16/sun-java-en-ubuntu/#comments</comments>
		<pubDate>Thu, 16 Nov 2006 14:40:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=23</guid>
		<description><![CDATA[Cosas del destino, que me ha tocado reinstalar una máquina desde cero, utilizando Ubuntu. Y como es normal, lo primero que he hecho ha sido instalar el JDK de java.
La última vez que hice esto tuve que bajarme el binario de la web de Sun y seguir el proceso de instalación. Lo que pasa que [...]]]></description>
			<content:encoded><![CDATA[<p>Cosas del destino, que me ha tocado reinstalar una máquina desde cero, utilizando Ubuntu. Y como es normal, lo primero que he hecho ha sido instalar el JDK de java.</p>
<p>La última vez que hice esto tuve que bajarme el binario de la web de Sun y seguir el proceso de instalación. Lo que pasa que desde entonces ha llovido mucho, y para los que no lo sepáis, desde hace un tiempo se puede instalar la máquina virtual y algunas cosas más desde los repositorios de apt. El único problema que podríais encontrar, es que los repositorios por <em>default</em> de apt no incluyen el necesario para instalar la máquina virtual de Sun.</p>
<p>Investigando por la red, conseguí encontrar algo interesante: <a href="http://ubuntuguide.org/wiki/Ubuntu_Edgy#How_to_install_JRE_v5.0_Update_9">aquí</a>; sin embargo antes de poder ver cuales eran los repositorios que debía configurar, me acordé de <a href="http://www.nongnu.org/synaptic/">synaptic</a>, y decidí probar a ver que tal funcionaba. Y he ahí donde encontré un tesoro: <a href="https://jdk-distros.dev.java.net/ubuntu-dev.html">AQUÍ</a>. </p>
<p>Al hilo de esto os voy a comentar una cosa interesante. Por defecto las distribuciones que yo he instalado últimamente, si no le dices lo contrario, suelen instalar el gcj, que es la máquina virtual de Java de GNU, bien, pues existe un archivo interesante en la configuración de Linux: /etc/jvm en este se lista los directorios por orden de preferencia donde quieres que se busquen tus máquinas virtuales, en mi caso como siempre suelo utilizar la de Sun Microsystems, he eliminado el directorio de gcj y he dejado sólo el del jdk de sun.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2006/11/16/sun-java-en-ubuntu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JNI con Code:Blocks</title>
		<link>http://www.jenaiz.com/2006/09/28/jni-con-codeblocks/</link>
		<comments>http://www.jenaiz.com/2006/09/28/jni-con-codeblocks/#comments</comments>
		<pubDate>Thu, 28 Sep 2006 17:23:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[code:blocks]]></category>
		<category><![CDATA[jni]]></category>

		<guid isPermaLink="false">http://192.168.1.100/~jenaiz/wordpress/?p=4</guid>
		<description><![CDATA[Estreno esta nueva sección java dentro del blog hablando sobre un tema que parece haber resurgido de las cenizas, ni más ni menos que el uso de la tecnología JNI de Java. Para los no iniciados, decir que JNI es: Java Native Interface, y que sirve para integrar una aplicación java con código en C/C++. [...]]]></description>
			<content:encoded><![CDATA[<p>Estreno esta nueva sección java dentro del blog hablando sobre un tema que parece haber resurgido de las cenizas, ni más ni menos que el uso de la tecnología JNI de Java. Para los no iniciados, decir que JNI es: Java Native Interface, y que sirve para integrar una aplicación java con código en C/C++. Podéis descargaros <a href="http://java.sun.com/docs/books/jni/">The Java Native Interface, Programmer&#8217;s Guide and Specification</a> desde la web de Sun Microsystems y ver más cosas sobre dicha tecnología.</p>
<p>La misión en mi caso era sencilla, montar el típico ejemplo para ver como funciona <em>JNI</em> y como quería probar <a href="http://www.codeblocks.org/">Code::Blocks</a>, decidí buscar un artículo y probar suerte. Increiblemente no conseguía hacer funcionar el ejemplo más sencillo que puedes imaginar, y sin embargo todo el mundo lo hacía funcionar más o menos rápido. Desesperado por la falta de habilidad aparente, me dirigí a la web de Sun y me descarge el manual que os he comentado, y como podéis ver, dedica su capítulo 2 a hacer funcionar el ejemplo, así que me dispuse a seguir paso a paso el procedimiento como si de una receta se tratase.</p>
<p>Incluso la parte de java la hice con bloc de notas en mano, nada de Eclipse y haciendo copy&#038;paste del código, para no decirme a mi mismo que me había equivocado. El misterio empezó a desvelarse, cuando llegué a la parte de compilación del código en C para obtener la DLL. Dicho manual utiliza Microsoft Visual C++ como compilador, ahí fue donde empezé a dudar de lo que yo había hecho con <a href="http://www.codeblocks.org/">Code::Blocks</a>. Cuando terminé el ejemplo, todo funcionaba, incluso logré hacer funcionar todo con lo que había montado en entorno Eclipse y con mis clases iniciales. Sin embargo aunque para este ejemplo disponía de Visual C++, no era mi intención seguir utilizándolo, y pensé en buscar la clave a porqué con <a href="http://www.codeblocks.org/">Code::Blocks</a> no había sido capaz de lograr la hazaña.</p>
<p>En principio, ya había buscado en google cosas sobre jni y <a href="http://www.codeblocks.org/">Code::Blocks</a> pero no creí que el fallo fuese el último sino mi inexperiencia con dicha tecnología. Localizado el error, decidí hacer búsquedas más concretas. Resulta que en un foro de dicho software, se encuentra la respuesta: Code::Blocks no produce una buena DLL sino que cambia el nombre de los métodos, por lo que luego no son accesibles desde java por que los nombres a los que hacemos referencia han cambiado. <a href="http://forums.codeblocks.org/index.php?topic=1576.0">Fuente</a>.</p>
<p>En este mismo hilo viene como se obtiene la solución. Tenemos que recurrir a la línea de comandos y generar la librería dinámica desde este entorno. Sin embargo si haces lo que en el foro se dice, la solución que un tal <em>Michael</em> da, no obtendrás el éxito que esperabas, así que tuve que seguir buscando. El procedimiento a seguir es algo así como:</p>
<p>- Para compilar el código C que tenemos:</p>
<p>		gcc -c HelloWorld.c</p>
<p>- Para obtener el fichero de definición necesario para la generación de la DLL:</p>
<p>		dlltool -z HelloWorld.def HelloWorld.o</p>
<p>- En este punto viene nuestra intervención manual, este fichero generado es incorrecto, al editarlo os daréis cuenta que los nombres de los métodos han cambiado y por ejemplo nuestro método antes: Java_HelloWorld_print ha pasado a <strong>Java_HelloWorld_print@8 @ 1</strong>, <strong>he aquí el error!!!!</strong>. Por eso nuestras clases Java nos dan el error de que no pueden encontrar el método en cuestión. Osea, que no es Code::Blocks quien tiene el error sino el compilador gcc que no es capaz de generar bien este archivo, que es necesario para generar la DLL. La solución pasa por editar esto a mano y eliminar los caracteres extraños y luego ejecutar:</p>
<p>		gcc -shared -o HelloWorld.dll HelloWorld.o HelloWorld.def</p>
<p>Esta DLL ya si es funcional y operativa, tanto como la de Visual C++. </p>
<p>Si por algún casual probáis:</p>
<p>		gcc -shared -o HelloWorld.dll HelloWorld.o</p>
<p>Veréis que os genera la DLL sin necesidad de necesitar el .def, sin embargo si váis a comprobarlo, podréis ratificar que dicha DLL tampoco es buena. Supongo que en este punto gcc evita el segundo paso y se genera un .def que utiliza internamente.</p>
<p>Comprobado esto, podemos seguir utilizando <a href="http://www.codeblocks.org/">Code::Blocks</a> que sin duda es <em>Open Source</em> por si alguno lo dudábais.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jenaiz.com/2006/09/28/jni-con-codeblocks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
