Mostrando las entradas con la etiqueta Flex. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Flex. Mostrar todas las entradas

sábado, 26 de enero de 2013

RIA con Lienzo y Flash4j



Emitrom es una compañía que ha tomado la iniciativa de trabajar con productos open source y sobre la capa de presentación. En este post quiero mencionar a Lienzo y Flash4j.

Lienzo es una librería GWT que permite dibujar en HTML 5 con el Canvas. Con Lienzo podemos generar animaciones, juegos, proceso de imágenes, etc. También podemos utilizar drag and drop,  transformaciones, rotación, escalar, filtrar y renderizar imágenes,  etc.  Lienzo fue liberado con licencia Apache 2.

Desarrollo en Flash se asocia típicamente con ActionScript, un lenguaje de scripting que podría ser  dificultoso para desarrolladores  Java que no están acostumbrados a lenguajes de script (una barrera similar a veces es JavaScript). Flash4j ofrece a cambio una completo; la API que provee Flash4j es totalmente Java y además es similar a la encontrada en Swing, GWT o Wicket. Flash4j ofrece integración con Apache Flex y Adobe Air. Flash4j también fue liberado con licencia Apache 2.

Dejo links:
http://emitrom.com/lienzo
http://emitrom.com/flex4j


jueves, 26 de julio de 2012

Apache Flex 4.8.0-incubating.


Apache anuncia la versión de Apache Flex 4.8.0 no tiene nada nuevo, solo se implemento código que antes era privativo. Para el que no conoce la historia Adobe dono Flex a Apache dando vida a Apache Flex.  La noticia de la nueva versión es una gran alegría para la comunidad que ha trabajado mucho.

Apache Flex esta incubadora pero esperamos que salga pronto. Apache Flex se distribuye con licencia Apache 2. 

Que piensan de esta noticia? Tiene sentido en un mundo gobernado por HTML 5? Apache Flex sera competidor de JavaFX? Vale la pena esta tecnología?

Dejo Link:
http://incubator.apache.org/flex/


martes, 17 de agosto de 2010

Flex 4


Flex 4 hace rato que esta en el mercado, pero husmeando por MadeInFlex encontré un recopilado de nuevas características. Como sabrán Flex 4 cambio bastante, tanto que tuvo que romper compatibilidad con la versión 3.
Dejo el link:

http://www.madeinflex.com/2010/08/15/serie-introduccion-flex4/

Léanlo que esta bueno.

Saludos!!

domingo, 16 de agosto de 2009

Como crear un proyecto Flex-BlazeDS-Spring con Maven?


Prerequisitos:

Tener instalado maven 2; ver http://www.scribd.com/doc/7654692/Inicio-Maven

Bajar Spring-flex de http://www.springsource.com/products/spring-community-download

A trabajar:

Crear el proyecto para este ejemplo solo creamos un proyecto el cual va a ser web, por lo tanto lo creamos de la siguiente manera:

mvn archetype:create -DgroupId=com.emanuelpeg 
-DartifactId=ejemploFlex 
-DarchetypeArtifactId=maven-archetype-webapp

Entramos en el proyecto


cd ejemploFlex
mvn clean install
mvn eclipse:eclipse 

La última línea es si usan eclipse.

Editamos el pom agregando las dependencias de spring y BlazeDS:


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">


<modelVersion>4.0.0</modelVersion>

<groupId>com.emanuelpeg</groupId>

<artifactId>ejemploFlex</artifactId>

<packaging>war</packaging>

<version>1.0-SNAPSHOT</version>

<name>ejemploFlex Maven Webapp</name>

<url>http://maven.apache.org</url>

<dependencies>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring</artifactId>

<version>2.5.6</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-web</artifactId>

<version>2.5.6</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-webmvc</artifactId>

<version>2.5.6</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-flex</artifactId>

<version>1.0.0</version>

</dependency>

<dependency>

<groupId>com.adobe.blazeds</groupId>

<artifactId>blazeds-remoting</artifactId>

<version>3.2.0.3978</version>

</dependency>

<dependency>

<groupId>com.adobe.blazeds</groupId>

<artifactId>blazeds-common</artifactId>

<version>3.2.0.3978</version>

</dependency>

<dependency>

<groupId>com.adobe.blazeds</groupId>

<artifactId>blazeds-core</artifactId>

<version>3.2.0.3978</version>

</dependency>

<dependency>

<groupId>com.adobe.blazeds</groupId>

<artifactId>blazeds-proxy</artifactId>

<version>3.2.0.3978</version>

</dependency>

<dependency>

<groupId>com.adobe.blazeds</groupId>

<artifactId>blazeds-opt</artifactId>

<version>3.2.0.3978</version>

</dependency>

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-core-lgpl</artifactId>

<version>0.9.9-6</version>

</dependency>

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-core-lgpl</artifactId>

<version>0.9.9-6</version>

</dependency>

<dependency>

<groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-mapper-lgpl</artifactId>

<version>0.9.9-6</version>

</dependency>

<dependency>

<groupId>xalan</groupId>

<artifactId>xalan</artifactId>

<version>2.7.0</version>

</dependency>

<dependency>

<groupId>commons-httpclient</groupId>

<artifactId>commons-httpclient</artifactId>

<version>3.1</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.4</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-test</artifactId>

<version>2.5.6</version>

<scope>test</scope>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<artifactId>maven-compiler-plugin</artifactId>

<configuration>

<source>1.5</source>

<target>1.5</target>

</configuration>

</plugin>

<plugin>

<artifactId>maven-eclipse-plugin</artifactId>

<configuration>

<wtpversion>1.5</wtpversion>

<downloadSources>true</downloadSources>

</configuration>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-javadoc-plugin</artifactId>

</plugin>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-project-info-reports-plugin</artifactId>

</plugin>

</plugins>

<finalName>ejemploFlex</finalName>

</build>

</project>


OJO!!! Spring 2.5.6 o superior y adobe BlazeDS 3.2 o superior.

Seguramente cuando hagan mvn clean install explote como loco. Porque nos pide que instalemos spring-flex bueno eso se hace así:

mvn install:install-file -DgroupId=org.springframework -DartifactId=spring-flex -Dversion=1.0.0 -Dpackaging=jar -Dfile=pathDondeEstaElJar\org.springframework.flex-1.0.0.RELEASE.jar

Para ver si se instalo deben ir a : $M2_REPO\org\springframework\spring-flex\1.0.0 si existe esto está todo bien. Donde $M2_REPO es donde está el repositorio maven, la carpeta .m2/repository.


mvn clean install

mvn eclipse:eclipse


Configurar blazeDs con spring.

Tenemos que configurar spring para que funcione (como cualquier aplicación web con spring)


<?xml version="1.0"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

<display-name>Ejemplo Flex</display-name>

<!-- The front controller of this Spring Web application, responsible for handling all application requests -->

<servlet>

<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:spring.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<!-- Map all /messagbroker requests to the DispatcherServlet for handling -->

<servlet-mapping>

<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>

<url-pattern>/messagebroker/*</url-pattern>

</servlet-mapping>

</web-app>


Por ahora todo normal, ahora debemos configurar MessageBroke esto se hace en el archivo de context de spring por ejemplo algo así:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:flex="http://www.springframework.org/schema/flex"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="

http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://www.springframework.org/schema/flex

http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">

<bean id="dao.persona" class="com.emanuelpeg.dao.impl.DaoPersonaImpl">

</bean>

<bean id="service.persona" class="com.emanuelpeg.service.impl.PersonaServiceImpl">

<property name="daoPersona">

<ref bean="dao.persona" />

</property>

<flex:remoting-destination />

</bean>

<flex:message-broker />

</beans>

Si intentan levantar el servidor va a explotar por los aires, porque no tenemos los archivos xml, para configurar BlazaDs.

Estos archivos se encuentran en la carpeta flex del proyecto BlazaDs, que se encuentra es http://flexorg.wip3.adobe.com/blazeds/3.0.x/milestone/3978/blazeds-bin-3.2.0.3978.zip, deszipeen el proyecto y copien la carpeta flex que se encuentra en blazeds\WEB-INF en su WEB-INF

Posta, levanten el servidor y levanten el servidor. Para probar si todo esta bien vayan a http://127.0.0.1:8080/ejemploFlex/messagebroker/amf

Para llamar el servicio en Flex deben crear un proyecto indicándole que van a ser Aplication server type J2EE. Despues le dicen :


Root URL: http://127.0.0.1:8080/ejemploFlex/

contextRoot: ejemploFlex/

output folder: dondeSeLevantaTomcatOJetty\ejemploFlex\ejemploFlex-debug


Y Por ultimo usemos los servicios, copio y pego un ejemplo:


<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:RemoteObject id="personaService"

destination="service.persona"

fault="errorFaultHandler(event);"

channelSet="{channel}">

<mx:method name="getPersonas" result="getAllResultHandler(event)"/>

<mx:method name="guardar" result="mensaje()" />

</mx:RemoteObject>

<mx:ChannelSet id="channel">

<mx:AMFChannel uri="http://127.0.0.1:8080/ejemploFlex/messagebroker/amf"/>

</mx:ChannelSet>


<mx:Script>


import dto.Persona;

import mx.rpc.events.ResultEvent;

import mx.controls.Alert;

import mx.rpc.events.FaultEvent;

//Si hay un error lo mostramos en pantalla

public function errorFaultHandler(e:FaultEvent):void

{

Alert.show("Ocurrio un error al invocar el servicio: "

+ e, "error", 4);

}

public function mensaje():void

{

Alert.show("Exito Total");

}

public function getAllResultHandler(e:ResultEvent):void

{

//Actualizamos la tabla con el resultado de la

//invocacion del servicio

usuariosDG.dataProvider = e.result;

Alert.show("holas");

}

public function guardar():void

{

var persona:Persona = new Persona();

persona.nombre = inpNombre.text;

persona.apellido = inpApellido.text;

personaService.guardar(persona);

}

</mx:Script>


<mx:ViewStack id="viewstack1" top="31" left="10" right="10" bottom="10">

<mx:Canvas label="VER" width="100%" height="100%">

<mx:AdvancedDataGrid x="26" y="33" id="usuariosDG" designViewDataType="flat" width="642" height="323">

</mx:AdvancedDataGrid>

<mx:Button label="Button" click="personaService.getPersonas()" x="266" y="383"/>

</mx:Canvas>

<mx:Canvas label="INGRESAR" width="100%" height="100%">

<mx:Label x="22" y="19" text="Nombre"/>

<mx:Label x="22" y="45" text="Apellido"/>

<mx:TextInput x="78" y="17" id="inpNombre"/>

<mx:TextInput x="78" y="43" id="inpApellido"/>

<mx:Button x="78" y="73" label="Guardar" click="guardar();"/>

</mx:Canvas>

</mx:ViewStack>

<mx:ToggleButtonBar x="10" y="10" dataProvider="viewstack1">

</mx:ToggleButtonBar>

</mx:Application>