<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comentarios en: Creando un sistema con plugins en Java</title>
	<atom:link href="http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/feed/" rel="self" type="application/rss+xml" />
	<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/</link>
	<description>Repositorio de Información</description>
	<lastBuildDate>Sun, 15 Nov 2009 17:29:15 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Por: joalbert</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-416</link>
		<dc:creator>joalbert</dc:creator>
		<pubDate>Tue, 29 Sep 2009 14:44:10 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-416</guid>
		<description>Bueno ya logre hacer mi programa, y le incorpore dos plugins. Es un mini editor, todo lo cree a lo criollo a PATA, asi si lo entendi fino. ahora hacerlo lo un IDE mas facil, pero primero lo primero. Gracias por el tuto, no he visto muchos por alli, y las pag que encuentro me dirigen aqui ?? si saben sobre otros, o si pueden hacer el tuto mas avanzado me gustaria mucho... Gracias!!</description>
		<content:encoded><![CDATA[<p>Bueno ya logre hacer mi programa, y le incorpore dos plugins. Es un mini editor, todo lo cree a lo criollo a PATA, asi si lo entendi fino. ahora hacerlo lo un IDE mas facil, pero primero lo primero. Gracias por el tuto, no he visto muchos por alli, y las pag que encuentro me dirigen aqui ?? si saben sobre otros, o si pueden hacer el tuto mas avanzado me gustaria mucho&#8230; Gracias!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: joalbert</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-415</link>
		<dc:creator>joalbert</dc:creator>
		<pubDate>Mon, 28 Sep 2009 18:56:33 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-415</guid>
		<description>Señores todo fino y todo, pero trate de hacer un ejemplo en eclipse y no es igual pues... tal ves si pueden hacen uno pero en eclipse o sino, sin algun IDE, seria fino para entender con exactitud como hacer un plugin. es que eso tambin de los paquetes naaaa, paquetes por todas partes y me enrredo más. sorry!!! gracias por el articulo, me interesa full.</description>
		<content:encoded><![CDATA[<p>Señores todo fino y todo, pero trate de hacer un ejemplo en eclipse y no es igual pues&#8230; tal ves si pueden hacen uno pero en eclipse o sino, sin algun IDE, seria fino para entender con exactitud como hacer un plugin. es que eso tambin de los paquetes naaaa, paquetes por todas partes y me enrredo más. sorry!!! gracias por el articulo, me interesa full.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: EdwinF.</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-401</link>
		<dc:creator>EdwinF.</dc:creator>
		<pubDate>Fri, 21 Aug 2009 21:41:24 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-401</guid>
		<description>Hombre, felicitaciones por el post. Te me adelantaste con el articulo :-), en mi tesis de grado hago lo mismo, exactamente lo mismo, con la diferencia de agregar una clase de retorno en caso de no encontrar el tipo (ademas de dejarle al usuario definir los plugins/servicios que requiere).

Saludos.</description>
		<content:encoded><![CDATA[<p>Hombre, felicitaciones por el post. Te me adelantaste con el articulo <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , en mi tesis de grado hago lo mismo, exactamente lo mismo, con la diferencia de agregar una clase de retorno en caso de no encontrar el tipo (ademas de dejarle al usuario definir los plugins/servicios que requiere).</p>
<p>Saludos.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Le Funes</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-290</link>
		<dc:creator>Le Funes</dc:creator>
		<pubDate>Sun, 15 Mar 2009 12:45:22 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-290</guid>
		<description>@babyware No vas a tener problemas al cargar nuevos jars al classpath, pero para que te tome un cambio sobre uno ya cargado deberías reiniciar la aplicación con este sistema de ClassLoader.

Para solucionar este comportamiento lo más fácil es directamente implementar un nuevo ClassLoader independiente del por defecto del sistema.

Saludos</description>
		<content:encoded><![CDATA[<p>@babyware No vas a tener problemas al cargar nuevos jars al classpath, pero para que te tome un cambio sobre uno ya cargado deberías reiniciar la aplicación con este sistema de ClassLoader.</p>
<p>Para solucionar este comportamiento lo más fácil es directamente implementar un nuevo ClassLoader independiente del por defecto del sistema.</p>
<p>Saludos</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: barbyware</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-207</link>
		<dc:creator>barbyware</dc:creator>
		<pubDate>Sun, 07 Dec 2008 11:21:32 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-207</guid>
		<description>Me gustaria saber como se recargaria un plugin.

Estoy intentando montar un sistema de preload, en los que se cargaria una clase a partir de un classloader o algo parecido.

Me encuentro con el problema de la recarga que tendria que hacer para recarga.</description>
		<content:encoded><![CDATA[<p>Me gustaria saber como se recargaria un plugin.</p>
<p>Estoy intentando montar un sistema de preload, en los que se cargaria una clase a partir de un classloader o algo parecido.</p>
<p>Me encuentro con el problema de la recarga que tendria que hacer para recarga.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Jhugs</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-206</link>
		<dc:creator>Jhugs</dc:creator>
		<pubDate>Fri, 05 Dec 2008 20:32:30 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-206</guid>
		<description>Good, this example It&#039;s very easy to understand, thanks. :)</description>
		<content:encoded><![CDATA[<p>Good, this example It&#8217;s very easy to understand, thanks. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: lefunes</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-176</link>
		<dc:creator>lefunes</dc:creator>
		<pubDate>Tue, 14 Oct 2008 18:39:28 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-176</guid>
		<description>@Pablo tal como le comentaba a Diego en el post anterior, es precisamente la alternativa para llegar al mismo resultado: Utilizar alguna subclase de ClassLoader (ya seá una propia o una como URLClassLoader) para no tocar el ClassLoader del sistema vía reflección.

De hecho si solo se vá a utilizar el ClassLoader para cargar los .jars de los plugins se puede llevar adelante de la forma que describis, ya que no es necesario tener la clase ModificadorClassPath &quot;esperando&quot; agregar clases al ClassLoader.

Muchas gracias por compartir tu experiencia. Espero dentro de poco poder escribir algo al respecto.

Saludos</description>
		<content:encoded><![CDATA[<p>@Pablo tal como le comentaba a Diego en el post anterior, es precisamente la alternativa para llegar al mismo resultado: Utilizar alguna subclase de ClassLoader (ya seá una propia o una como URLClassLoader) para no tocar el ClassLoader del sistema vía reflección.</p>
<p>De hecho si solo se vá a utilizar el ClassLoader para cargar los .jars de los plugins se puede llevar adelante de la forma que describis, ya que no es necesario tener la clase ModificadorClassPath &#8220;esperando&#8221; agregar clases al ClassLoader.</p>
<p>Muchas gracias por compartir tu experiencia. Espero dentro de poco poder escribir algo al respecto.</p>
<p>Saludos</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Pablo</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-174</link>
		<dc:creator>Pablo</dc:creator>
		<pubDate>Tue, 14 Oct 2008 13:50:55 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-174</guid>
		<description>Muchas gracias por tu post, me sirvió mucho.
Acerca de incorporar los .jars al classpath mediante la clase ModificadorClassPath de tu post anterior, te quería comentar que en vez de modificar el classpath de la aplicación, se puede crear un URLClassLoader sólo para el propósito de cargar los plugins.
Para esto, creé un URLClassLoader usando el constructor que recibe una lista de URL, entregándole los path de los plugins jar.
Luego, usé el método ServiceLoader.load(Class service, ClassLoader loader) y le pasé el URLClassLoader creado.
De esta manera el classpath original de la JVM permanece limpio, sin ser tocado.</description>
		<content:encoded><![CDATA[<p>Muchas gracias por tu post, me sirvió mucho.<br />
Acerca de incorporar los .jars al classpath mediante la clase ModificadorClassPath de tu post anterior, te quería comentar que en vez de modificar el classpath de la aplicación, se puede crear un URLClassLoader sólo para el propósito de cargar los plugins.<br />
Para esto, creé un URLClassLoader usando el constructor que recibe una lista de URL, entregándole los path de los plugins jar.<br />
Luego, usé el método ServiceLoader.load(Class service, ClassLoader loader) y le pasé el URLClassLoader creado.<br />
De esta manera el classpath original de la JVM permanece limpio, sin ser tocado.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: lefunes</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-168</link>
		<dc:creator>lefunes</dc:creator>
		<pubDate>Sun, 07 Sep 2008 14:36:01 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-168</guid>
		<description>@hectornet felicitaciones, muy buen trabajo! También me parece destacable de la parte de plugins la forma de incorporar las opciones del plugin a la configuración general de LinCE

Por ejemplo una forma de utilizar algo similar a la que conseguís con los atributos del manifest con ServiceLoader sería crear una interface IPlugin:

[sourcecode language=&quot;java&quot;]
public interface IPlugin{
    String getVersion();
    String getDependencias();
    void load();
    void unload();
}
[/sourcecode]

Que cada plugin implementaria.

Saludos</description>
		<content:encoded><![CDATA[<p>@hectornet felicitaciones, muy buen trabajo! También me parece destacable de la parte de plugins la forma de incorporar las opciones del plugin a la configuración general de LinCE</p>
<p>Por ejemplo una forma de utilizar algo similar a la que conseguís con los atributos del manifest con ServiceLoader sería crear una interface IPlugin:</p>
<pre class="brush: java;">
public interface IPlugin{
    String getVersion();
    String getDependencias();
    void load();
    void unload();
}
</pre>
<p>Que cada plugin implementaria.</p>
<p>Saludos</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: hectornet</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-167</link>
		<dc:creator>hectornet</dc:creator>
		<pubDate>Sun, 07 Sep 2008 12:15:11 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-167</guid>
		<description>Hola,
para mi proyecto de fin de carrera implementé un sistema de carga de plugins.
Lleva un script en ANT que se encarga de compilar y empaquetar los plugins.
Los plugins son tambien archivos JAR que se copian en el directorio plugins, pero en su archivo MANIFEST.MF hay un atributo que indica que método debe llamarse al cargar y descargar el plugin (usando introspección).
También se implementa un sistema sencillo de chequeo de dependencias, los plugins que no las satisfagan no se cargarán.
Hay una descripción mas detallada a partir de la página 87 de la memoria de mi PFC: http://compan.iespana.es/MemoriaPFC_LinCE.pdf y tambien podeis descargaros el código en: http://www.supercable.es/~compan1
o contactar conmigo.

Saludos y espero que sea útil!</description>
		<content:encoded><![CDATA[<p>Hola,<br />
para mi proyecto de fin de carrera implementé un sistema de carga de plugins.<br />
Lleva un script en ANT que se encarga de compilar y empaquetar los plugins.<br />
Los plugins son tambien archivos JAR que se copian en el directorio plugins, pero en su archivo MANIFEST.MF hay un atributo que indica que método debe llamarse al cargar y descargar el plugin (usando introspección).<br />
También se implementa un sistema sencillo de chequeo de dependencias, los plugins que no las satisfagan no se cargarán.<br />
Hay una descripción mas detallada a partir de la página 87 de la memoria de mi PFC: <a href="http://compan.iespana.es/MemoriaPFC_LinCE.pdf" rel="nofollow">http://compan.iespana.es/MemoriaPFC_LinCE.pdf</a> y tambien podeis descargaros el código en: <a href="http://www.supercable.es/~compan1" rel="nofollow">http://www.supercable.es/~compan1</a><br />
o contactar conmigo.</p>
<p>Saludos y espero que sea útil!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: lefunes</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-166</link>
		<dc:creator>lefunes</dc:creator>
		<pubDate>Sat, 06 Sep 2008 23:54:37 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-166</guid>
		<description>@Seraphinux muchas gracias

@greeneyed Me alegro que te haya servido (y no solo a mi :))

@batch4j ClassLoader es participe principal en este proceso y ServiceLoader no busca reemplazarlo. De hecho para cargar clases al classpath lo estamos utilizando directamente. Lo que ServiceLoader busca es evitarnos implementar el mecanismo de registro y descubrimiento de servicios (en este caso, las clases que implementan una determinada interface)

En mi caso particular, anteriormente para realizar este mismo proceso caía siempre en al punto de tener que llevar un registro (con un XML por ejemplo) de las clases que quería instanciar según los plugins cargados. Esto se simplifica usando ServiceLoader ya que simplemente le indicamos la interfaz que tienen que implementar las clases que queremos cargar y cuando las necesitemos (vía el ClassLoader, por supuesto) las obtendremos.

Esto no es algo que no está probado, de hecho NetBeans utiliza un servicio de descubrimiento de plugins inspirado en ServiceLoader.

Gracias por el comentario, realmente es algo que no había quedado claro</description>
		<content:encoded><![CDATA[<p>@Seraphinux muchas gracias</p>
<p>@greeneyed Me alegro que te haya servido (y no solo a mi <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</p>
<p>@batch4j ClassLoader es participe principal en este proceso y ServiceLoader no busca reemplazarlo. De hecho para cargar clases al classpath lo estamos utilizando directamente. Lo que ServiceLoader busca es evitarnos implementar el mecanismo de registro y descubrimiento de servicios (en este caso, las clases que implementan una determinada interface)</p>
<p>En mi caso particular, anteriormente para realizar este mismo proceso caía siempre en al punto de tener que llevar un registro (con un XML por ejemplo) de las clases que quería instanciar según los plugins cargados. Esto se simplifica usando ServiceLoader ya que simplemente le indicamos la interfaz que tienen que implementar las clases que queremos cargar y cuando las necesitemos (vía el ClassLoader, por supuesto) las obtendremos.</p>
<p>Esto no es algo que no está probado, de hecho NetBeans utiliza un servicio de descubrimiento de plugins inspirado en ServiceLoader.</p>
<p>Gracias por el comentario, realmente es algo que no había quedado claro</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: batch4j</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-165</link>
		<dc:creator>batch4j</dc:creator>
		<pubDate>Sat, 06 Sep 2008 13:59:02 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-165</guid>
		<description>Que hace service loader que no se pueda hacer 
utilizando un classloader normal.

Cuando lei el post al principio pense que era 
una manera de cargar clases dinamicamente.

No le encuentro ninguna ventaja respecto a 
hacerlo con un classloader.</description>
		<content:encoded><![CDATA[<p>Que hace service loader que no se pueda hacer<br />
utilizando un classloader normal.</p>
<p>Cuando lei el post al principio pense que era<br />
una manera de cargar clases dinamicamente.</p>
<p>No le encuentro ninguna ventaja respecto a<br />
hacerlo con un classloader.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: greeneyed</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-164</link>
		<dc:creator>greeneyed</dc:creator>
		<pubDate>Thu, 04 Sep 2008 07:50:06 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-164</guid>
		<description>Lo tenia en mente pero no me había decidido hasta ahora a probarlo, lo he leido aquí y me ha animado a ponerme, así que ya he implementado un sistema para cargar unas clases como servicios, que antes cargaba en base a ifs :).

Así que gracias, este mini-tutorial ha sido suficiente ;).</description>
		<content:encoded><![CDATA[<p>Lo tenia en mente pero no me había decidido hasta ahora a probarlo, lo he leido aquí y me ha animado a ponerme, así que ya he implementado un sistema para cargar unas clases como servicios, que antes cargaba en base a ifs <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Así que gracias, este mini-tutorial ha sido suficiente <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Seraphinux</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-162</link>
		<dc:creator>Seraphinux</dc:creator>
		<pubDate>Wed, 03 Sep 2008 23:12:17 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-162</guid>
		<description>WooW

Tio te quedo genial este tuto, hace dias me preguntaba como funcionaba esas yerbas de los plugins. Me lo apunto para posterior analisis.

Saludos!!!</description>
		<content:encoded><![CDATA[<p>WooW</p>
<p>Tio te quedo genial este tuto, hace dias me preguntaba como funcionaba esas yerbas de los plugins. Me lo apunto para posterior analisis.</p>
<p>Saludos!!!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Por: Bitacoras.com</title>
		<link>http://lefunes.wordpress.com/2008/09/03/creando-un-sistema-con-plugins-en-java/#comment-161</link>
		<dc:creator>Bitacoras.com</dc:creator>
		<pubDate>Wed, 03 Sep 2008 22:44:27 +0000</pubDate>
		<guid isPermaLink="false">http://lefunes.wordpress.com/?p=182#comment-161</guid>
		<description>&lt;strong&gt;Información Bitacoras.com...&lt;/strong&gt;

Si lo deseas, puedes hacer click para valorar este post en Bitacoras.com. Gracias....</description>
		<content:encoded><![CDATA[<p><strong>Información Bitacoras.com&#8230;</strong></p>
<p>Si lo deseas, puedes hacer click para valorar este post en Bitacoras.com. Gracias&#8230;.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
