<?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>RIA212&#187; Flex</title>
	<atom:link href="http://ria212.com/blog/tag/flex/feed/" rel="self" type="application/rss+xml" />
	<link>http://ria212.com</link>
	<description>Rich internet Applications en tu idioma</description>
	<lastBuildDate>Thu, 08 Mar 2012 21:51:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Más sobre AlivePDF&#8230;</title>
		<link>http://ria212.com/blog/2010/02/mas-sobre-alivepdf/</link>
		<comments>http://ria212.com/blog/2010/02/mas-sobre-alivepdf/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 00:30:55 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[alivepdf]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[pdf]]></category>
		<category><![CDATA[ria]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=214</guid>
		<description><![CDATA[Definitivamente, AlivePDF es el mejor esfuerzo que se ha realizado hasta ahora en la comunidad open source para el manejo de documentos PDF desde Action Script. Buscar una mejor alternativa para la creación y edición de documentos de este tipo desde clientes Flash o Flex, es simplemente perder el tiempo. Esta librería, creada por Thibault Imbert, ha estado en manos<a href="http://ria212.com/blog/2010/02/mas-sobre-alivepdf/">&#160;&#160;[ Read More ]</a>]]></description>
			<content:encoded><![CDATA[<p>Definitivamente, <a href="http://alivepdf.bytearray.org/">AlivePDF</a> es el mejor esfuerzo que se ha realizado hasta ahora en la comunidad open source para el manejo de documentos PDF desde Action Script. Buscar una mejor alternativa para la creación y edición de documentos de este tipo desde clientes Flash o Flex, es simplemente perder el tiempo.<span id="more-214"></span> Esta librería, creada por Thibault Imbert, ha estado en manos de <a href="http://code.google.com/p/alivepdf/">la comunidad</a> de desarrolladores desde el año 2007, por lo que ha transitado un camino de depuración colaborativa bastante extenso y conveniente,  dando como resultado una librería muy simple de usar pero más poderosa de lo que parece a simple vista, al manipular archivos PDF.</p>
<p>Preparé un ejemplo donde se puede apreciar algunas de las capacidades de esta librería:</p>
<ul>
<li>Rendering de texto</li>
<li>Rendering de imagenes</li>
<li>Rendering de enlaces a sitios web (links) sobre texto e imagenes</li>
</ul>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_EjemploPDF_Ria212_1139908886"
			class="flashmovie"
			width="400"
			height="200">
	<param name="movie" value="http://ria212.com/ejemplos/EjemploPDFRia212/EjemploPDF_Ria212.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://ria212.com/ejemplos/EjemploPDFRia212/EjemploPDF_Ria212.swf"
			name="fm_EjemploPDF_Ria212_1139908886"
			width="400"
			height="200">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>Demás está recomendarles que revisen la documentación sobre esta librería. Particularmente, cada vez que la utilizo, termino descubriendo, al menos, una funcionalidad desconocida para mi. El ASDoc viene incluido en el archivo de descarga, junto con un par de códigos de ejemplo en Flash y Air.</p>
<p>El código fuente está algo comentado pero, como siempre, las dudas son oídas con gusto.</p>
<p><a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>
<p><a href="http://ria212.com/ejemplos/EjemploPDFRia212/EjemploPDF_Ria212.html">EjemploPDFRia212</a><br />
<a href="http://ria212.com/ejemplos/EjemploPDFRia212/srcview/index.html">Código</a></p>
<p><a href="http://ria212.com/blog/2010/01/sobre-alivepdf-y-la-clase-filereference/">Sobre AlivePDF y la clase FileReference</a></p>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2010/02/mas-sobre-alivepdf/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Las 13 razones&#8230;</title>
		<link>http://ria212.com/blog/2010/01/las-13-razones/</link>
		<comments>http://ria212.com/blog/2010/01/las-13-razones/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 17:05:10 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[blazeds]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[ria]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=176</guid>
		<description><![CDATA[13 razones para que los programadores Java aprendan Adobe Flex y BlazeDS]]></description>
			<content:encoded><![CDATA[<p>El don <a href="http://twitter.com/rafaelochoa">rafaelochoa</a> me pidió que tradujera un <a href="http://www.infoq.com/articles/java-flex-blazeds">artículo</a> en el que hablan de unas controversiales &#8220;<a href="http://www.infoq.com/articles/java-flex-blazeds">13 razones para que los desarrolladores Java aprendan Flex y BlazeDS</a>&#8220;. Espero que la traducción se entienda y les recomiendo que chequeen los comentarios de los lectores en el artículo original, ya que varios desarrolladores exponen diversos e interesantes puntos de vista. Igualmente, aquí será bien recibido cualquier comentario que deseen hacer.<span id="more-176"></span></p>
<p><strong>13 razones para que los programadores Java aprendan Adobe Flex y BlazeDS</strong></p>
<p>Este artículo bosqueja las 13 razones por las que los programadores Java deberían aprender Flex y BlazeDS. Habla sobre por qué Flex con BlazeDS es una de las mejores opciones para el desarrollo de Rich Internet Applications (RIA), desde sitios web altamente interactivos hasta aplicaciones empresariales basadas en Java. Más importante aún, muestra el alto retorno de inversión que ofrece esta combinación, tanto para los desarrolladores como para las empresas.</p>
<p>Para bosquejar las 13 razones por las que los programadores Java deberían aprender BlazeDS, uso un dispensador de refrescos ficticio para mostrar cómo convertir un programa Java existente en una RIA. A través  del ejemplo, explico las diferentes en que puedes usar BlazeDS,  bien sea con tus aplicaciones Java ya existentes como con aplicaciones nuevas.</p>
<p><strong>Razón 1: Es de código abierto</strong></p>
<p>El núcleo  del kit de desarrollo (SDK) de Flex es un <em>framework</em> código abierto para desarrollar y mantener aplicaciones RIA que tengan la misma apariencia independientemente del navegador y sistema operativo donde se ejecuten. Flex es liberado bajo la licencia “Mozilla Public License”. Las aplicaciones Flex compiladas corren sobre la plataforma propietaria Adobe Flash.</p>
<p>BlazeDS es una tecnología código abierto para conectar Flex a Java mediante invocación de métodos remotos y mensajería. Esta tecnología corre sobre servidores de aplicaciones Java como un <em>servlet</em>, permitiéndote así usarla en cualquier aplicación web común hecha en Java. BlazeDS es licenciado bajo la licencia “GNU Lesser General Public License” (LGPL). Paralelamente al lanzamiento de BlazeDS, Adobe publicó la especificación del “ActionScript Message Format” (AMF), lo que permite que BlazeDS y Java puedan comunicarse con clientes Flex usando un formato binario de serialización de objetos bastante compacto.</p>
<p><strong>Razón 2: Tiene gran apoyo de la comunidad</strong></p>
<p>Flex posee una comunidad sumamente activa, con muchos proyectos aportados por la comunidad. Flex.org, un sitio web con noticias de la comunidad de desarrolladores, recibe contribuciones casi a diario, y el grupo de usuario Flex de Yahoo! Posee más de 11.000 miembros.</p>
<p>Por ejemplo, el proyecto FlexLib hospedado en Google Code ha aportado una  gran cantidad de componentes de interfaz de usuario (UI) de código abierto. Los proyectos Swiz y Mate han aportado <em>frameworks</em>  para apoyar el manejo de eventos en las aplicaciones. Y finalmente, Gorilla Logic ha aportado Flex Monkey para pruebas automatizadas de interfaces de usuario.</p>
<p><strong>Razón 3: Puedes tener un trabajo por seis meses más</strong></p>
<p>Según James Ward, un evangelizador Flex de Adobe, aún existe una gran demanda de desarrolladores Flex con experiencia. Aprender Flex te ofrece un conocimiento mercadeable que te pondrá por delante de la competencia.</p>
<p><strong>Razón 4: Retorno de inversión empresarial más alto</strong></p>
<p>En general, desarrollar aplicaciones web empresariales ha sido notoriamente difícil. Flex y BlazeDS no solo proporcionan herramientas de mayor capacidad, sino que, además, facilitan el desarrollo. El aumento en la productividad del desarrollador permite a las organizaciones entrar más rápido al mercado. Además, Flex y Flash brindan una experiencia de usuario más atractiva, lo que podría incrementar tanto el número de visitas a los sitios web como la tasa de persuasión.</p>
<p>Un ejemplo ideal de esto es la cadena de librerías Borders, quienes recientemente presentaron un nuevo sitio web con un “Estante Mágico”. Este sitio posee una interfaz hecha en Flash que simula la experiencia de hojear libros. Borders constató que esto incrementó enormemente la tasa de persuasión: “los clientes que usan esta interfaz hecha en Flash (que permite a los visitantes ver las portadas de libros, DVDs y CDs) son persuadidos a comprar en un 62% más que aquellos que no la usan”.</p>
<p><strong>Razón 5: Flex fue el primer lenguaje diseñado para crear interfaces de usuario</strong></p>
<p>La mayoría de los lenguajes incorporan soporte para la creación de interfaces de usuario como algo secundario. Esto es particularmente notable en Java con el <em>framework </em>Swing. Como resultado de esto, cosas simples en Swing, como manejar datos, puede resultar engorroso usando modelos de datos específicos de Swing. El mayor problema con Swing es que tienes que conocer bastante bien su API para ser productivo.</p>
<p>Flex es exactamente lo contrario: fue diseñado desde el principio para construir interfaces de usuario web. Como le gusta a Brice Eckel decir, Flex es el primer lenguaje específicamente para desarrollar interfaces de usuario. Por lo tanto, es mucho más fácil crear interfaces de usuario con Flex que con otras tecnologías como JavaServer Pages (JSP), JavaServer Faces (JFS) y Swing. El enlace de datos con controles, el manejo de eventos, el diseño de componentes y las técnicas comunes de desarrollo de interfaces de usuario están incluidos en el lenguaje, lo que te permite ser productivo aun cuando conociendo muy poco sobre el lenguaje.</p>
<p><strong>Razón 6: Posee un modelo de programación similar a Java</strong></p>
<p>Es posible desarrollar con las herramientas existentes usadas para desarrollar en Java. Igualmente, puedes desarrollar aplicaciones Flex con la consola de comandos gratuita incluida en el SDK, con la herramienta Adobe Flex Builder (un <em>plug in</em> para el IDE Eclipse) o, más recientemente, con IntelliJ IDEA 8.</p>
<p>Flex proporciona un ambiente con estado de sesión en el que los datos son cargados desde el cliente. El modelo de programación se asemeja más al desarrollo de una aplicación de escritorio en lugar de programación HTML, lo que hace sentir familiarizado en la programación a todo aquel que haya programado con Java Swing.</p>
<p>La programación en Flex es una combinación de MXML, un lenguaje de etiquetas para interfaces de usuario similar a Extensible Markup Language (XML), y Adobe ActionScript, un lenguaje de scripting orientado a objetos. Esta combinación hace que programar en Flex sea similar a programar en Java porque es posible usar los conceptos conocidos de programación orientada a objetos.</p>
<p>Una manera ideal de configurar tu ambiente de desarrollo es construir tu aplicación Flex justo en tu carpeta de despliegue de aplicaciones web. De esta forma, no necesitas desplegar de nuevo tu aplicación luego de cada compilación: un simple refrescamiento del navegador reflejará los cambios realizados. Como resultado, desarrollar en Flex y BlazeDS es bastante productivo.</p>
<p><strong>Razón 7: BlazeDS corre sobre cualquier servidor de aplicaciones Java</strong></p>
<p> Existen múltiples versiones de BlazeDS disponibles, incluyendo una versión lista para usar configurada con  una versión de Apache Tomcat incluida. Para este articulo, utilizo la distribución compilada que viene como un archivo web (WAR), para mostrar cómo puedes desplegar BlazeDS en cualquier servidor de aplicaciones. Otra posibilidad es extraer los archivos Java (JAR) y usarlos en tu proyecto. Visita el portal wiki de BlazeDS para obtener más información sobre las distintas formas de instalar BlazeDS.</p>
<p>Este ejemplo usa BlazeDS con un proyecto existente, un dispensador de bebidas sencillo. Solo necesitas agregar los archivos Java (JAR) a tu proyecto y así podrás usar BlazeDS desde la aplicación, lo que te permite desplegarlo en cualquier lugar donde puedas desplegar la aplicación.</p>
<p>Para agregar BlazeDS a tu proyecto, completa los siguientes pasos:</p>
<ol>
<li>Extraer el contenido del archivo blazeds.war. Comando de consola: &gt; jar xvf blazeds.war.</li>
<li>Copia los archivos JAR de la carpeta WEB-INF/lib descomprimida en la carpeta lib de tu proyecto. Comando de consola: &gt; cp –R WEB-INF/lib /sodaSample.</li>
</ol>
<p><strong>Razón 8: Puedes usarlo con aplicaciones Java ya existentes</strong></p>
<p>Para el ejemplo del dispensador de soda, asume que quieres publicar tu servicio de soda existente para que las aplicaciones Flex remotas puedan conectarse a él. Los pasos básicos para configurar BlazeDS en una aplicación existente son:</p>
<ol>
<li>Edita los archivos de configuración de BlazeDS en la carpeta WEB-INF/flex.</li>
<li>Define un <em>MessageBrokerServlet</em> y un <em>listener</em> de sesión en el archivo web.xml de la aplicación.</li>
</ol>
<p>Luego de configurar BlazeDS, necesitas agregar tu servicio de soda al archivo de configuración de <em>remoting</em> del BlazeDS remoting-config.xml, el cual permite que el servicio de soda pueda ser invocado desde una aplicación cliente Flex. Para agregar tu servicio, defines un destino y uno o más canales para transportar los datos. El canal AMF básico está definido en el archivo services.xml. Usa esta definición para identificar tu destino en el archivo remoting-config.xml:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">&lt;destination id=&#8221;sodaService&#8221; channels=&#8221;my-amf&#8221;&gt;<br />
&lt;properties&gt;<br />
              &lt;source&gt;com.gorillalogic.sodaSample.SodaService&lt;/source&gt;<br />
        &lt;/properties&gt;<br />
&lt;/destination&gt;</td>
</tr>
</tbody>
</table>
<p>Al definir <em>endpoints</em> en el archivo de configuración de <em>remoting</em>, podrás invocar cualquier servicio Java desde una aplicación cliente Flex.</p>
<p>Para transferir tu estructura de datos como objeto Java a tu aplicación Flex, declara una equivalencia de datos entre los dos en la clase ActiosScript:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">[Bindable]<br />
[RemoteClass(alias="com.gorillalogic.sodaSample.SodaModel")]</td>
</tr>
</tbody>
</table>
<p>Estas sentencias le indican a Flex  que cuando el resultado proveniente de una invocación a un servicio remoto retorne tu clase Java SodaModel, lo mapee a tu clase Flex SodaModel. La aplicación Flex cliente en el ejemplo muestra como invocar este servicio Java. La invocación devuelve un objeto SodaModel, con los datos de tu orden:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">public function callSodaService():void {<br />
        var sodaType:String = type.text;<br />
        var sodaCount:int = parseInt(cnt.text);<br />
        var flag:Boolean = preOpen.selected;<br />
        remoteObject.getSoda(sodaType, sodaCount, flag);<br />
}private function resultHandler(event:ResultEvent):void {<br />
       var sodaModel:SodaModel = event.result as SodaModel;<br />
}</td>
</tr>
</tbody>
</table>
<p>Flex devuelve los resultados de la invocación en la variable genérica <em>result</em>, la cual deberás mapear y almacenar en tu clase SodaModel. No entraré en detalles sobre este punto pero te  recomiendo indicarle al compilador la ruta del archivo services-config.xml de esta forma:</p>
<pre>-locale en_US -services=/nsource/sodaSample/web/WEB-INF/flex/services-config.xml -context-root /</pre>
<p>De no hacerlo, tu aplicación cliente Flex no será capaz de encontrar los servicios Java. Del mismo modo, tú también podrás enviar objetos hacia el servidor. Por ejemplo, podrás enviar de vuelta al cliente la clase SodaModel vacía.</p>
<p><strong>Razón 9: Puedes heredar de BlazeDS y hacerle modificaciones en Java</strong></p>
<p>Supongamos que deseas agregar un registro de actividades especiales cada vez que el servicio de soda es invocado. Puedes heredar del adaptador estándar Java para agregar esta funcionalidad.</p>
<p>Primero, crea una clase Java que herede del JavaAdapter:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">import flex.messaging.services.remoting.adapters.JavaAdapter.<br />
public class TimingJavaAdapter extends JavaAdapter{</td>
</tr>
</tbody>
</table>
<p>Luego, sobrecarga el método <em>invoke()</em>:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">
<pre>public Object invoke(Message message) {
        RemotingMessage remotingMessage = (RemotingMessage) message;
        String operation = remotingMessage.getOperation();
        String destination = remotingMessage.getDestination();</pre>
<pre>        Logger.info("calling " + operation + " on destination " + destination);
        Object data = super.invoke(message);
        return data;
}</pre>
</td>
</tr>
</tbody>
</table>
<p>En este método puedes ver  la operación entrante y el <em>destination</em> de la invocación. Puedes usar este simple conector para otras cosas, como por ejemplo medir el tiempo se toman las llamadas al servidor.</p>
<p><strong>Razon 10: Puedes invocar BlazeDS desde HTML y JSP</strong></p>
<p>Esta invocación puedes hacerla de distintas formas, como a través del <em>Browser Manager</em> y <em>flashVars</em>. Las <em>flashVars</em> pueden ser configuradas en la página HTML para luego ser leídas por la aplicación Flex.</p>
<p>Por ejemplo, supongamos que deseas enviar desde la pagina HTML tu nombre y el tipo de refresco que quieres ordenar. Podrías asignar las variables de esta forma:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">
<pre>&lt;object id='SodaSample' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab' height='100%' width='100%'&gt;
        &lt;param name='src' value='SodaSample.swf'/&gt;
        &lt;param name='flashVars' value='username=ryan&amp;type=coke'/&gt;
        &lt;embed name='mySwf' src='SodaSample.swf'
pluginspage='http://www.adobe.com/go/getflashplayer' height='100%' width='100%'
flashVars='username=ryan&amp;type=coke'/&gt;
&lt;/object&gt;</pre>
</td>
</tr>
</tbody>
</table>
<p>Luego, en tu aplicación Flex, puedes leer estas variables buscándolas en las propiedades de la aplicación:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="576" valign="top">
<pre>var username:String;</pre>
<pre>if (Application.application.parameters.hasOwnProperty("username")) {</pre>
<pre>        username = Application.application.parameters.username;</pre>
<pre>}</pre>
</td>
</tr>
</tbody>
</table>
<p> <br />
<strong>Razón 11: La transferencia de datos en Flex y BlazeDS supera a otras soluciones basadas en Ajax</strong></p>
<p>Por defecto, todas las invocaciones a procedimientos remotos (RPC) emplean el protocolo binario AMF. Siendo un estándar abierto, AMF es extremadamente rápido. James Ward construyó un ejemplo donde se hace una comparación de AMF con otras soluciones tecnológicas para hacer <em>remoting</em>. Aunque las otras soluciones AJAX, como Dojo, dan la pelea con un par de cientos de registros, Flex y BlazeDS pueden fácilmente manejar miles de registros. Chequea el artículo <a href="http://www.jamesward.com/census/">census</a> de James Ward en el que realiza un <em>benchmark</em> de carga de datos de varias tecnologías RIA.</p>
<p><strong>Razón 12: Puedes invocar BlazeDS directamente desde clientes Java</strong></p>
<p>La última versión de BlazeDS incluye una clase AMF en Java que puedes usar para que un cliente Java haga invocaciones al servidor de BlazeDS. Poder invocar BlazeDS de esta forma resulta sumamente útil para realizar pruebas unitarias y de carga de datos.</p>
<p><strong>Razon 13: Se integra con Spring</strong></p>
<p>Adobe y Spring se han unido para brindar una integración más cercana entre ambos <em>frameworks</em>, y la primera versión del componente de integración Spring-BlazeDS, del <em>framework</em> Spring, luce promisoria. Al permitir que un <em>bean</em> Spring pueda convertirse en un servicio remoto, se evita tener que duplicar los archivos de configuración. Para mayor información, visita el <a href="http://www.springsource.org/spring-flex">portal del proyecto</a>.</p>
<p><strong>Conclusión</strong></p>
<p>Siendo BlazeDS un <em>framework</em> código abierto y basado en Java, es una opción ideal para nuevos proyectos de servidor Java, así como para proyectos ya existentes. Por la comunicación remota de alto desempeño y <em>mapping</em> de objetos entre Flex y Java, las tecnologías Flex y BlazeDS  son una opción ideal para el desarrollo RIA. Los desarrolladores Java que se inicien en Flex y BlazeDS sentirán que el proceso de desarrollo es altamente productivo y fácil de aprender.</p>
<p>La combinación Flex-BlazeDS es también una opción ideal para aplicaciones empresariales Java de gran escala. En un proyecto pasado, mi equipo desarrolló una aplicación que contenía más de 50 pantallas y transfería regularmente varios cientos de registros de datos entre el servidor y el cliente. Este tipo de aplicación habría sido casi imposible de desarrollar usando la tecnología AJAX tradicional.  Con Flex y BlazeDS, pudimos presentar una versión inicial en menos de un año. Imagina lo que este dúo dinámico puede hacer por tus proyectos de desarrollo de aplicaciones.</p>
<p>Nota: Deberías lograr una base de estas tecnologías. Hay disponible una buena cantidad de tutoriales para ayudar en tu iniciación con BlazeDS, incluyendo <a href="http://www.infoq.com/articles/blazeds-intro;jsessionid=9D8A77AADB8A705E18A78424A20832B9">&#8220;Building Web and Desktop Applications with BlazeDS and AMF&#8221;</a> y <a href="http://www.adobe.com/devnet/livecycle/articles/blazeds_testdrive.html">&#8220;BlazeDS 30-minute test drive&#8221;</a>.</p>
<p><a href="http://www.infoq.com/articles/java-flex-blazeds">Artículo original</a> de Ryan Knight. Traducido por <a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2010/01/las-13-razones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sobre AlivePDF y la clase FileReference</title>
		<link>http://ria212.com/blog/2010/01/sobre-alivepdf-y-la-clase-filereference/</link>
		<comments>http://ria212.com/blog/2010/01/sobre-alivepdf-y-la-clase-filereference/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 15:53:31 +0000</pubDate>
		<dc:creator>Juan Manrique</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Componentes]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[alivepdf]]></category>
		<category><![CDATA[filereference]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[pdf]]></category>

		<guid isPermaLink="false">http://ria212.com/?p=162</guid>
		<description><![CDATA[Una característica interesante de esta librería es que el procesamiento del archivo PDF se hace en el mismo cliente Flex. Sin embargo, viendo el código del ejemplo mencionado me di cuenta de que al momento de guardar el archivo a disco]]></description>
			<content:encoded><![CDATA[<p>Hace un tiempo estuve buscando información sobre cómo trabajar con archivos PDF en Flex y, particularmente, como guardar texto en archivos de este tipo y me topé con un <a href="http://blog.unthinkmedia.com/?p=53">popular ejemplo</a> en el que se presenta una pantalla donde es posible dibujar garabatos con el mouse para luego guardar dicha imagen en un archivo PDF. Este ejemplo hace uso de la famosa librería <a href="http://alivepdf.bytearray.org/">AlivePDF</a> para la manipulación de archivos PDF desde Flex.<span id="more-162"></span></p>
<p>Una característica interesante de esta librería es que el procesamiento del archivo PDF se hace en el mismo cliente Flex. Sin embargo, viendo el código del ejemplo mencionado me di cuenta de que al momento de guardar el archivo a disco, se hace una invocación a un script PHP en algún servidor remoto que, supongo, genera el archivo PDF y lo reenvía al cliente Flex para que sea descargado. Esto me pareció algo inconveniente, pues todo el procesamiento del archivo PDF se hace en el cliente Flex, pero no se accede a disco desde Flex al momento de guardarlo. Me pregunte entonces si sería posible acceder a disco desde el cliente Flex para poder crear y guardar un documento PDF sin hacer uso de ninguna tecnología de servidor. Lo que encontré fue que Flash Player 10  incluye una clase especial para la carga y descarga de archivos hacia y desde un servidor, respectivamente: la clase FileReference. Esta clase logra acceder a disco abriendo un cuadro de dialogo “Guardar como” del sistema operativo. Así que si se desea manejar archivos PDF exclusivamente en el cliente Flex, me parece adecuado hacer uso de esta clase para guardar a disco el archivo PDF sin hacer uso de ningún servicio remoto.</p>
<p>Comentando una línea y agregando solo tres más al ejemplo original, fue posible crear y guardar a disco un archivo PDF mediante la librería AlivePDF y la clase FileReference. La librería AlivePDF posee un método <strong>save()</strong> mediante el cual es posible generar el documento PDF. Este método tiene dos constructores en los cuales se indica si la generación del documento será de manera remota (en un servidor) o de manera local (en el cliente Flex). Como es de esperarse, comenté la línea donde se invoca a este método de manera remota en el ejemplo original y agregué la invocación al mismo método pero de manera local. Las dos siguientes líneas son triviales cuando se hace uso de la librería FileReference.</p>
<p>Espero que les guste el ejemplito. Se aceptan comentarios y dudas.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_DrawingDemo_874668932"
			class="flashmovie"
			width="550"
			height="350">
	<param name="movie" value="http://ria212.com/ejemplos/SavePDF/DrawingDemo.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://ria212.com/ejemplos/SavePDF/DrawingDemo.swf"
			name="fm_DrawingDemo_874668932"
			width="550"
			height="350">
	<!--<![endif]-->
		
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p><a href="http://www.linkedin.com/in/juanmanrique">Juan Manrique</a>.</p>
<p><a href="http://ria212.com/ejemplos/SavePDF/DrawingDemo.html">DrawingDemoRIA212</a><br />
<a href="http://ria212.com/ejemplos/SavePDF/srcview/">Codigo</a></p>
<hr /><small>Copyright &copy; 2008<br /> This feed is for personal, non-commercial use only. <br /> The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:<br /> )</small>]]></content:encoded>
			<wfw:commentRss>http://ria212.com/blog/2010/01/sobre-alivepdf-y-la-clase-filereference/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

