Unleashing the power of Flex,BlazeDS, and Java applications

First of all, Flex and BlazeDS are open sourced and free, which is important for many IT shops even those from filthy rich Wall Street companies. Typically, an enterprise IT group has a limited budget, and even though a more advanced LiveCycle Data Services component offers you more options and better scalability than BlazeDS, for most of the applications using BlazeDS installed in any Java Servlet container is a very solid way of building RIA that are a lot more superior to those built on plain HTTP let alone SOAP Web Services.

The main power of BlazeDS is its binary AMF protocol that seamlessly serializes strongly typed data between Flex and Java. Just think of the typical use case described below.

A POJO on the server side gets a bunch of Customer.java records (say, ArrayList) from a data source and needs to display them as a grid in a Web Browser. With a regular HTML/JavaScript Web application you’d need to convert the customers’ data into some kind of text representation (losing the data types information of customer data), then GZip the data, send them to the client, and using JavaScript manipulations convert the data into appropriate data types for further processing.

You don’t need to do any of these while sending the data from Java on the server to Flex on the client. The ArrayList of customers gets serialized/deserialized into an ActionScript ArrayCollectoin of strongly typed data transfer objects defined in the class Customer.as.

HTTP batching and streaming is a combination of few technologies with a close resemblance to how car traffic is controlled on some highways. There are dedicated lanes for high-occupancy vehicles (HOV) that move faster during the rush hours. Such HOV lanes can be compared to the
HTTP channels opened for streaming. For example, you can program network communications in such way that one channel allows only two data pushes per second (a guaranteed QoS), while the other channel will try to push all the data, which may cause network congestion, delays, and queuing.

With AMF, the data gets loaded faster than with nonbatched requests/responses. And it plays nicely with the typical infrastructures that use firewalls as it piggybacks on the existing browser HTTP requests.

However, for critical HTML/JavaScript applications a problem remains: there is no QoS provided by HTTP protocol, which may become a showstopper. For example, think of a financial application that sends real-time price quotes to the users. The server keeps sending messages, regardless of the current throughput of the network, which in case of network congestion will be causing problems with queues overruns or lost packages.

Recently released LCDS 3 has introduced features to support reliable messaging and throttling, while BlazeDS won’t have it. This is when opensourceness of Flex and BlazeDS becomes handy, because it allows you to customize communication protocols to perfectly meet all the needs of your application and squeeze out a lot more performance from BlazeDS than it’s advertised by Adobe.

How do you even start customizing network protocols? Even the idea of doing this sounds scary, right? It won’t be, if you’ll attend our Master Class in Brussells, Belgium in March: http://www.eventbrite.com/event/527934065. We are planning to run a couple of more if these events in the USA too. Let me throw in some technical terms now since not everyone can appreciate the quality of the Belgium beer yet.

If you open the server-side configuration file services-config.xml that comes with BlazeDS, you’ll find declarations of several communication channels there, for example:

<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"/>

This is an example of configured AMF communication channel. There are three important notions to understand here.

1. AMF operates using messaging under the hood. When you make an RPC call to a remote Java class (a.k.a. destination). Flash Player sends messages to the server, and you can change the way messages are being formed or processed.

2. On the client side (Flex) the ActionScript class a.k.a. channel can be customized, if need be. In the example above this would be the class mx.messaging.channel.AMFChannel.

3. On the server side, there are two Java classes that can be customized: an endpoint (see above flex.messaging.endpoints.AMFEndpoint) and adapter.

Let’s say, you want to ensure that every message header includes a userID that has been authenticated during the logon process, you can do it by customizing the channel and the endpoint classes. This way you won’t need to pass the user ID with every application-specific RPC call.

Two years ago, one of our financial clients was concerned with potential out-of-sequence messages in a trading workflow. Back than it was the application based on LCDS 2.5, which didn’t offer any support in this area. We’ve customized the channel and adapter to provide this functionality. We’ve also implemented throttling to slow down the message pushes in congestion situations. The same things can be implemented with BlazeDS.

Or let’s take another real-world situation when an extra security is required: the client’s workstation has to be automatically logged off and disconnected, if the server didn’t respond during a specified time interval. To put it simple, we need to implement some kinds of heartbeats. Yes, you can customize the AMF protocol so it’ll process heartbeats between the Flex client and Java server.

Didn’t respond to my heartbeat within 20 second? You’re a dead man! The user get’s logged out of the system.

Need better performance with BlazeDS? Introduce a non-blocking I/O.
How about an idea of a reverse RPC call? I mean what I mean. A Java server calls a specified function on the user’s (Flex) application passing whatever arguments are required by the function.

“You may say, I’m a dreamer. But I’m not the only one”, sang John Lennon.

For some reason, most of the RIA developers are into flashy UI as it’s considered to be uber cool. But don’t underestimate the power of the networking protocols in general and of AMF in BlazeDS in particular. At least I know, where the power of Flex and Java EE application is hidden.

Yakov Fain

Prevent Flex numeric nulls from turning to zeros in BlazeDS

This question we get on almost every new client project: “We’re struggling with handling of null values for numeric data types in Flex/Java projects. Every time there’s an update, we end up replacing the original nulls with zeros when the user didn’t actually change that value.  Have you guys come up with a silver bullet for handling numeric nulls?”

Consider a Java method with a Double parameter. You pass uninitialized ActionScript Number, that is, Number.NaN. What will BlazeDS deserialize (unmarshal)? Double.NaN. At this point your Java code may use something like (value==Double.NaN)?null:value, capitalizing on the fact that information about special value of NaN had been delivered from your client code to your server code. Now, let’s assume you change the signature of the Java method to accept Long instead of Double. You pass NaN and you get … 0! The same happens with marshaling ActionScript object that carries Number.NaN properties: they turn into 0, if, god forbid, their Java counterparties are declared as Long or Integer.

The reason is that while Java has Double.NaN it does not support either Long.NaN or Integer.NaN. Looking at the following snippet of code you can see how differently Double and Long variables get treated by Java:

     Double dbl = new Double(Double.NaN); // We emulate incoming numeric null
     System.out.println(dbl); //prints NaN, cause dbl "knows" it came from null
     long l = new Long(dbl.longValue(new Double(Double.NaN)));
     System.out.println(l); // Oops, prints 0!

Unfortunately, native BlazeDS flex.messaging.io.amf.translator.NumberDecoder falls into this trap. So, what is to be done? Luckily, BlazeDS is an open source product and this class has to be slightly modified.

Figure 1 illustrates the changes required to protect null-ability of your Long, Integer, etc values, except Double (we explain what to do with Double-s a bit later):

Modified NumberDecoder class  under Deltawalker

Figure 1. Modified NumberDecoder. Farata modification is on the left, canonical BlazeDS class is on the right.

Now, after you make the changes and compile the class against the rest of the flex-messaging-*** jars you can re-jar your own flex-messaging-core.jar.
Better yer, place this class in the common server folder so that it positively affects classpath of all applications on the server.
From now on, Number.NaN will come as Long null, or Integer null – whatever you decide on the Java side.

It this sounds like to big of a deal to you, keep using Double values and convert Double.NaN to null yourself, when appropriate.

Finally, if you would also like to see Double.NaN automatically converted to null, you will have to substitute one more BlazeDS class – flex.messaging.io.amf.translator.NativeDecoder. Explanation: it’s just so happens that BlazeDS marshalling ignores the NumberDecoder when the source (Number, aka Double) and target (Double) types are the same. Here we come and force BlazeDS to use NumberDecoder with numbers no matter what:

    public class NativeDecoder extends ActionScriptDecoder
    public Object decodeObject(Object shell, Object encodedObject, Class desiredClass)
       if ( DecoderFactory.isNumber(desiredClass)){
         NumberDecoder numberDecoder = new NumberDecoder();
            return numberDecoder.decodeObject(encodedObject, desiredClass);
       } else
         return encodedObject;      // the sole original BlazeDS line

Source code:
NumberDecoder.java modified by Farata
NativeDecoder.java modified by Farata

I’d like to use this opportunity and invite Flex developers living in Europe to attend our Advanced Flex Master Class in Brussels, Belgium on March 1 and 2, 2010.

Victor Rasputnis

Master Class on Adobe Flex in Brussels and more

After teaching our popular advanced Flex master class in New York, Boston, Toronto, London, and Moscow we are hitting the beer capital of the world: Brussels, Belgium. This class is scheduled for the first days of March, and we hope that Flex 4 will be officially released by this date. Our book Enterprise Development with Flex should hit the book stores by then too.

To take advantage of the early bird prices register early at http://bit.ly/59DdIU.

If you can’t make it to Brussells, I’ll be glad to meet with you at 360 Flex in San Jose, CA on March 7-10, where I’ll be presenting on one of the topic from this master class.

If you can’t make it to San Jose, I’ll be very happy to meet you at Flash and the City conference in May in New York City. Most likely I’ll show you a really cool way of embedding a Flex application into a PDF file to be played by Acrobat Reader.

If none of these dates/locations work for you, you can always invite us to teach this class privately on site in your organization almost anywhere on the planet Earth.

Yakov Fain

The Roadmap for Adobe LCDS 3

I had a dream. I had a dream that Adobe’s CTO gave me a call saying, “Yakov, can you help us with writing a roadmap for LiveCycle Data Services for 2010?”
I said, “Piece of cake, Kevin. Just give me a half an hour”. This is what I came out with.

1.    Give a serious bonus to software engineers who created Fiber, a set of goodies behind model-driven development.  Way to go!

2.    Fire that guy who already reached his level of incompetency and said, “If one salesman can sell LCDS licenses for $20K a CPU, everyone can do it”. This  guy is simply killing the product by making it unreachable for lots and lots of corporate clients. Change your state of mind from “these filthy rich Wall Street client should pay” to “each RIA project manager has limited budget”. BTW, have you heard of recession that we are still in?
Remember, when Adobe purchased Macromedia and changed the Flex pricing policy from $15K per server to $700 per IDE people actually started using the product? Why not trying the old trick again?

3.    Charge LCDS evangelists with changing their main message from “Look Ma, No Hands” to “Unleash the superpower of RTMP and custom adapters”. Today, they are preaching to the wrong crowd. Flex enthusiasts who don’t know Java and are developing cool Web sites for their cousins’ video stores won’t be buying LCDS licenses no matter how high you jump. They’ll be happy to use the new Modeler in Flash Builder 4 as a cookie cutter, with free LCDS express edition.

4.    Invest more money in QA to ensure that Fiber’s code generators are not just well written, but are of superb quality. It’s great that you’ve eliminated the need to write Java and configure destinations on the server – people who are not capable of learning Java will applaud you. But generating the in-memory-only code and not giving developers a chance to debug it (if something goes wrong in the generated code) requires top notch quality code interpreter and code generators.  In the 90th, I’ve had excellent experience with  PowerBuilder (Sybase) that did a great job in this department where everything worked as the doctor ordered. But I also had bad experience with BEA System’s Java Workbench IDE that at some point started giving null pointers in the code that was not written by me and was not accessible by debugger.

5.    Usually, enterprise Flex/LCDS developers have to work with existing persistence layers. In Java world, Hibernate and EJB dominate there. Fiber also uses Hibernate in the model-driven development workflow. But what if developers are not allowed to work with DBMS directly and have to use a pre-existing Hibernate layer? It’s not clear how Fiber will  use an existing Hibernate configuration vs. generating a new one.

6.     Ensure that enterprise RIA architects are familiar with such advantages of LCDS over BlazeDS as duplex-by-nature RTMP, reliable messaging, and throttling.  BTW, did I mention that you need to lower the price of the enterprise LCDS license to $5K a CPU?

7.    Start promoting the importance of the load testing on early phases of any RIA project and explain how to use of the new LCDS Java NIO testing tool. Use the lose-weight selling strategy: show the picture of a Flex/LCDS application Before and After.

8.    Purchase Charles monitoring tool and enhance it to allow enterprise  developers to monitor and dissect RTMP calls.

9.    Allow your Flex evangelists publicly admit that even though developer can use MVC Flex frameworks even with Model-driven workflow where the application is generated automatically, it doesn’t bring much value. Really.

10. Ask LCDS evangelists to create a reference implementation of the popular among Java developers Pet Store. Get the existing version over here and do a facelift using Flex and LCDS 3. But make it real including the coverage of all little details that Java EE developers want to know (i.e. how to integrate the new application with existing authentication/authorization service like SiteMinder).

“Wow, Yakov, you came up with a really nice laundry list! What do I owe you?”
“Kevin, if you still have some money left after acquiring Omniture, please send a case of Louis XIII cognac my way. But if you are still recovering, I understand. A case of  Cardenal Mendoza is just fine”.

Yakov Fain

I’m Cairngorm!

First, let me ask Java developers a question. Imagine that one day you wake up and read the following announcement, “As of today, Spring framework is the foundation for delivering of successful J2EE projects. In contrast to earlier versions, many parts apply across frameworks. So, if you are using Struts, JSF, and especially Tapestry, just forget about all these complex to pronounce names. From now on, no matter what framework you use, you are actually using Spring’.

Some of you would think, “Yakov is either out of his mind or is writing this blog sitting in one of the coffeshops in Amsterdam”. Wrong! I’m just reading an announcement about the upcoming release of the popular Adobe framework Cairngorm 3: http://opensource.adobe.com/wiki/display/cairngorm/Cairngorm+3

Based on this announcement, even if you are using PureMVC, Swiz, Mate, or whatever else will be invented in the future, you are using Caingorm. Basically, instead of addressing issues of the Cairngorm 2 framework, someone decided to reuse a well recognized brand in rather small Flex community (about 250K developers) and turn it into a set of guidelines.

The Getting Started document reads, “The original Cairngorm library remains a part of Cairngorm 3, but has not been updated for this release.” Two paragraphs down it states, “To migrate from Cairngorm 2 to 3, you should first read the Cairngorm Guidelines to understand how your existing client-side architecture might be improved. This could involve introducing an inversion-of-control container or simply refining the way you use the original Cairngorm library.”

Now I’m confused. If Cairngorm 2 was a framework and Cairngorm 3 is not, what this improvement from 2 to 3 means? Introduction of IoC simply means throwing away Cairngorm 2 in favor of Parsley, Swiz or Mate. Am I missing something?
Cairngorm 3 includes the following libraries: Observer, Popup, Task, Validation, Integration, Module, Navigation.  Several of them “are implemented as extensions of Parsley Application Framework. In order to take advantage of these libraries, you also need to use Parsley”. Wait a minute. Do I need to use both Cairngorm and Parsely on top of Flex framework? If before, you should’ve added to the project one swc of the selected framework, now you’ll need to add a bunch of them. Are we going to build a pyramid of frameworks or something?
Cairngorm tools include Flex Builder (I assume Flash Builder too), Cairngorm 2, FlexCover, FlexPMD, Flex-Mojo for Maven… What if they decide to use our open source ANT script generator Fx2Ant and include it in Cairngorm too? Is this a good thing?

Yesterday, I’ve attended an interesting presentation about disruptive thinking, where presenter kept asking, “What if you could fly?” Applying the same technique, I’m asking myself,  “What if I’m Cairngorm?”

Tried it several times. It doesn’t work so far. Sure, I’ve gained some weight, but it’s too soon to call myself a mountain. But I’ll be there! I can do it! We need a change! For now, I’ll just use this word as my middle name:

Yakov Cairngorm Fain.

Sounds good, isn’t it?

Upcoming Flex conferences

At this point I’m working on a couple of new presentations for a bunch of upcoming conferences and  seminars and  that will take place in Flex community world wide.While in the past, I was trying to create cool presentations, now I wantbe even cooler and… deliver a booring one.

This upcoming Monday, I’ll be speaking at the Flash Camp Wall Street in New York City. It has great speakers and the best part is that there’s only has one track so attendees will have nowhere to hide from my talk described below:

A boring presentation on Flex libraries and modules

Everyone have heard of RSLs and “Merged into code” link options. But do you really see the connection between the library linkage and your enterprise application performance? Do you know what and when goes over the wire to your users? Do you really understand the difference between the RSL and External linking of Flex libraries? Do you know when to use libraries and when to use modules? Do you know the difference between modules and sub-applications? Do you know how to arrange for a smarter RSL downloads? If you answered “Yes” to most of these questions, don’t waste your time attending this presentation cause it’ll be so boooring for you.

In two weeks my colleague Victor and I will be teaching our advanced Flex 2-day workshop that becomes more and more popular. Moscow, Russia becomes our next destination after New York, Boston, Toronto and London.  If you can read Russian, here’s the link for you. In the first quarter of 2010 we are planning to run it in Warsaw, Poland and Kiev, Ukraine.
One person told me that it’s stupid to go to freezing Moscow in December. No biggies. We like cold vodka.

In March, I’ll be presenting at 360 Flex in San Jose . I love this conference for developers and by developers. If  I’d be sentenced to spend the rest of my life in a desert island and was allowed to take only one Flex conference with me, I’d take 360 Flex.  During this event I’ll show a cool little Flex application that lives inside the PDF and is played by Acrobat Reader.

Flash and the City is the new kid on the block.  Check it out: http://www.flashandthecity.com/#page=AllSpeakers .  Excellent faculty and aggressive pricing will bring several hundreds of Flex and Flash developers to New York City.  If everything goes as planned, I’ll be able to demo something that’s slowly brewing at Farata Systems under the working title “Fluid PDF Forms”. Duane Nickull’s band 22nd Century will be on stage helping attendees to forget everything they’ve learned in the classrooms.

I’ve mentioned just the conferences where I’m involved as a speaker. But there will be plenty of other gatherings of Flex developers during the same period of time. Be there.

Yakov Fain

Podcast: an interview to the RIARevolution

The online publication RIARevolution.com covers everything related to development of rich Internet applications has published an interview with me as a part of the audio podcast Speak Rich. You can download it as an mp3 file or just listen to it at the following Web page: http://bit.ly/2kwOzT

In this interview we are talking about recent Adobe MAX 2009, using Flash for developing application for iPhone, upcoming Flex 4 framework, open source Clear Toolkit framework, the new book on Enterprise development with Flex  and more.

The other episodes of Speak Rich podcast are featuring the following well known software engineers:

Chet Haase, a member of the Adobe Flex SDK team
Stuart Stern, creator of a testing framework Flex Monkey
John Resig, creator of the famous JavaScript library and toolkit — jQuery

You can subscribe to this podcast at http://riarevolution.com/category/speak-rich/

Yakov Fain

How to attend Adobe MAX conference for cheap

Three years ago, I was calculating the cost of attending JavaOne conference: http://java.sys-con.com/node/187608.  Thanks to crisis, the conferences got cheaper, but still are not affordable for many software developers.  I’d like to offer you a legal way to get more than 80% off the registration price at Adobe MAX that will take place next week in Los Angeles. But you have to move fast! It’s easy:

1. Today: enroll into a cheapest class in your local community college to get a student ID.

2. Tomorrow: register for Adobe Max for $199 at the following Web page: http://www.adobe.com/devnet/edu/max2009/.

3. Sunday: arrive to LA.

4. Find me at the conference (I’m nice looking and friendly guy wearing black T-Shirt with white letters FARATA) and say, “Thank you, Yakov for saving me about $1200!”. You can easily find me at 12:30PM on Monday at the Community Pavilion where I’ll be hosting a BOF “Enterprise Development with Flex”.

Sorry, Adobe. Please don’t invalidate my pass for sharing this little trick.

Yakov Fain

Thinking of Flex in London

After running with my colleague Victor an advanced Flex training in London,  we kept asking ourselves, “Why we liked it better than many of similar events from the past?” No, it’s not because London is a nice city to visit. It’s not because you hear dear and darling all the time. The reason is simple – this was the strongest (from the skill set perspective group we’ve ever had).  Go Europe, go! Besides people from UK, we’ve had attendees from Holland, Belgium, Norway and even one person (very strong) from South Africa. Does it mean that European Flex developers are better than American one?

As usual, there was one 90-minute section with a detailed comparison of Flex MVC frameworks.  As usual, I was softly criticizing the use of MVC framework in Flex.  Yes, I can admit that if you are dealing with low-skilled developers you may justify using Cairngorm. IMHO, Mate seems to be less intrusive to your project.  No, I didn’t have a chance to look closely into SWIZ – attending one presentation is not enough for forming an opinion.  PureMVC is over-engineered…

I try to go easy on frameworks in the classroom, because there could be lots of non-technical reasons for adopting this or that framework.   I also know that people who created frameworks are seasoned developers with their vision of how things should be done. No disrespect here. But if they have their vision and are not afraid to promote, I am entitled to have mine, don’t I, darling?
Since we are not in the classroom now, let me use a bit stronger language. If to make a call to a server and display a piece of data on the screen you are using Flex implementations of Façade, Command, Delegate, Proxy, Services, Mediator (which is divided into main and secondary ones), and all these objects have to be properly registered or else….you are nuts. The only excuse I can accept, if you are not a decision maker, and this “architecture” have been forced by another developer. In this case s/he is nuts.

If you are a consultant and suggest such complex but theoretically correct architecture to your customer, I understand (but not approve) your goals  – to keep yourself billable on this project for as long as possible.
If you have a minute, read an article by Joel Spolsky about duck tape programmers. Joel is talking about other than Flex technologies, but it resonates with what I keep promoting for the last 3+ years in Flex community – keep it simple, don’t over-architect your project, be agile, components vs. frameworks. I didn’t hear the term “duck tape programmer” before, but if this means implementing simple solution to deliver the project on time – I’m all for it.

But if being a duck tape programmer can be a good thing, during the last ten years I see a new breed of developers that I call “Google programmer”. No, I’m not talking about people who work for this company. I talk about people whose education consists of googling for code fragments on the as needed basis.  One attendee  stated that he was really surprised when we showed a wealth of information that can be revealed by using the Flex compiler’s option –keep. We’ve been using this option quite a lot to understand what’s under the hood, have you?

Why was -keep such a revelation to this senior developer? Is it because reading program documentation or books on software  is out of fashion in the 21st century?   Googling for the code samples can help when you know what are you looking for. But this –keep is a very good example of what would never be returned by Google unless you specifically ask “How to examine ActionScript code generated by Flex compiler?” Have you ever bothered asking such question?

Each of us, regardless of how senior we think we are, has islands (and gaps) of knowledge and reading books and attending formal training is like a SPA treatment for our minds. That’s why I’m very exited to spending several days in the training rooms at Adobe MAX conference, where I’ll be studying hard new tools and techniques of software development and architecture. Many great developers that will attend this event will definitely give me a new perspective to “obvious things”, and maybe  there is another secret key besides the –keep that will help me in some way  to be more productive and efficient at work.

This year I go there with Victor Rasputnis and Anatole Tartakovsky, and each of us is eager to learn from others and share what we know.

See you at MAX,
Yakov Fain

My wishlist for Adobe MAX 2009

In ten days I’ll be sitting at the general session at Adobe MAX 09 in LA.  People from Adobe will come up on stage one after another delivering the latest news on the products we all use daily. Here’s my short wish list of the news I’d like to hear:

1.    Flash Player will become available on iPhone at so-and-so date. A year ago I’ve been hearing hints and vague promises that this is in the works. A year later – nothing happened.   It’s great that Flash Player is installed on each desktop connected to the Internet, but this doesn’t cut it any longer. Last year Adobe announced the motto “Mobile first” and it’s time to put the money where their mouth is.

2.    LiveCycle Data Services. If Adobe won’t substantially lower the prices, I feel sorry for their salesmen who try to sell LCDS to the enterprises. Five thousand per CPU for the enterprise edition seems to be a reasonable price for the features it provides comparing to free BlazeDS.

3.    Adobe AIR.  It’s time to let it behave as a full fledged desktop development platform. Allow AIR to start other applications, let it access ports on the user’s machine. Stop being a little pregnant.

4.    Flash Catalyst. This product is being developed for more than two years and I still have hard time trying to understan how it’s useful in the enterprise world. Sure enough, you can use it for a quick prototype, but there are other simple tools that can be used for wireframing and prototyping.  I want to hear at least a promise (with a deadline) of something useful for the real world. Of course, I’m talking about round-trip scenarios when a developer can refactor generated code, and later on, the designer should be able to load this code into Flash Catalyst, make some changes and regenerate the code again without messing up developer’s code. I also want to see how an enterprise project can be started without the need for the developers to wait until the designer’s ready with his/her FXG file.

5.    Flash Builder. The gap between releases of Flex Busined 3 and Flash Builder 4 is getting too wide. I understand, that this serious redesign is caused by introduction of Flash Catalist and by new component skinning architecture, but I want to see some real improvements in performance of Flash Builder 4, which won’t be available till late February of 2010.  I also want to see substantially smaller SWF/SWC files generated by Flex compiler. Modularization and framework caching is OK, but not enough. I want more good news from this department.

6.    The startup of the Flash Player and with the minimal Flex objects (i.e. SystemManager) takes too much time. Even with the use of preloaders with light Flash-only pages, I can’t promise my customers that I’ll be able to design a Flex application that will show the first (any) view of their RIA in less than 2 seconds. Too bad.

7.    I’m really interested to see how this new Flash Platform Distribution Services will pick up in the real world. Will its revenues justify this enormous spending on purchasing Omniture?  I want to hear more about it.

I’m sure people who are using Creative Studio 4 see some room for improvement too,  but this is not my cup of tea and I can’t come up with additional items for my wish list that would please the graphic and Web designers.  But if my seven wishes become a reality, I’ll openly admit that Flash platform is a killer.

Yakov Fain