4. März 2010

Tour de LiveCycle ES2 available

Abgelegt unter: Adobe, LiveCycle ES — Patrick | 21:27 Digg It!

Adobe released new version of Tour de LiveCycle for ES2. It’s a seperate installation and isn’t replacing the Tour de LiveCycle. That means you have to install the Tour de LiveCycle for ES2 to get ES2 specific content.

The download can be found here.

8. Oktober 2009

LiveCycle Mosaic, Livecycle LaunchPad and LiveCycle Workspace Mobile for LiveCycle ES 2

Abgelegt unter: AIR, Adobe, Flex, LiveCycle ES, iPhone — Patrick | 19:12 Digg It!

The next version of Adobe LiveCycle will shipped soon and Adobe presented some of the new feature and applications at Adobe MAX in Los Angeles. Adobe presented a LiveCycle Workspace Mobile, a mobile version of Workspace for the Apple iPhone, BlackBerry RIM and Windows Mobile.  The iPhone application of Adobe Workspace is now available at the Apple iTunes. The mobile clients will only work together with the upcoming version of LiveCycle ES.

LiveCycle LaunchPad is an other new client, which will be available with LiveCycle ES 2. LaunchPad is a desktop application based on Adobe AIR and enables the user to create PDF or secure documents via Drag and Drop. Developers can easly extend LauchPad with their own processes.

An other new feature of LiveCycle ES 2 is LiveCycle Mosaic. LiveCycle Mosaic is a framework, which let you build rich internet applications based on existing entreprise applications. The information of a existing application will presented as a “Tile” in Mosiac and the different tiles can interaction to exchange information and trigger actions. You can use Flex and HTML to build the tiles.

More information about all the new stuff of LiveCycle can found the Adobe website or watch the Adobe MAX keynote.

Adobe LiveCycle ES 2 Adobe LiveCycle ES 2  LiveCycle LaunchPad LiveCycle LaunchPad  LiveCycle Mosaic LiveCycle Mosaic  LiveCycle Workspace Mobile LiveCycle Workspace Mobile 

Flex Framework for mobile applications

Abgelegt unter: Adobe, Flex — Patrick | 00:27 Digg It!

Adobe is working on a version of the Flex framework for mobile application, Codemane Slider. When I watched the video about the Slider Preview at Max presentation by Ely Greenfield (Adobe), I was totally impressed about the ideas behind Slider. I like the idea how to solve the to integrate into multiple plattforms and Cross Platform developement based on Conditions and Style/Skins. If you want to now what I’m talking about, check the video below. Adobe provides also a white paper at Adobe Labs.

Adobe Adobe  Adobe Max 2009 Adobe Max 2009  Flex Flex  Framework Framework  Mobile Mobile  Slider Slider 

6. Oktober 2009

New beta versions of Flash Builder 4, Flex SDK 4 and Flash Catalyst

Abgelegt unter: AIR, Adobe, Flash Catalyst, Flex — Patrick | 17:59 Digg It!

Adobe released at Max 2009 the second beta versions of Flash Builder and Flash Catalyst. The beta versions provides a huge set of new features.

Here some of the new top features of Flash Builder 4 Beta 2 and Flash Catalyst Beta 2:

Flash Builder 4:

  • Improved Flash Catalyst to Flash Builder workflow
  • LiveCycle Data Service ES 2 and Fiber integration
  • Advanced data management features (CreateReadUpdateDelete)
  • SWFObject as Flash Player detection toolkit
  • Project convertion (Flex2AIR & AIR2Flex)

Flash Catalyst:

  • More Spark components: Checkbox, Radio Button, Toggle Button, Horizontal Slider, and Vertical Slider
  • Better text support
  • Video support
  • Optimize graphics workflow
  • Filters and Motion Easing
  • AIR Export

Additonal Information about the Flash Builder 4, Flex 4 and Flash Catalyst:

Flash Builder 4 at Adobe Labs
Updated Articles for Flex 4 beta 2 on Adobe DevNet
Flash Catalyst at Adobe Labs

Adobe Max 2009 Adobe Max 2009  Flash Builder Flash Builder  Flash Catalyst Flash Catalyst 

Flash applications for the Apple iPhone

Abgelegt unter: Adobe, Flash, iPhone — Patrick | 16:32 Digg It!

Adobe announced Flash applications for the iPhone at the keynote of Adobe Max 2009. With the upcoming version of Flash Professional (CS5), Adobe provides the possiblity to export Flash applications as native iPhone applications. Flash CS5 converts the ActionScript3 projects and creates ipa files, which can submitted to Apple iPhone AppStore. Six Flash based samples apps are already available at the AppStore, more details can found here. So, this solution let you build iPhone application with your existing skills and tool set, no Xcode or Objective-C needed.

Furthermore, their is no Flash Plugin for the Browser Safari available.  Since yesterday, Adobe had also set up a new website, when you try to install Flash player on the iPhone. Adobe get it to the point why it’s not available ;) Check out the link.

This is the MystHackers video from the Adobe Max Keynote with Kevin Lynch (CTO) and Johnny Loiacono (SVP Creative Suite Unit) test possiblities how to get Flash on the iPhone.

An other interesting fact about this soultion is that you need no Mac computer anymore to build iPhone applicatons.

More information about Flash apps for iPhone can founded on:

Adobe Labs
Adobe DevNet Article
Adobe TV (Video below)

Adobe Max 2009 Adobe Max 2009  Flash Professional CS5 Flash Professional CS5  iPhone iPhone 

11. Juni 2009

Spring BlazeDS Integration 1.0 is available

Abgelegt unter: Allgemein, BlazeDS, Flex — Patrick | 11:29 Digg It!

The final version of Spring BlazeDS Integration 1.0 is available now. Since RC2, SpringSource enhanced the documentation and made some improvements on the messaging adapter. More information about the final version are available on the blog of SpringSource and in the offical annoucement.

You can download the BlazeDS Integration here and the documentation can found here.

BlazeDS BlazeDS  Remote Object Remote Object  Spring Spring 

Tour de LiveCycle and LiveCycle Cafe

Abgelegt unter: Adobe, LiveCycle ES — Patrick | 01:11 Digg It!

Adobe published to AIR applications around Adobe LiveCycle. The first application is the big brother of Tour de Flex, called Tour de LiveCycle. This applications provides all nessecary information to start programming and using Adobe LiveCycle.

Tour de LiveCycle at Adobe Developer Connection: Link

The other application call LiveCycle Cafe and provides the latest news, upcoming events and other information around Adobe LiveCycle ES. So you can’t miss anything what’s going with Adobe LiveCycle ES.

LiveCycle Cafe at Adobe Developer Connection: Link

Actionscript3 based Google Analytics Solution for Flash and Flex

Abgelegt unter: Flash, Flex — Patrick | 00:10 Digg It!

If you wanted to track a Flash or Flex based application with  Google Analytics, you had to use the ExternalInterface to call the function of the JavaScript library. While search for a solution which isn’t using JavaScript, I found out that Google now provides some ActionScript3 libraries for Google Analytics.

You can find the documentation here and the libraries here.

The nice thing about the library is that you have the choice whether you want to use a ActionScript-Only solution or combine JavaScript and ActionScript. The only difference between both solutions is one parameter when calling of constructor of the tracker.

ActionScript-Only ActionScript-Only  ActionScript3 ActionScript3  Flash Flash  Flex Flex  Google Analytics Google Analytics 

16. Mai 2009

Using annotated RemoteServices with the Spring BlazeDS Integration

Abgelegt unter: Adobe, BlazeDS, Flex, Technologie — Patrick | 19:30 Digg It!

On Wednesday, I found the time to test the annotation based configuration of the Spring BlazeDS Integration. Because it isn’t as easy as I thought, I wrote this little guide with all necessary configurations. You can download the sample project here.

First you have to create a new Flex Project in Flex Builder, select as Application server type “J2EE” and use LiveCycle Data Service as Remoting. Click the button “Next”.

annotated_spring_blazeds_step1

Now you have to select the BlazeDS WAR file and click the button “Finish”.

annotated_spring_blazeds_step2

Under Project > Properties > Flex Compiler you have add -services and behind the path to the services-config.xml (Screenhot), like in all other BlazeDS oder LiveCycle DS Applications. During the compile process the compiler creates an Actionscript class with the information of this file. The services-config.xml can found under the WEB-INF/flex. This file contains the definition of the MessageBroker and references to the messaging-config.xml and the remoting-config.xml. In the remoting-config.xml, you can find the definitions of the RemoteObjects and in the messaging-config.xml all messaging configurations.

services-config-xml

You can delete these two files because the RemoteObjects and Messaging will now defined in your Spring application. You must also delete the references to these files in the services-config.xml. The content of the services-config.xml should now look like this.

<?xml version="1.0" encoding="UTF-8"?>
<services-config>
 
    <services>
        <service-include file-path="proxy-config.xml" />
 
        <default-channels>
           <channel ref="my-amf"/>
        </default-channels>
 
    </services>
 
 
    <security>
        <login-command class="flex.messaging.security.TomcatLoginCommand" server="Tomcat"/>
        <!-- Uncomment the correct app server
        <login-command class="flex.messaging.security.TomcatLoginCommand" server="JBoss">
		<login-command class="flex.messaging.security.JRunLoginCommand" server="JRun"/>        
        <login-command class="flex.messaging.security.WeblogicLoginCommand" server="Weblogic"/>
        <login-command class="flex.messaging.security.WebSphereLoginCommand" server="WebSphere"/>
        -->
 
        <!-- 
        <security-constraint id="basic-read-access">
            <auth-method>Basic</auth-method>
            <roles>
                <role>guests</role>
                <role>accountants</role>
                <role>employees</role>
                <role>managers</role>
            </roles>
        </security-constraint>
         -->
    </security>
 
    <channels>
 
        <channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
            <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
        </channel-definition>
 
        <channel-definition id="my-secure-amf" class="mx.messaging.channels.SecureAMFChannel">
            <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
            <properties>
                <add-no-cache-headers>false</add-no-cache-headers>
            </properties>
        </channel-definition>
 
        <channel-definition id="my-polling-amf" class="mx.messaging.channels.AMFChannel">
            <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
            <properties>
                <polling-enabled>true</polling-enabled>
                <polling-interval-seconds>4</polling-interval-seconds>
            </properties>
        </channel-definition>
 
	<channel-definition id="my-longpolling-amf" class="mx.messaging.channels.AMFChannel">
		<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amflongpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
		<properties>
			<polling-enabled>true</polling-enabled>
			<polling-interval-seconds>5</polling-interval-seconds>
			<wait-interval-millis>60000</wait-interval-millis>
			<client-wait-interval-millis>1</client-wait-interval-millis>
			<max-waiting-poll-requests>200</max-waiting-poll-requests>
                	<user-agent-settings>
				<!-- MSIE 5, 6, 7 default max number of permanent HTTP connections is 2. -->
				<user-agent match-on="MSIE" max-streaming-connections-per-session="1"/>
				<!-- MSIE 8 max number is 6. -->
				<user-agent match-on="MSIE 8" max-streaming-connections-per-session="5"/>
				<!-- Firefox 1, 2 max number is 2. --> 
				<user-agent match-on="Firefox" max-streaming-connections-per-session="1"/>
				<!-- Firefox 3 max number is 6. -->
				<user-agent match-on="Firefox/3" max-streaming-connections-per-session="5"/>
				<!-- Safari 3, 4 max number is 4. -->  
				<user-agent match-on="Safari" max-streaming-connections-per-session="3"/>
				<!-- Chrome 0, 1, 2 max number is 6. -->
				<user-agent match-on="Chrome" max-streaming-connections-per-session="5"/>
				<!-- Opera 7, 9 max number is 4.-->
				<user-agent match-on="Opera" max-streaming-connections-per-session="3"/>
				<!-- Opera 8 max number is 8. -->  
				<user-agent match-on="Opera 8" max-streaming-connections-per-session="7"/>
				<!-- Opera 10 max number is 8. -->
				<user-agent match-on="Opera 10" max-streaming-connections-per-session="7"/>
                	</user-agent-settings>
		</properties>
	</channel-definition>        
 
        <channel-definition id="my-streaming-amf" class="mx.messaging.channels.StreamingAMFChannel">
            <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/streamingamf" class="flex.messaging.endpoints.StreamingAMFEndpoint"/>
        </channel-definition>
 
        <!--
        <channel-definition id="my-http" class="mx.messaging.channels.HTTPChannel">
            <endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/http" class="flex.messaging.endpoints.HTTPEndpoint"/>
        </channel-definition>
 
        <channel-definition id="my-secure-http" class="mx.messaging.channels.SecureHTTPChannel">
            <endpoint url="https://{server.name}:{server.port}/{context.root}/messagebroker/httpsecure" class="flex.messaging.endpoints.SecureHTTPEndpoint"/>
            <properties>
                <add-no-cache-headers>false</add-no-cache-headers>
            </properties>
        </channel-definition>
        -->
    </channels>
 
    <logging>
        <target class="flex.messaging.log.ConsoleTarget" level="Warn">
            <properties>
                <prefix>[BlazeDS] </prefix>
                <includeDate>false</includeDate>
                <includeTime>false</includeTime>
                <includeLevel>false</includeLevel>
                <includeCategory>false</includeCategory>
            </properties>
            <filters>
                <pattern>Endpoint.*</pattern>
                <pattern>Service.*</pattern>
                <pattern>Configuration</pattern>
            </filters>
        </target>
    </logging>
 
    <system>
        <redeploy>
            <enabled>false</enabled>
            <!-- 
            <watch-interval>20</watch-interval>
            <watch-file>{context.root}/WEB-INF/flex/services-config.xml</watch-file>
            <watch-file>{context.root}/WEB-INF/flex/proxy-config.xml</watch-file>
            <watch-file>{context.root}/WEB-INF/flex/remoting-config.xml</watch-file>
            <watch-file>{context.root}/WEB-INF/flex/messaging-config.xml</watch-file>
            <watch-file>{context.root}/WEB-INF/flex/data-management-config.xml</watch-file>
            <touch-file>{context.root}/WEB-INF/web.xml</touch-file>
             -->
        </redeploy>
    </system>
 
</services-config>

Now you have to configurate the Dispatcher Servlet, which get the information from the Flex application. Normally, you can find the definition of the MessageBroker Servlet in the web.xml. The Spring BlazeDS integration defines the MessageBroker in applicationContext.xml and uses a Dispatcher Servlet to transfer the Flex request to the MessageBroker. So, you have to replace the Flex related configuration in the web.xml. The file should now look like this:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
	<display-name>AnnotatedService</display-name>
 
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			/WEB-INF/config/web-application-config.xml
		</param-value>
	</context-param>
 
 
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
 
	<servlet>
		<servlet-name>dispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>
 
	<servlet-mapping>
    	<servlet-name>dispatcherServlet</servlet-name>
    	<url-pattern>/messagebroker/*</url-pattern>
 	</servlet-mapping>
 
     <welcome-file-list>
		<welcome-file>main.html</welcome-file>
	</welcome-file-list>
</web-app>

Now, you need a configuration file for the DispatcherServlet. Because I named the DispatcherServlet instance “dispatcherServlet”, I have to create a file with the name “dispatcherServlet-servlet.xml” in the folder WEB-INF.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    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.0.xsd">
 
</beans>

The next step is to configurate the MessageBroker in applicationContext.xml. Till now, you can use also for not annotated configuration of Spring BlazeDS integration.

	<flex:message-broker>
		<flex:message-service default-channels="my-streaming-amf,my-longpolling-amf,my-polling-amf" />
	</flex:message-broker>

A annotated configuration needs some additional lines to scan the source for the spring annotations. The base-package specifies where Spring should start to search for annotations.

	<context:annotation-config />
	<context:component-scan base-package="org.company" />

The applicationContext.xml should look like this:

<?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"
	xmlns:context="http://www.springframework.org/schema/context"
	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
		http://www.springframework.org/schema/context
		http://www.springframework.org/schema/context/spring-context-2.5.xsd">
 
	<context:annotation-config />
	<context:component-scan base-package="org.company" />
 
	<flex:message-broker>
		<flex:message-service default-channels="my-streaming-amf,my-longpolling-amf,my-polling-amf" />
	</flex:message-broker>
 
</beans>

The last step is to add the annotation in the Java class. You have to add the @Services, the @RemoteDestintion and the protocol you will use for the transfer above the class definition. When a method should be accessable via BlazeDS, you have to add above this method @RemoteInclude annotation otherwhise the @RemoteExclude annotation.

package test;
 
import org.springframework.flex.remoting.RemotingDestination;
import org.springframework.flex.remoting.RemotingExclude;
import org.springframework.flex.remoting.RemotingInclude;
import org.springframework.stereotype.Service;
 
@Service
@RemotingDestination(channels={"my-amf","my-secure-amf"})
public class SampleService {
 
	// accessable via BlazeDS
	@RemotingInclude
	public String getMessage(String name){
		return "Hello "+name;
	}
 
	// not accessable via BlazeDS
	@RemotingExclude
	public String getMessage2(String name){
		return "Hello "+name;
	}
}

The name of the RemoteObject is same as Java class name but with the first letter is a lowercase. In my example the name of the RemoteObject is “sampleService”.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:RemoteObject id="service" destination="sampleService" result="onResult(event)" fault="onFault(event)"/>
	<mx:Script>
		<![CDATA[
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			import mx.controls.Alert;
 
			private function getMessage():void
			{
				this.service.getMessage(inputName.text);
			}
 
			private function onResult(event:Object):void
			{
				Alert.show(event.result as String, "Spring says");
			}
 
			private function onFault(event:FaultEvent):void
			{
				Alert.show("Something was wrong :(","Fault");
			}
		]]>
	</mx:Script>
	<mx:Button label="go" click="getMessage()" x="100" y="56"/>
	<mx:TextInput id="inputName" x="100" y="26"/>
	<mx:Label x="21" y="28" text="Your Name:"/>
</mx:Application>

I hope this guide helps setting up a Spring BlazeDS application using annotations.

Annotations Annotations  BlazeDS BlazeDS  Remote Object Remote Object  Spring Spring 

Next Flex Builder renamed to Flash Builder

Abgelegt unter: Adobe, Flash, Flash Catalyst, Flex — Patrick | 12:08 Digg It!

Yesterday Ted Patrick officially announced that the upcoming version of Flex Builder will renamed to Flash Builder via Twitter. The last months Adobe forced to speak about the Flash Platform, the new interaction design tool for Flex application was called Flash Catalyst and now the next foreseeable step comes: Flex Builder becomes Flash Builder.

I’m not really sure, what I should think about the hole renaming. From the stand point of Product Marketing, it’s clear. The end result of all IDEs is a SWF running in the Flash Player. In the entreprise world, Flash has no good reputation. This is cause the millions of bad animations and ad banner produced with Flash in the last years. I don’t think the renaming of the product makes it easier to convince decision maker to use Flex for their applications. If Flash hadn’t this negative connotation this renaming wouldn’t be as critical as it is. It looks like we must start talking about the Flex Framework instead of Flex.

More information about the renaming can found on the blogs of the Adobe evangelists: Duane Nickull, Lee Brimelow and Serge Jespers.

PS: Ted Patrick, who announced the renaming changed the name of his blog from “Ted on Flex” (onflex.org) to “Ted on Flash” (onflash.org) about 3 months ago.

PSS: SAP calls it Flex based solutions also Flash Islands and not Flex Islands.

Flash Builder Flash Builder  Flash Catalyst Flash Catalyst  Flash Platform Flash Platform  Flex Builder Flex Builder