Victor Rasputnis commented on the 11 May 2006
Vitaliy, Thank you for your feedback. Let me start with one "platform" statement: Flex is the application server solution with service oriented client layer built on top of the Flash Player. Now, I will jump to the point where you started agreeing with us and from there will walk through the list of concerns all the way back. <<4. Flash has no threads, no thread management.>> I find this rather hard to justify as it is. Multithreading capabilities are implemented in browsers as well as in the Flash Player. You may question, however the level at which these capabilities are available to a programmer. After all, the beauty of XMLHTTPRequest is that it is asynchronous, isn't it? Otherwise we'd be saying JAX instead of AJAX :). Similarly, the same asynchrony has been available with Flash Remoting since 2002 or 2003, if I am not mistaken. Here is the link just for the reference [visit link] Let's take your use case - "some calculation". Must be something CPU worthy, I guess. The question is where does it belong in the distributed system, regardless of the Swing/Flash debate. Perhaps on the server, closer to datasources? Then, using remoting capability of Flex/Flash, I would suggest a POJO running not only in a separate thread, but also on a separate machine, across the wire! Now, just out of curiousity, let's try to play without the server, with Flash alone. Here is another take: can you have another "servant" application run by the Flash Player within the same hosting HTML page? Can you interop via LocalConnection object to invoke methods, pass parameters - all with complete marshalling of complex datatypes to native objects? Wouldn't it be hapenning in the different thread? So, perhaps we can come to a more accurate statement: There is no pre-emptive multithreading within single Flash VM. This might be indeed an issue if we had to take distributed computing out of the picture. But we don't have to, do we? <<3. There are no skins for different components...>> This one is simpler. If you are, in fact, talking about Flex, which has a totally different code base from Flash controls, the statement is outright ungrounded. Flex controls support pretty advance skinning, although my fascination to the subject went south after I skinned a couple of controls. But then there goes another part <... Adobe .. main interest is in popularizing visual effects..> Well, this is one very popular illusion, I might say. How about this answer: Adobe Flex offers developers a JMS adapter that enables to create a producer or consumer with one line of XML code? How _visual_ is that? <<2. Flash components are closed source...>> I have a secret to tell. Flex comes with full sources. Look at them, step them through, do whatever you please. Just do not tell Adobe I told you :). Seriously, are we sure we are talking about the same products here? Our article was about FLEX. <<1. Flash components are badly written ...>> Vitaliy, as a person with many years of software vendor experience I can only tell: Thou shall not judge... If indeed we are both talking about Flex, I find their components extremely well done. Not that I doubt for a split second that you can find a handful of cracks in each of them. But, being an expert, you naturally see how to avoid a problem - in another split second, don't you? Also, now that you have the full source code of the controls (you do, I kid you not), what stops you from overriding any given method and create your own Accordion or whatever? Flex community and Flex engineers are very friendly people which will gladly accept and appreciate any good ideas you might want to offer. And as to your references to problems with Flash Player itself, here is another news: Flash Player 9 (Flex 2 comes with it) is a complete reengineering of the Flash engine, including API. New Player has "dual mode", i.e. it can play old stuff as well. <<0. There are number of Java XUL implementations...>> Since apparentlly this is a response to MXML-based code generation I would offer only one comment: Flex is an Enterprise Class Solution. Most likely we did not make all points right in the article and, frankly, we could not. It particular, we have not explained the power of data binding. But even if we had, Vitaliy, you really owe it to yourself to try it. I think you will love it. Very Friendly, Victor Rasputnis |