I am impressed by some of the real-time (RT) applications that are developed using FLEX. Does anyone recommend a book or any other resource to learn FLEX? Is it right that in order to do RT FLEX you need a cold-fusion server? Finally, is there an alternative to FLEX for building dynamic web RT data applications?
AJAX, Flex, Silverlight. As far as pushing data on Flex, there's BlazeDS and Adobe LiveCycle data services. I don't know what's going on in the Silverlight domain.
Has anyone ever wondered if technology departments marketers were lawyers in a past life? Look at the description of BlazeDS http://opensource.adobe.com/wiki/display/blazeds/BlazeDS/ Now look at the description of LiveCycle: http://www.adobe.com/products/livecycle/ Seriously, these people must be anal as hell. Unless they obfuscate, they cannot justify their jobs. Is that it? Or maybe you can charge more for it if you make it sound complicated.
I assume you're talking about Adobe Flex? I also assume you aren't talking about "real" real-time because as far as I know that is not possible with the Actionscript VM. No, you do not need a ColdFusion server. Flex can talk to just about any server-side technology either natively with the Flex framework libraries or through third-party Actionscript libraries. ColdFusion should have died many years ago (incidentally, the book review section of this website is written in ColdFusion) Flex is: Actionscript 3 and MXML. It's analagous to Silverlight: your favorite .Net language and XAML In the long-run I feel that Silverlight will win and Flex will remain niche. Actionscript 3 does not have any language constructs for multi-threading. That might put you off to begin with. If you are familiar with Javascript and/or Java then you already know most of Actionscript 3. The main resources for learning Flex is the Adobe website. Actionscript started out as a loosely typed language and then became a dialect of ECMAScript and progressed to being stronger typed and more Java-like. The Java equivalent from Sun, JavaFX which has all but flopped, ironically went in the opposite direction. For books, the usual O'Reilly are your best bets: Actionscript 3 Cookbook, Flex 3 Cookbook etc. I read one of the AdvancED Flex books and it was extremely poor. Developing Flex applications will take you twice as long (if not longer) compared to developing Python or Ruby applications. The compiler is very slow and the framework library is buggy and has many holes. The UI widgets are very limted compared to something like Wx etc. The native event mechanisms are in no way suitable for dealing with large amounts of market data - you have to re-invent your own. Having said that, I haven't really developed with Flex 4 yet and there are a number of key things that have been improved. I'd like to know which real-time Flex applications you have seen? I've developed some dashboard software for my ATS-wannabe in Flex. I'm also aware of Nasdaq's Market Replay and OptionXpress's platform Xtend2 both built using Flex technology - more specifically Adobe AIR - the desktop runtime for Flex applications. Then there is Lab49 who develop this kind of software: http://www.lab49.com/
Yep, those are the official Adobe products. There are third-party products too, such as the open source: http://www.graniteds.org
Thanks for the detailed response. Yeah, I am talking about Adobe FLEX. Cool. CF is expensive. I want to try to stay Open Source as much as possible. What is the right way to do realtime data in Silverlight? Is it just roll your own? I need to be able to pass a decent amount of data between client and server, but it is not really realtime, but the client shouldn't care imo. That may be a problem. Not sure yet... Ok. I will check that out. Sorry. Went in a different direction than what? Ok. Am I hearing that I should be using Ruby and or Python to do this instead of Java + FLEX? http://www.livevol.com/free/ I didn't even know about those. Worth checking them out too. Cool! Thanks again.
Not necessarily. Just giving a heads-up that developing non-trivial Flex applications is not fast. If your application has to live in a browser and you want RIA technology then your main choices are 1) Flex 2) Silverlight 3) JavaFX......a possible 4) AJAX - though I put the last in a slightly different category. Out of the first 3, Flex is the most mature. For Silverlight, there's a large pool of developers that can pick it up almost straight away, it's the familiar .NET and it's getting better with each version. JavaFX hasn't really taken off at all and probably won't and AJAX is for masochists (IMO) for anything but trivial use cases. If your application doesn't have to live in a browser then there are possibly better options. If you're going with Flex, I'd recommend using Ruby/Rake for building (when you need to build outside of an IDE) rather than Ant - there are Ruby Gems for this at Sprouts: www.projectsprouts.org. For unit testing, there are a number to choose from. I've used Adobe's FlexUnit, as3unit and fluint. For UI testing, have a look at FlexMonkey: http://code.google.com/p/flexmonkey/ If you're dealing with large amounts of market data, you'll probably first want to look at replacing the native event mechanisms.
Very good analysis. I would add some bits - I had a lot of experience with Flash in the early days when it was good for web animations. Actionscript is Flash related. Flash was created for pretty web animations. It was fast in the early days. Then got bloated. After Adobe acquired it - got more bloated. Also under Adobe it got buggy - it is why for example Apple do not allows it on their platform. Developing tools are timeline oriented - good for animations, but not very suitable for anything else. There is not comparable debugger as in Visual Studio. There is not compelling reason to use this aging web technology for desktop applications.
Oh, forgot to answer this question. I haven't done push with Silverlight but there was a project I came across a few months back that mandated using Lightstreamer for pushing to the client: http://www.lightstreamer.com/ It isn't open source though and I didn't work on the project in the end. The "right" way might be to use WCF as per this blog series: http://petermcg.wordpress.com/2008/11/19/silverlight-polling-duplex-part-4-wpf-client/ Then there is the COMET server approach than can potentially be used by Flex, Silverlight and AJAX. Free but not open source AFAIK: http://www.freeliberator.com/