the combination of https/no-cache/Internet Explorer along with flex is a problem. So it seems patient data would need to be cached to work with IE. If there were a way to explicitly delete that cache on browser exit, all would be well.

> I know practically nothing about JavaScript / EcmaScript.> Question: does it support multithreading? What about> ActionScript?

Neither the Browser's JavaScript interpreters, nor Flash's VM are currently multi-threaded. Thus there is no way to create a new thread. However I've done some pretty crazy stuff with multiple IE windows (what are separate threads). :)

Hmm... I'm not wondering about multiple windows and such, but for genuine multithreading. As a lot of people is talking about multithreading as a mandatory practice to enhance in the next few years to deal with multicore computers, this looks like a serious limit of Flex... :-) I'd just point out that multithreading in Java is rather simple.

Agreed that as multi-core processors become more common the Flash VM will need to support threading in some form. However, even though creating a thread in Java is simple, using threading correctly in GUI applications is very, very difficult. BTW: I still use Java on the back-end where multi-threading is a must.

I agree that multithreading issues with Swing are to be considered, there's all the stuff about the event dispatcher thread. But the point is that is possible and indeed doing the right thing just requires a bit of discipline. Furthermore new JSR and RCP frameworks such as NetBeans (and I believe also Eclipse) simplify some parts of programming with regard to the proper handling of asynchronous events.

In the end I'd say that if we're looking just at a client application that works as a rich, but dumb, interface to a backend service, the lack of multithreading is not an issue and Flex would be adequate. But if I need to create a more complex application with a lot of local computing, today's Flex would not be ok. I imagine that Adobe will be researching to introduce genuine multithreading for Flex in the near future.

> It would> be great if Healthcare applications could use Flex because> the industry really needs well designed user interfaces.Tim, I am building Health Care Applications. And I am using Web Started Swing applications. And thus no data is cached on the client. And the clients love it because it is not a web app. They also love it because it pulls multiple datasources together.

But I am interested in what Flex can do in the way of creating nice UIs quickly. I would like to see a complex application done in it tough before I take the leap.

> Data kept on the client side with Flash/Flex is typically> only kept in the Flash player's memory. As soon as your> browser exits, all of that data is gone so it ought to be> no less secure than an HTML page.

Then it is a lot more secure. HTML is normally cached and a history of "where you went" is kept.

I'm a J2EE developer with 3 years of Struts and 2 years experience developing rich interfaces in Swing. I've been using Flex for 3 months now, and what I've seen so far worries me.

MXML seems adequate for layout, but you have to do a lot of trial and error to get dynamic layouts to work right (like you have to do in Struts). ActionScript, on the other hand, is a hackers language and it's going to lead to a lot of poorly designed, bloated, and difficult to maintain code.

The Flex class libaries seem to have no underlying coherence to them. Can you look at the Flex class libraries and tell me that they are a well designed, well abstracted class library?

I also haven't seen any interest in the Flex community in the use of design patterns and the Flex code I've seen reflects this lack of interest in design. It's easy to create inheritance hierarchies in Flex that are poorly thought out, but I have yet to see adherence to OO principles like programming to interfaces and using delegation rather than inheritance. How many Flex developers even know what these principles are and why they are important?

Bruce, if you're going to work with Adobe to teach people about Flex I hope you can serve as an evangelist for the adoption of solid OO principles and design patterns in Flex applications. I hope ActionScript isn't too much of an obstacle.

Flex Builder is a nice tool that helps catch problems, but there are still lots of problems that don't appear until runtime (think of ClassCastExceptions). Flex builder also requires you to restructure your project so that the Flex code is at the top level. That aspect of Flex Builder needs to be re-architected.

If Java's weakness is its lack of multimedia support and Flash's strength is that it has solved the installation problem then what we really need is a third party library for Flash multimedia support in Java. Then convert the Java bytecodes to a Flash binaries. You get to leverage Java programming knowledge, stricter type dhecking and a language better suited to OO principles rather than a scripting language that encourages hacking.

> On the other hand, though, it's widely believed that every> 1.0 Microsoft puts out is terrible, but they keep working> at it, and everyone fears what'll happen when they hit> stride around 3.0. So why is it that Microsoft gets do> overs and Sun doesn't?

It's not that Sun isn't allowed to have do overs, it's that Sun won't actually perform the do overs.

Has the Classpath become optional?Can you name the file independently of the class now?Have checked exceptions become optional?Has type erasure been erased?

Sun may have good reasons not to change things, but you can't get credit for changes/improvements that you haven't made.

I was interested to know your opinion about just one option you did not (directly) mentioned and which (to me) might be as interesting as Flash, I mean "XUL" (from Mozilla).(http://www.mozilla.org/projects/xul/)It allows easily to make a unique GUI which works both on the web and on the desktop (with a runtime like apollo for Flex), and it is mainly XML, so a well-known standard.I know that you may argue what you already said in your article, that this has the limitations due to html/xml/javascript... and the like, but I would have liked at least that you mention it and say what you think of it.Thank you in advance.

> It's not that Sun isn't allowed to have do overs, it's> that Sun won't actually perform the do overs.> > Has the Classpath become optional?> Can you name the file independently of the class now?> Have checked exceptions become optional?> Has type erasure been erased?> > Sun may have good reasons not to change things, but you> can't get credit for changes/improvements that you haven't> made.

First, the whole examples are meaningless, since we're talking about Swing and not the Java language. While Swing did really have problems in its early life, the Java language works very well. For instance, a lot of people do appreciate checked exceptions and so on. Coming back in topic, for what concerns Swing Sun has _already_ performed some do over, and in fact Swing is today perfectly usable in areas, such as native l&f rendering and performance. There's the installability issue - but I'd like to _really_ know if today installing a JRE via Java Web Start is really harder than installing a Flash/Flex runtime...

> First, the whole examples are meaningless, since we're> talking about Swing and not the Java language.

Sorry, but you're wrong. I was responding to a post that claimed that MS get's to do "do-overs", but Sun doesn't. Swing had nothing to do with the comparison.

While Swing> did really have problems in its early life, the Java> language works very well. For instance, a lot of people do> appreciate checked exceptions and so on.

I was just illustrating Sun's reluctance to change some of their more dubious decisions even when there's a lot of community interest in doing so. I'd be surprised to find many Java programmers who think Sun made the best decisions on all the items on my list.

Coming back in> topic, for what concerns Swing Sun has _already_ performed> some do over, and in fact Swing is today perfectly usable> in areas, such as native l&f rendering and performance.

OK, let's talk about Swing then. Just about everything I've read about multi-threaded programming says that it's often useful, but that you should avoid it if it really isn't necessary. The design of Swing forces you into multi-threading even when there's really no good reason for it. Has this been changed?

The point is that although Sun does adds functionality to Java and works to improve performance, it really doesn't go back and rework the fundamentals even when there are flaws.

Again, they may have their reasons, but they aren't being treated more harshly than any other vendor.

What would be great is to have the Swing API on top of a Flash Runtime, with its components and layout managers.Actually, all we have to do is code a Graphics object using the Flash ActionScript API instead of Java2D...a kind of ActionScript Swing, we could call it ASwing.