﻿<?xml version="1.0" encoding="utf-8"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><ttl>60</ttl><title>Rich Internet Applications - Adobe Flex, AIR, Compilers and more</title><link>http://ananth.info</link><lastBuildDate>Sat, 11 Sep 2010 01:31:02 GMT</lastBuildDate><pubDate>Sat, 11 Sep 2010 01:31:02 GMT</pubDate><language>en</language><copyright /><itunes:subtitle> </itunes:subtitle><itunes:author /><itunes:summary /><description /><itunes:owner><itunes:name /><itunes:email>narayana_anantharaman@yahoo.co.in</itunes:email></itunes:owner><itunes:explicit>no</itunes:explicit><itunes:category text="Arts" /><item><title>Adobe Flex SDK Compiler - Under the hood series - Part 3 MXML Compiler Lexical Analysis and Parsing Continued</title><link>http://ananth.info/2010/07/11/adobe-flex-sdk-compiler--under-the-hood-series--part-3-mxml-compiler-lexical-analysis-and-parsing-continued.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>In this part, we continue to look at the details of how the MXML Compiler performs the parsing.&lt;br /&gt;
&lt;br /&gt;
As mentioned in the previous article, MXML Compiler uses JavaCC to generate a recursive descent parser. The JavaCC is set to receive tokens from MxmlScanner.java, which acts as a token generator. JavaCC generates an interface TokenManager.java that can be implemented by a custom java class, which in our case is MxmlScanner. This class also handles the SAX events generated as a result of parsing the input MXML file. Hence MxmlScanner extends the DefaultHandler class of SAX parser, by defining various event handlers such as startElement( ) etc and also implementing the getNextToken( ) method as required by the TokenManager Interface (generated by JavaCC).&lt;br /&gt;
&lt;br /&gt;
JavaCC also generates a Token class (Token.java). MxmlScanner, thus, needs to generate instances of Tokens as needed by JavaCC for further parsing actions. MXML compiler defines a node class for each type of tokens. These nodes are sub classed from Element class that inherit from Token.java. Thus, the nodes generated by MXML Compiler are actually instances of tokens.&lt;br /&gt;
&lt;br /&gt;
Token class stores the kind of token, location of the token, image of the token, the next token seen in the input stream and a variable to store special token. &lt;br /&gt;
&lt;br /&gt;
Since the basic tokens in an XML file correspond to XML elements that may be associated with their own namespaces and attribute values, the Element class is defined that encapsuates these additional information. Thus, the Element class defines the URI, attributes as a qualified name/value map, prefix mappings etc. Another important property that is a part of this class is the children property that stores the tokens (or DOM nodes) of the children of this current node. For example, a Script node may store the CDATA as its child.&lt;br /&gt;
&lt;br /&gt;
For example, let us consider the statement:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #0000ff; font-size: 13px;"&gt;&amp;lt;s:Application&lt;/span&gt;&lt;span style="font-size: 13px;"&gt; xmlns:fx="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;http://ns.adobe.com/mxml/2009&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" xmlns:s="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;library://ns.adobe.com/flex/spark&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" xmlns:mx="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;library://ns.adobe.com/flex/mx&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" minWidth="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;955&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" minHeight="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;600&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 13px;"&gt;&amp;gt; &lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
In the above statement, the Uri property will be set to: &lt;span style="color: #990000; font-size: 13px;"&gt;library://ns.adobe.com/flex/spark&lt;/span&gt;, the qualified name will be: &lt;span style="color: #0000ff; font-size: 13px;"&gt;s:Application&lt;/span&gt;, local name will be &lt;span style="color: #0000ff; font-size: 13px;"&gt;Application&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
minWidth and minHeight will be stored as attributes and by themselves can be fully qualified.&lt;br /&gt;
&lt;br /&gt;
For &amp;lt;s:Application ...&amp;gt; tag, the startElement handler creates a DocumentNode object, sets up the necessary information. The token information looks something like this. The kind property is set to 63 and the image becomes: &amp;lt;s:Application&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Node class, Node.java is inherited from Element.java. &lt;br /&gt;
&lt;br /&gt;
Any MXML DOM node, for example, DocumentNode, is sub classed from Node class and is specialized for the functionality required for that node type.&lt;br /&gt;
&lt;br /&gt;
The DocumentNode instance is created when &amp;lt;s:Application&amp;gt; element is encountered.&lt;br /&gt;
&lt;br /&gt;
The generated node (or token) object is stored as a list of objects (saxEvents) in MxmlScanner. This list holds the tokens and scanner errors.&lt;br /&gt;
&lt;br /&gt;
The getNextToken() method returns a token to the parser (generated by JavaCC) &lt;br /&gt;
&lt;br /&gt;
In the next part I will discuss the parser generated by JavaCC &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;</description><category>compiler</category><category>Adobe Flex</category><comments>http://ananth.info/2010/07/11/adobe-flex-sdk-compiler--under-the-hood-series--part-3-mxml-compiler-lexical-analysis-and-parsing-continued.aspx#Comments</comments><guid isPermaLink="false">2cd31bc6-d1ee-4a6e-a19b-e58be511863c</guid><pubDate>Sun, 11 Jul 2010 15:04:00 GMT</pubDate></item><item><title>Adobe Flex SDK Compiler - Under the hood series - Part 2 MXML Compiler Lexical Analysis and Parsing</title><link>http://ananth.info/2010/06/20/adobe-flex-sdk-compiler--under-the-hood-series--part-2-mxml-compiler-lexical-analysis-and-parsing.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>In this part we will examine the way the MXML Compiler performs lexical analysis and parsing of MXML Source code. &lt;br /&gt;
&lt;br /&gt;
MXML language is a tag based language built over XML and the developer can embed Actionscript code within the MXML file using &amp;lt;mx:Script&amp;gt; tags. Typically, it is easy to describe UI elements (such as Button, TextArea etc) in MXML and Actionscript provides the scripting capability so that one can build a functional Flex application that performs appropriate actions responding to user or system initiated events. The input to the MXML sub compiler is a MXML source code and the compiler generates Actionscript code as the output. The MXML sub compiler consists of 2 other sub compilers: Interface Compiler and Implementation Compiler, that we will describe later. Following are the major steps that are performed by MXML Sub compiler towards the analysis of the source code:&lt;br /&gt;
&lt;br /&gt;
1. Low level XML Parsing&lt;br /&gt;
2. Generating tokens from the step 1 as above&lt;br /&gt;
3. High level language specific parsing&lt;br /&gt;
4. Semantic analysis&lt;br /&gt;
&lt;br /&gt;
Let us consider a working example as below. This example displays a button labeled "Click Me" at the coordinate (100, 100) on the screen. On clicking the button, the message "Button Clicked" is displayed on the Alert control of Flex.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Example:&lt;/strong&gt; Source code listing of Simple1.mxml&lt;br /&gt;
&lt;span style="font-size: 13px;"&gt;
&lt;p style="text-align: left;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;/p&gt;
&lt;/span&gt;
&lt;p style="text-align: left;"&gt;&lt;span style="color: #0000ff; font-size: 13px;"&gt;&amp;lt;s:Application&lt;/span&gt;&lt;span style="font-size: 13px;"&gt; xmlns:fx="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;http://ns.adobe.com/mxml/2009&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" xmlns:s="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;library://ns.adobe.com/flex/spark&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" xmlns:mx="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;library://ns.adobe.com/flex/mx&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" minWidth="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;955&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" minHeight="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;600&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;"&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 13px;"&gt;&amp;gt; &lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #006633; font-size: 13px;"&gt;&amp;lt;fx:Script&amp;gt;&lt;br /&gt;
    &lt;/span&gt;&lt;span style="font-size: 13px;"&gt;&amp;lt;![CDATA[&lt;br /&gt;
        &lt;/span&gt;&lt;b&gt;&lt;span style="color: #0033ff; font-size: 13px;"&gt;import&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 13px;"&gt; mx.controls.Alert;&lt;br /&gt;
        &lt;/span&gt;&lt;b&gt;&lt;span style="color: #0033ff; font-size: 13px;"&gt;protected&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 13px;"&gt; &lt;/span&gt;&lt;b&gt;&lt;span style="color: #339966; font-size: 13px;"&gt;function&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 13px;"&gt; button1_clickHandler(event:MouseEvent):&lt;/span&gt;&lt;b&gt;&lt;span style="color: #0033ff; font-size: 13px;"&gt;void&lt;br /&gt;
        &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 13px;"&gt;{&lt;br /&gt;
            Alert.show(&lt;/span&gt;&lt;b&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;"Button Clicked"&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 13px;"&gt;);&lt;br /&gt;
        }&lt;br /&gt;
    ]]&amp;gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #006633; font-size: 13px;"&gt;&amp;lt;/fx:Script&amp;gt; &lt;br /&gt;
&lt;/span&gt;&lt;span style="color: #0000ff; font-size: 13px;"&gt;&amp;lt;s:Button&lt;/span&gt;&lt;span style="font-size: 13px;"&gt; label="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;click me&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" x="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;100&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" y="&lt;/span&gt;&lt;span style="color: #990000; font-size: 13px;"&gt;100&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;" click="button1_clickHandler(event);" &lt;/span&gt;&lt;span style="color: #0000ff; font-size: 13px;"&gt;/&amp;gt; &lt;br /&gt;
&amp;lt;/s:Application&amp;gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Since MXML is a XML based language, this MXML source code needs low level XML parsing in order to derive the MXML language tokens. As I mentioned in the part 1 of this series, the sub compiler interface has a method parse1 with the signature: &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style="color: #7f0055; font-size: 13px;"&gt;public&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 13px;"&gt; CompilationUnit parse1(Source source, SymbolTable symbolTable)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
When this method is invoked in the MXML compiler (MxmlCompiler.java), it invokes parse1 method of Interface Compiler (InterfaceCompiler.java) and this kicks off the lexical analysis and parsing actions for the MXML source. (See: parseMXML method of InterfaceCompiler.java). The parseMXML method creates an instance of MXML Scanner (MxmlScanner.java). This scanner instance performs the low level parsing of XML using the Xercius Java SAX parser library.&lt;br /&gt;
&lt;br /&gt;
The following points may be noted:&lt;br /&gt;
&lt;br /&gt;
1. The SAX parsing method is preferred compared to DOM parsing as it doesn't occupy memory and faster.&lt;br /&gt;
2. The complete MXML file is parsed using this SAX parser and a token stream that contains the nodes (sub classed from the token class) is constructed. In most compiler implementations, the parser calls the scanner to fetch a token and the lexical analyzer generates one token at a time based on the lexical rules and the input source code. However in MXML compiler, the approach is to fully parse the low level XML so that the complete source file is converted in to a token stream and kept in a buffer. The scanner simply returns the node (or token) from the buffer when the parser requires it.&lt;br /&gt;
3. The high level parser (Parser.java that is auto generated by JavaCC - I will explain this subsequently)  fetches the next token from the token stream already created by the scanner as in step 2 above and constructs a document object representing the syntax tree of MXML source code.&lt;br /&gt;
&lt;br /&gt;
Let us look at the above steps in detail: &lt;/p&gt;
&lt;p&gt;The parseMXML method of interface compiler pretty much performs the 3 steps listed above. Once these steps are completed where the syntax tree is built and checked for basic consistency, the interface compiler invokes semantic analysis actions - see SyntaxAnalyzer.java.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: 13px;"&gt;Let us look at the following code reproduced from parseMXML method:&lt;/span&gt;&lt;span style="font-size: 13px;"&gt; &lt;br /&gt;
in = &lt;b&gt;&lt;span style="color: #7f0055; font-size: 13px;"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 13px;"&gt; BufferedInputStream(source.getInputStream()); &lt;br /&gt;
flex2.compiler.mxml.dom.MxmlScanner s = &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-size: 13px;"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 13px;"&gt; flex2.compiler.mxml.dom.MxmlScanner(in, &lt;/span&gt;&lt;span style="color: #0000c0; font-size: 13px;"&gt;mxmlConfiguration&lt;/span&gt;&lt;span style="font-size: 13px;"&gt;.enableRuntimeDesignLayers(), &lt;/span&gt;&lt;span style="color: #0000c0; font-size: 13px;"&gt;processComments&lt;/span&gt;&lt;span style="font-size: 13px;"&gt; ); &lt;br /&gt;
Parser p = &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-size: 13px;"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 13px;"&gt; Parser(s); &lt;br /&gt;
MxmlVisitor v = &lt;/span&gt;&lt;b&gt;&lt;span style="color: #7f0055; font-size: 13px;"&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: 13px;"&gt; SyntaxTreeBuilder(); &lt;br /&gt;
p.setVisitor(v); &lt;br /&gt;
app = (DocumentNode) p.parseApplication(); &lt;/span&gt;
&lt;p&gt;The source code lines 1 and 2 perform the low level XML parsing, steps 3 through 6 perform the language parsing and building the syntax tree. &lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;The Parser class as above is auto generated from a grammar (Grammar.jj) by JavaCC tool. JavaCC produces a top down recursive descent parser based on the grammar specified in Grammar.jj&lt;br /&gt;
&lt;br /&gt;
In the recursive descent parser, there is a method for each non terminal and the parser repeatedly fetches tokens from the scanner using a function: &lt;span style="font-size: 13px;"&gt;jj_consume_token that gets the token from the scanner using the method: getNextToken( )
&lt;p style="text-align: left;"&gt;The starting point for the parser is the method parseApplication and this method recursively descends through other methods to generate parse actions.&lt;/p&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;p style="text-align: left;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;In the next part of this series I will show how the example program (Simple1.mxml) gets parsed by the compiler.&lt;/p&gt;</description><category>compiler</category><category>Open Source</category><category>Adobe Flex</category><comments>http://ananth.info/2010/06/20/adobe-flex-sdk-compiler--under-the-hood-series--part-2-mxml-compiler-lexical-analysis-and-parsing.aspx#Comments</comments><guid isPermaLink="false">414def02-9c6f-48f5-9b1a-a08df9efdd12</guid><pubDate>Sun, 20 Jun 2010 16:26:00 GMT</pubDate></item><item><title>Adobe Flex SDK Compiler - Under the hood series - Part 1 Introduction</title><link>http://ananth.info/2010/06/20/adobe-flex-sdk-compiler.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>I have been experimenting with Adobe Flex compilers of late and thought that it would be useful to share some of the insights of how the Flex compilers work. Hence I decided to publish my notes in this blog. &lt;br /&gt;
&lt;br /&gt;
There are many sources of very useful and insightful information both from Adobe (see: &lt;a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+3+Compiler+Design"&gt;http://opensource.adobe.com/wiki/display/flexsdk/Flex 3 Compiler Design&lt;/a&gt; )  as well as from other compiler engineers for your reference (For example, see Clement Wong's blog &lt;a href="http://stopcoding.wordpress.com/"&gt;http://stopcoding.wordpress.com/&lt;/a&gt; ) . &lt;br /&gt;
&lt;br /&gt;
I use the term Flex compiler to refer to a several compilers. MXML and Actionscript are the languages of Flex. MXML is typically used to describe UI elements of the application and Actionscript provides the scripting capability. One can use CSS files for styling and creating visually compelling applications. Further, with Flex 4 Spark component architecture, there is a seamless workflow enabled between the designer and developer and the Flex component architecture supports Flash Catalyst (Fc). The Flash Catalyst takes in the visual design created by Creative Suite tools, which is an FXG file and the designer can add interactivity to the visual design using Fc. The Actionscript Byte Code files (ABC files) are a bytecode compiled form of MXML/Actionscript sources and the ABC compiler is used to extract type information from pre compiled bytecode. Thus, multiple compilers are invoked when an end to end Flex application is developed. These compilers are: mxml compiler, Actionscript compiler, FXG compiler, CSS Compiler, ABC compiler and i18N compiler.&lt;br /&gt;
&lt;br /&gt;
These compilers are implemented in Java and hence it makes sense to define the phases of these compilers using a common interface. The SubCompiler interface in the Flex SDK compiler defines the compiler phases as an interface and each of the (sub)compilers mentioned above implement this interface. The key methods of this interface are: preprocess, parse1, parse2, analyze1, analyze2, analyze3, analyze4, generate and postprocess. These methods typically correspond to the traditional compiler phases, where the lexical analysis and parsing is implemented in parse1 and parse2, semantic analysis and optimizations are done in the analyze routines and generate is used typically for final code generation.&lt;br /&gt;
&lt;br /&gt;
The Adobe web site &lt;a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+3+Compiler+Design"&gt;http://opensource.adobe.com/wiki/display/flexsdk/Flex+3+Compiler+Design&lt;/a&gt; provides an excellent overview to get started. The architecture diagram of Flex compiler infrastructure can be found from &lt;a href="http://opensource.adobe.com/wiki/download/attachments/12845394/compiler.png?version=1"&gt;http://opensource.adobe.com/wiki/download/attachments/12845394/compiler.png?version=1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
In the next several parts we will focus on the design of MXML compiler. I will focus on the lexical analysis and parsing aspects of MXML compiler for MXML source code in the next part. In particular we will examine how the MXML Scanner works and how it integrates with the parsing mechanism.</description><category>compiler</category><category>SDK</category><category>Adobe Flex</category><comments>http://ananth.info/2010/06/20/adobe-flex-sdk-compiler.aspx#Comments</comments><guid isPermaLink="false">d76b7f97-e2c6-40ba-b848-74fdb523db1c</guid><pubDate>Sun, 20 Jun 2010 13:19:00 GMT</pubDate></item><item><title>Supporting synchronous programming model for Adobe Flex</title><link>http://ananth.info/2010/06/16/supporting-synchronous-programming-model-for-adobe-flex.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>Developer often need to synchronize different pieces of the program logic in their applications. For example, consider a problem where we search for the images using a Image Search web service API, retrieve each of these images and then displaying the images as a slide show. In this example, the image search web service returns a list of URL's that point to the image that we specified in our search string. Hence the pieces of program logic that we need to synchronize are:&lt;br /&gt;
&lt;br /&gt;
1. Using a web service and retriving the URL's that correspond to the images that we are searching&lt;br /&gt;
2. Using the URL's that are returned in the step 1 to fetch the actual images that are pointed to by these URL's&lt;br /&gt;
3. Displaying each of these retrieved images as a part of the slide show&lt;br /&gt;
&lt;br /&gt;
Obviously, the above 3 steps need to be executed in order as it doesn't make sense to display an image (Step 3 as above) before that image is retrieved using the URL (as in Step 2).&lt;br /&gt;
&lt;br /&gt;
In an RIA programming language, such as Adobe Flex, the steps 1 and 2 are executed as asynchronous calls where the Flex client fetches the relevant data (URLs or Images) from the server using web services (or REST or AMF) that are invoked asynchronously. Here the synchronization between the 3 steps is accomplished by writing event handlers explicitly for each of the asynchronous calls that were invoked. The asynchronous execution permits greater degree of interactivity of the application as it doesn't block the UI and hence is very beneficial.&lt;br /&gt;
&lt;br /&gt;
However, the process of handling synchronization through a chain of event handlers is more complex and in some situations less intuitive and error prone. Developers who are more accustomed to the traditional ways of synchronizing programs (using primitives like message passing or semaphores etc) would find doing the same using event handlers to be more complex.&lt;br /&gt;
&lt;br /&gt;
Hence the question is, can we provide a mechanism by which the developer can write the program using a synchronous programming style but the underlying system executes this in an asynchronous way?&lt;br /&gt;
&lt;br /&gt;
We have developed an innovative mechanism using compiler transformations that allows a programmer to write his logic as if it is executing in a synchronous environment, while the actual execution happens on an asynchronous run time, which is Flash/Flex. Here, the compiler makes it transparent the process of writing event handlers as this part is generated by the compiler automatically transparent to the programmer. &lt;br /&gt;
&lt;br /&gt;
This work is published in the recent issue (May/June 2010) of IEEE Internet Computing and is titled: &lt;a href="/xpls/abs_all.jsp?arnumber=5481363"&gt;Compiler Transformations to Enable Synchronous Execution in an RIA Runtime&lt;/a&gt; by &lt;strong&gt;Iyer, Anantharaman P. Narayana &lt;/strong&gt; &lt;b&gt;Chatterjee, Arijit &lt;/b&gt; &lt;b&gt;Kishnani, Jyoti &lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
For more details, please have a look at: &lt;a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5481363"&gt;http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5481363&lt;/a&gt;&lt;br /&gt;</description><category>Adobe Flex</category><comments>http://ananth.info/2010/06/16/supporting-synchronous-programming-model-for-adobe-flex.aspx#Comments</comments><guid isPermaLink="false">faa887b9-945e-4e15-a35d-5ad3ac4bcc8f</guid><pubDate>Wed, 16 Jun 2010 17:21:00 GMT</pubDate></item><item><title>Developing a Rich Internet Google App Engine Application using Adobe Flex</title><link>http://ananth.info/2009/04/26/developing-a-rich-internet-google-app-engine-application-using-adobe-flex.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>&lt;P&gt;Google App Engine (GAE) is a Cloud Computing platform where a developer can build a cloud application and host it on Google servers. GAE at this point of writing supports Python and Java programming models and offers a set of services.The Getting Started documentation of GAE provides several examples to build a GAE application. However these applications are HTML based and do not provide details of building a Adobe Flex based Rich Internet Application client. Hence my intent in this series of posts is to discuss the details of building a GAE application with Flex as the client application providing a number of examples. In this post let us examine the key concepts behind building a Flex based RIA for Google App Engine. &lt;BR&gt;&lt;BR&gt;I will discuss the examples using Python as the backend programming language and will assume Windows XP or Vista client machine.&lt;BR&gt;&lt;BR&gt;Let us consider a simple problem as below:&lt;BR&gt;&lt;BR&gt;1. In the server side logic we will authenticate a user with Google Accounts&lt;BR&gt;2. Depending on success or failure of authentication we will display a suitable message in the Flex application&lt;BR&gt;&lt;BR&gt;To implement the solution to this problem, we will:&lt;BR&gt;&lt;BR&gt;1. Develop the server code in Python that performs&amp;nbsp;some function using the&amp;nbsp;Services offered by GAE SDK&lt;BR&gt;2. Develop the client code in MXML using Adobe Flex Builder 3.0&lt;BR&gt;3. Test the application using the localhost server, bundled with GAE SDK&lt;BR&gt;4. On successful local testing, deploy the application (both client side and server side) on GAE&lt;BR&gt;5. Test the final deployed application&lt;BR&gt;&lt;BR&gt;As a first step, set up the development environment as below:&lt;BR&gt;&lt;BR&gt;1. Obtain a GAE application ID by signing up - see &lt;A href="http://code.google.com/appengine/"&gt;http://code.google.com/appengine/&lt;/A&gt;&lt;BR&gt;2. Download the GAE SDK for Python&lt;BR&gt;3. Make sure you already have Python 2.5. If not download from &lt;A href="http://python.org/"&gt;http://python.org/&lt;/A&gt;&amp;nbsp;Since GAE supports Python 2.5, it is better to download the same version though higher versions may be available from &lt;A href="http://python.org"&gt;http://python.org&lt;/A&gt; site&lt;BR&gt;4. Make sure you have the Flex Biulder 3.0 installed in your system. If you do not have one, you can download a trial version from Adobe web site. For students Flex Biulder is free.&lt;BR&gt;&lt;BR&gt;Before we begin, it is useful to review how Flex connects to a server application.&lt;BR&gt;&lt;BR&gt;The earlier generations of Web applications were server centric. The business logic (in this example, "Authentication") executed on server and in addition to this, the presentation content was also generated in the server. You may review the examples provided under &lt;A href="http://code.google.com/appengine/docs/python/gettingstarted/"&gt;Getting Started section of GAE&lt;/A&gt; where this point becomes very obvious. &lt;BR&gt;&lt;BR&gt;&lt;SPAN class=pun&gt;&lt;FONT face=Arial&gt;We may note that the&amp;nbsp;sample code in Google Getting Started documentation&amp;nbsp;has a get method that emits the necessary HTTP headers and also the HTML content for the display. This is in line with typical HTML based applications that often have a page based metaphor than an application metaphor.&lt;BR&gt;&lt;BR&gt;Since the Flex applications run on the client and are responsible for handling the presentation, they do not require HTML to be generated from the server. Instead, Flex applications just need the data from the server and they can render the data and manage them on the client. Flex applications interact with the server through well defined, standard SOA model. Broadly, three major protocols are supported:&lt;BR&gt;&lt;BR&gt;1. SOAP/WSDL based web services&lt;BR&gt;2. REST based services&lt;BR&gt;3. Remote Object protocol that uses Adobe's AMF binary format&lt;BR&gt;&lt;BR&gt;In my next post, I will show how to build the client and server applications for Flex/GAE.&lt;BR&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;</description><category>Adobe Integrated Runtime</category><category>Flex Builder</category><category>cloud computing</category><category>AIR</category><category>Google App Engine</category><category>Adobe Flex</category><category>SOA</category><comments>http://ananth.info/2009/04/26/developing-a-rich-internet-google-app-engine-application-using-adobe-flex.aspx#Comments</comments><guid isPermaLink="false">f9370ad9-c4b8-4b81-9f93-41974a95ad8e</guid><pubDate>Sun, 26 Apr 2009 17:18:00 GMT</pubDate></item><item><title>Does Cloud Computing and SaaS complicate an ISV world?</title><link>http://ananth.info/2009/01/10/does-cloud-computing-and-saas-complicate-an-isv-world.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>I was one of the panel speakers in a Panel Discussion organized by Headstart as a part of a Cloud Computing conference at Bangalore during Jan 9th and 10th. The conference agenda is at &lt;A href="http://headstart.in/Agenda/"&gt;headstart.in/Agenda/&lt;/A&gt; &lt;BR&gt;&lt;BR&gt;The panel met on an interesting topic: "Software-as-a-Service delivered from Clouds". I spoke on how the cloud computing paradigm changes the ISV world. The cloud paradigm has caught the attention over the last 1 year with several major ISVs making their offering and some of the businesses that leverage this paradigm reporting major growth. &lt;BR&gt;&lt;BR&gt;The value proposition of cloud to businesses is strong - the need for any capital investment is minimal or zero and the cloud infrastructure allows scaling and is elastic as the needs grow. However, to make a product as a cloud offering, one encounters the following challenges at a broad level:&lt;BR&gt;&lt;BR&gt;1. Architecting the application for the Cloud: Delivery considerations&lt;BR&gt;2. Developing rich internet access models that access the cloud applications: Cloud Client development considerations&lt;BR&gt;3. Business Models: What challenges the traditional&amp;nbsp; ISV's need to address to make revenue out of cloud?&lt;BR&gt;4. Development methodologies: How does a developer build cloud applications? What options exist? What are the considerations?&lt;BR&gt;&lt;BR&gt;I am planning to write a series of posts to share my thoughts with the first post (this one) describing the intersection of Rich Internet Applications and Cloud computing.&lt;BR&gt;&lt;BR&gt;Before we go deep in to RIA and cloud, let me describe the cloud computing through an architectural model. At a broad level, we may categorize the cloud application environment in to the following layers:&lt;BR&gt;&lt;BR&gt;1. Infrastructure &lt;BR&gt;&lt;BR&gt;This layer represents the utility computing or on-demand computing model that are typically offered by hardware system vendors, such as HP, IBM, EMC. The compute servers and storage servers are made available through data center hosting as a virtual environment. The user of this layer will be able to run his applications on the compute servers or store data in the storage servers receiving these services as a utility. Amazon is a good example of an ISV who operates in this layer with its offerings such as Amazon EZ2 elastic cloud.&lt;BR&gt;&lt;BR&gt;2. Software &lt;BR&gt;&lt;BR&gt;The Software layer typically hosts cloud scalable databases, application servers, frameworks and other standard software typically used in web application environment. For example, Oracle partners with Amazon to make available its database products as a hosted application.&lt;BR&gt;&lt;BR&gt;3. Services&lt;BR&gt;&lt;BR&gt;There are many providers who make utility services available on the cloud. These services typically web services based and are invoked through the client program. Often a client application may invoke one or more services from different providers and combine these to offer unique benefits. These are mash up applications. Examples of services are map based services, image and video services etc. &lt;BR&gt;&lt;BR&gt;4. Application&lt;BR&gt;&lt;BR&gt;Many hosted applications are emerging. These include office applications like word processing applications (for example, Adobe Buzzword), Customer Relationship Management applications (such as those from Salesforce.com) etc. &lt;BR&gt;&lt;BR&gt;It is possible for someone to write an application (application layer) that mashes up services from different service providers (service layer), use the databases (from Software layer) and be hosted on the compute and storage servers (Infrastructure layer). In a generic sense, it is possible that the vendors who provide each of the services listed above can be different - that is, an application may be executed on a compute server hosted by Amazon, the data stored in a EMC server and application services may come from servers that may be owned by some other vendors.&lt;BR&gt;&lt;BR&gt;For us to understand the role of RIA in Cloud computing environment, let us think through what happens if we are required to use our popular word processing application that we run in our desktop from the web?&lt;BR&gt;&lt;BR&gt;As a user, we might face the following issues:&lt;BR&gt;&lt;BR&gt;a) Since the data and application are served from the web that we typically invoke these through the browser, the user experience may be poorer. This may happen due to:&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- Poor network bandwidth&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- The choice of client technology. For example, if the presentation content&amp;nbsp; is a&amp;nbsp;HTML page in the Web 1.0 style (Synchronous communication with the server with page refreshes), the user experience may not be all that great.&lt;BR&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;- The application architecture and design&lt;BR&gt;&lt;BR&gt;b) There may be reliability issues if the providers of the services/utility do not guarentee certain Quality Of Service. Hence, potentially one may expect situations where the server may be down or services may be unavailable online.&lt;BR&gt;&lt;BR&gt;c) Trust and Security concerns that arise due to the fact that the hosting infrastructure is not owned by the user.&lt;BR&gt;&lt;BR&gt;d) Typically, pay as you go mode of payment as against upfront purchase of a software product&lt;BR&gt;&lt;BR&gt;The RIAs help to address the issue (a) as above. Since we are looking at an example where we are using our popular desktop software as a web hosted application, it is fair to have an expectation that the user experience over web remains the same, if not better, than the desktop experience. Here is where RIA's with their ability to deliver desktop experience on web play a key role. Adobe's premier RIA platforms: Flash, Flex and AIR provide a great user experience to the web applications. Adobe Flex, with its comprehensive repertoire of user interface controls, provide a web experience that comes close to the desktop experience. Since the RIA's leverage the computing power in the client, the load on the server can be reduced, thus enabling a faster response from the server.&lt;BR&gt;&lt;BR&gt;Often it is necessary to access the cloud applications from non PC clients such as cell phones. Adobe Flash technologies support such application models.&lt;BR&gt;&lt;BR&gt;Some cloud applications may be peer to peer based. In such situations there is a need for data synchronization between different clients that are peer devices. Often, one may also need to support different access protocols such as Publish/Subscribe besides the traditional Request/Response protocols. In such situations, the Adobe Livecycle Data Services (LCDS) or the open source BlazeDS technologies would be very handy.&lt;BR&gt;&lt;BR&gt;Thus, the Adobe Flash/Flex/AIR technologies for the client side and the Livecycle technologies for the server side make Adobe products a very compelling product suite for the development of cloud applications.&lt;BR&gt;&lt;BR&gt;I intend&amp;nbsp;to write more on this topic and so will stop here for now &lt;IMG src="http://ananth.info/emoticons/smile.png" border=0&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</description><category>Flex Builder</category><category>Adobe</category><category>Flex</category><category>cloud computing</category><comments>http://ananth.info/2009/01/10/does-cloud-computing-and-saas-complicate-an-isv-world.aspx#Comments</comments><guid isPermaLink="false">4dff471c-f47d-43ef-9547-0c726027de34</guid><pubDate>Sat, 10 Jan 2009 15:17:00 GMT</pubDate></item><item><title>Synergies in SOA and Web 2.0 Trends</title><link>http://ananth.info/2009/01/04/synergies-in-soa-and-web-20-trends.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>&lt;p&gt;I&amp;nbsp;delivered an&amp;nbsp;invited key note speech at the Service Oriented Engineering and Optimization (SENOPT 08) workshop which was conducted as a part of High Performance Computing (HiPC) conference in Bangalore, India. This talk asserts that over the last 7 years, 2 key trends have emerged: SOA on the services front and Web 2.0 that greatly influences the client side. These two trends are not independent of each other and in fact support one another's adoption. The presentation brings out the synergies and enumerates several Adobe case studies that support this theme. I enjoyed doing this presentation to the research community and am immensely thankful to my colleague, Duane Nickull.&amp;nbsp;He is the senior evangelist at Adobe and also the chair for&amp;nbsp;&lt;!--StartFragment --&gt;&amp;nbsp;the &lt;span class="caps"&gt;OASIS&lt;/span&gt; Service Oriented Architecture Reference Model Technical Committee (SOA-RM TC). &lt;br&gt;&lt;br&gt;&lt;a href="http://ananth.info/files/54923-48191/SOA_And_Web2_0Keynote16Dec2008_Abridged.pdf"&gt;Here are the abridged version of slides&lt;/a&gt;&lt;/p&gt;</description><category>Web 2.0</category><category>Adobe</category><category>Bangalore</category><category>RIA</category><category>Flex</category><category>SOA</category><comments>http://ananth.info/2009/01/04/synergies-in-soa-and-web-20-trends.aspx#Comments</comments><guid isPermaLink="false">d064b3d2-abb9-4e8e-95f7-39e403e630dc</guid><pubDate>Sun, 04 Jan 2009 12:21:00 GMT</pubDate></item><item><title>Adobe Flex and AIR training material</title><link>http://ananth.info/2008/12/06/adobe-flex-and-air-training-material.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>Duane Nickull, Adobe Senior Evangelist has made available excellent material that provide insights in to Adobe RIA technologies, Flex and AIR and how to connect different backends with RIA clients. The training material has 8 hours worth of content ranging from Hello World to more advanced topics of 
using remoting and WSDL introspection. This is a free download, have a look at:&lt;br&gt;&lt;br&gt;&lt;a href="http://technoracle.blogspot.com/2008/12/building-service-clients-with-flex-and.html"&gt;http://technoracle.blogspot.com/2008/12/building-service-clients-with-flex-and.html&lt;/a&gt;</description><category>AIR</category><category>Flex</category><category>RIA</category><comments>http://ananth.info/2008/12/06/adobe-flex-and-air-training-material.aspx#Comments</comments><guid isPermaLink="false">e45dbbba-16c6-4338-85dc-8d971f35da9c</guid><pubDate>Sat, 06 Dec 2008 06:04:00 GMT</pubDate></item><item><title>Academic Conference - Web 2.0, AIR and Flex presentation by Ananth</title><link>http://ananth.info/2008/08/16/academic-conference--web-20-air-and-flex-presentation-by-ananth.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description> &lt;!--Put your widget in between the following div tags--&gt;
&lt;DIV id=PutWidgetHere&gt;Adobe Systems India&amp;nbsp;conducted a workshop for academia on 12 Aug 2008 at Hyderabad. I gave an overview of Web 2.0 and the Adobe products Flex/AIR that help build Rich Internet Applications in the context of Web 2.0 - &amp;nbsp;&lt;A href="http://ananth.info/files/54923-48191/Web2RIA_Overview12Aug2008_blog_version.pdf"&gt;presentation in PDF&lt;/A&gt; &lt;/DIV&gt;&lt;!--This script invokes the Button or Menu. Note: the "source" should point to ID of the div that contains your widget--&gt;
&lt;P&gt;If you want to add this as a widget in your page (iGoogle, etc) you can grab this&lt;/P&gt;
&lt;SCRIPT src="http://widgets.clearspring.com/o/48a6efff4ef2a364/48a78ee00930c15f/48a6f4b9fd14c833/59c6ed69/widget.js" type=text/javascript&gt;&lt;/SCRIPT&gt;</description><category>Air</category><category>Adobe Integrated Runtime</category><category>Web 2.0</category><category>Adobe</category><category>FLEX</category><category>RIA</category><comments>http://ananth.info/2008/08/16/academic-conference--web-20-air-and-flex-presentation-by-ananth.aspx#Comments</comments><guid isPermaLink="false">3215a71c-c1c4-4633-89ff-ba4f143d0518</guid><pubDate>Sat, 16 Aug 2008 14:51:00 GMT</pubDate></item><item><title>Flex Builder Linux Alpha2</title><link>http://ananth.info/2007/12/19/flex-builder-linux-alpha2.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>In continuation of&amp;nbsp;its commitment for Linux, Adobe released the Alpha 2 version of Flex Builder for Linux. It is available from Adobe labs site at: &lt;A href="http://labs.adobe.com/technologies/flex/flexbuilder_linux/"&gt;http://labs.adobe.com/technologies/flex/flexbuilder_linux/&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;This Alpha2 release incorporates bug fixes, installer enhancements to provide better messaging for 64 bit,&amp;nbsp;jseclipse support, Fedora 8 support, Data visualization and automation trials,&amp;nbsp;integration with&amp;nbsp;Moviestar&amp;nbsp;etc.&lt;BR&gt;&lt;BR&gt;</description><category>Flex Builder</category><category>Linux</category><category>FLEX</category><category>RIA</category><comments>http://ananth.info/2007/12/19/flex-builder-linux-alpha2.aspx#Comments</comments><guid isPermaLink="false">8b081f99-67ea-4c7a-88ea-032539fd9400</guid><pubDate>Wed, 19 Dec 2007 05:50:00 GMT</pubDate></item><item><title>Web Innovation 2007 Conference</title><link>http://ananth.info/2007/12/19/web-innovation-2007-conference.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>The Web Innovation 2007 Conference started in Bangalore on 18 Dec 2007 with a panel discussion chaired by an elite panel. The panelists were: &amp;nbsp;&lt;SPAN class=skyb&gt;Naresh Gupta, Managing Director - Adobe, Mohit Hira, Director - Times Internet, Krishnakumar Natarajan, President &amp;amp; CEO - MindTree, Jaspreet Bindra, Country Manager MSN India - Microsoft, Dr. T.R. Madan Mohan, Director – Consulting, Information Communication &amp;amp; Technology Practice - Frost &amp;amp; Sullivan.&lt;BR&gt;&amp;nbsp;&lt;BR&gt;Naresh said that Web 2.0 is the realization of the potential of traditional web through the right business models, right applications etc and in that sense, web 2.0 is an evolution rather than something substantially a new paradigm. This view was echoed by other panelists. Mohit, with an anology of Bangalore roads,&amp;nbsp;explained Web 2.0 as a two way street as compared to the traditional web, which is more of a one way street. The panelists also felt that one has to go beyond community activities in order to succeed with Web 2.0.&lt;BR&gt;&lt;BR&gt;Are people making money in Web 2.0? Naresh said that "yes" - As an example, many companies that use the advertising model make substantial&amp;nbsp;revenues and their valued at multi billion $ by the market. The story with respect to India is abysmal though. &lt;BR&gt;&lt;BR&gt;What are the top 3 inhibitors to Web 2.0 adoption and success in India? Most panelists felt it is broadband, broadband, broadband! In addtion panelists also pointed out that it is not natural in India to form professional communities or communicate through blogs. It was mentioned that the bloggers from India is a miniscule compared to the potential. &lt;BR&gt;&lt;BR&gt;Isn't it easy to switch loyalties in the world of Web 2.0? How would a business create and sustain its advantage? Jaspreet&amp;nbsp; pointed out that it is not easy to switch from one IM to other or one social networking to other because, it requires the entire community to switch. It is not a matter of an individual switiching.&lt;BR&gt;&lt;BR&gt;Overall, it was a great panel discussion followed by absorbing key note speeches.&lt;/SPAN&gt;</description><category>Web 2.0</category><category>Adobe</category><category>RIA</category><category>WebInnovation2007</category><comments>http://ananth.info/2007/12/19/web-innovation-2007-conference.aspx#Comments</comments><guid isPermaLink="false">cd288328-711a-49ee-9237-340ce3a16990</guid><pubDate>Wed, 19 Dec 2007 04:30:00 GMT</pubDate></item><item><title>RIA Leadership Summit</title><link>http://ananth.info/2007/10/29/ria-leadership-summit.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>&lt;DIV&gt;Adobe India conducted "RIA Leadership Summit" on 25th Oct 2007. This is a major event well attended by over 120&amp;nbsp;technologists and decision makers from major corporate in India. The session started with a welcome address by Naresh Gupta, the Managing Director and head of Adobe India. The major highlight of the event is the key note by Shantanu Narayen, President and COO of Adobe Systems. Shantanu articulated the importance of "Engagement as a business imperative", different forms and modes of engagement and introduced the Rich Internet Applications as a major means of engagement. It was very exciting to hear the major advances in RIA technology, in particular, the Adobe Integrated Runtime (AIR formerly called Apollo). There were both on stage as well as stall demos which were very absorbing. In particular, the data visualization demos, mash up builder and the mobile demos attracted everyone. In all, it was a very absorbing evening that had many takeaways for the participants with diverse background.&lt;/DIV&gt;</description><category>Leadership Summit</category><category>FLEX</category><category>Adobe</category><category>Bangalore</category><category>RIA</category><category>India</category><comments>http://ananth.info/2007/10/29/ria-leadership-summit.aspx#Comments</comments><guid isPermaLink="false">6a00b2e7-a5f4-438d-9bd6-f6da75e8a6f7</guid><pubDate>Mon, 29 Oct 2007 03:56:00 GMT</pubDate></item><item><title>Sivaji - Adobe Flex based Mash up application</title><link>http://ananth.info/2007/07/06/sivaji--adobe-flex-based-mash-up-application.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>&lt;P&gt;Here is your single window to all about Sivaji the Boss! &lt;A HREF="/files/54923-48191/sivaji1.html"&gt;Click here&lt;/A&gt; to view all information on Sivaji, the Tamil film blockbuster from Super star Rajini...&lt;BR&gt;&lt;BR&gt;How did we build this cool application? The magic is due to Adobe Flex!&lt;BR&gt;&lt;BR&gt;If you want to create similar cool Rich Internet sites download and try Flex 3 beta from: &lt;A href="http://labs.adobe.com&lt;BR&gt;&lt;BR&gt;P.N."&gt;labs.adobe.com&lt;BR&gt;&lt;BR&gt;P.N.&lt;/A&gt; Anantharaman&lt;/P&gt;</description><category>Mash up</category><category>RIA</category><category>FLEX</category><category>Sivaji</category><category>Super star</category><category>Movie</category><category>Rajini</category><comments>http://ananth.info/2007/07/06/sivaji--adobe-flex-based-mash-up-application.aspx#Comments</comments><guid isPermaLink="false">b6fdfbfd-5c41-42af-b5ca-1cb71bdc3368</guid><pubDate>Fri, 06 Jul 2007 09:57:00 GMT</pubDate></item><item><title>Adobe to open source Flex</title><link>http://ananth.info/2007/04/26/adobe-to-open-source-flex.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>Adobe has announced open sourcing of Flex, the framework for building Rich Internet Applications. It is licensed under Mozilla Public License that will allow full and free access to the source code to not only Flex SDK but also MXML and Actionscript compilers. This is a great news for developers who can't wait to build powerful platforms for developing RIA's. With the Actionscript virtual machine already open sourced (Tamarin project), the Flex open sourcing constitutes a very significant step. &lt;BR&gt;&lt;BR&gt;You can see the announcement from Adobe at &lt;A href="http://www.adobe.com"&gt;http://www.adobe.com&lt;/A&gt;&lt;BR&gt;</description><category>FLEX</category><category>Adobe</category><category>Open Source</category><category>RIA</category><comments>http://ananth.info/2007/04/26/adobe-to-open-source-flex.aspx#Comments</comments><guid isPermaLink="false">39c201ac-3921-4c78-828a-8c11d4f140ef</guid><pubDate>Thu, 26 Apr 2007 05:44:00 GMT</pubDate></item><item><title>Flex workshop at Adobe, Bangalore</title><link>http://ananth.info/2007/04/13/flex-workshop-for-customers.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>&lt;P&gt;We (The Flex team from Adobe Bangalore) did a 1 day Flex in-depth workshop to key customers. The presentations covered several core topics like Flex Overview, Flex Datagrid, Drag and drop, Item renderers,&amp;nbsp;Event Model, Data management, MVC/Caingorm etc. Apart from formal presentation, the workshop included demos and explained code snippets.&lt;BR&gt;&lt;BR&gt;I made a presentation on Event Model of Flex and basics of Data providers in Flex. I enjoyed speaking to a knowledgeable audience and we had an enjoyable interactive session.&lt;BR&gt;&lt;A HREF="/files/54923-48191/FlexEventDataManagement10April2007.ppt"&gt;Click here to download the slides on Flex Event model and Data Providers&lt;/A&gt;&lt;/P&gt;</description><category>FLEX</category><category>Web 2.0</category><category>RIA</category><comments>http://ananth.info/2007/04/13/flex-workshop-for-customers.aspx#Comments</comments><guid isPermaLink="false">450c8573-46f2-45ce-be1b-8fde918fe04a</guid><pubDate>Fri, 13 Apr 2007 04:54:00 GMT</pubDate></item><item><title>RIA Presentation Slides</title><link>http://ananth.info/2007/03/26/ria-presentation-slides.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>&lt;P&gt;The SJCE college at Mysore, India organized an IEEE sponsored student event called Cyberia. I made a presentation on Rich Internet Applications to the student community. There is a great interest among the student community in India to learn Web 2.0 in general and Rich Internet platforms like Flex in particular. &lt;A HREF="/files/54923-48191/RIA_PresentationToSJCE23March2007.pdf"&gt;Here are the presentation slides on Rich Internet Applications.&lt;/A&gt;&lt;/P&gt;</description><category>AJAX</category><category>Web 2.0</category><category>Apollo</category><category>FLEX</category><category>RIA</category><comments>http://ananth.info/2007/03/26/ria-presentation-slides.aspx#Comments</comments><guid isPermaLink="false">70f965a7-4401-44c1-8b89-c33b0e1a6282</guid><pubDate>Mon, 26 Mar 2007 04:53:00 GMT</pubDate></item><item><title>Adobe Developer Olympiad - How to make your application interesting?</title><link>http://ananth.info/2006/12/06/adobe-developer-olympiad--how-to-make-your-application-interesting.aspx?ref=rss</link><dc:creator>Anantharaman Narayana Iyer</dc:creator><description>&lt;FONT size=3&gt;Adobe India has announced the Adobe Developer Olympiad contest for students. Please check out: &lt;A href="http://www.adobeindia.com"&gt;www.adobeindia.com&lt;/A&gt; and click on Adobe Developer Olympiad. This contest is intended to encourage the students from recognized Indian universities to build compeeling Rich Internet Applications (RIA) and components based on Adobe Flex and ColdFusion technologies. &lt;BR&gt;&lt;BR&gt;What are the key steps to building a compelling RIA application or a component? Here are some tips:&lt;BR&gt;&lt;BR&gt;1. Choose the right application that can benefit from being an RIA.&amp;nbsp;and being visually rich. An application that serves its intended purpose effectively&amp;nbsp;with a simple text interface may not benefit much if we make it jazzy. It&amp;nbsp;may even&amp;nbsp;make the user experience worse. On the other hand, applications that are inherently complex requiring multiple controls can benefit significantly from enhanced user experience through&amp;nbsp;RIA technology. Flex provides a variety of components that can be used to build very rich interfaces in quick time&lt;BR&gt;2. Choose a real world application. Higher the business value of the application, better it is. One strategy is to select some of the popular existing web sites that are not RIA based and redesign them using RIA. A good example is to redesign crickinfo.com where the existing design can be improved significantly using flex&lt;BR&gt;3. Focus on innovative design. Identify which component would be suitable for what purpose eg, should we use tabs or accordian or ...&lt;BR&gt;4. Think through both client side and server side design. ColdFusion is an excellent server side product that makes it very easy to build complex server side logic&lt;BR&gt;5. Focus more on innovation. It is not necessary to build a product grade quality to the application for the purpose of this contest.&lt;BR&gt;6. Contact &lt;A href="mailto:ado@adobe.com"&gt;ado@adobe.com&lt;/A&gt; for any help.&lt;/FONT&gt;</description><category>ADO</category><category>RIA</category><comments>http://ananth.info/2006/12/06/adobe-developer-olympiad--how-to-make-your-application-interesting.aspx#Comments</comments><guid isPermaLink="false">e0ab49a2-1591-4b4e-a494-d05c623ebe96</guid><pubDate>Wed, 06 Dec 2006 09:57:00 GMT</pubDate></item></channel></rss>