Link Details

Link 73646 thumbnail
User 239194 avatar

By shanonmcquay
via confinedthought.blogspot.com
Published: Apr 02 2008 / 07:31

You may have heard a lot of good stuff about Flex lately, it's a very interesting language after all. In this article I decided to take be a realist and share some of the things I didn't like about working with Adobe Flex.
  • 15
  • 7
  • 2900
  • 1464

Comments

Add your comment
User 125662 avatar

Yakov Fain replied ago:

-1 votes Vote down Vote up Reply

The guy does not know what he's talking about. He's looking at Flex from a wrong perspective.
I'm sure, if I'd decide to evaluate, say Cobol, my review would be of the same quality.

User 239194 avatar

shanonmcquay replied ago:

0 votes Vote down Vote up Reply

Thanks for your feedback, I don't claim to be an expert on the language.
In reflection I think the title and introduction of this post were a poor choice, it is really just supposed to be a list of things I didn't like. It's not a definitive guide to Flex.

In any case if you want to appear intelligent by critising someone elses work, put some substance into it. I'm sure if I decided to comment on the current political climate in China, my comment would be of the same quality.

User 95751 avatar

pt93903 replied ago:

0 votes Vote down Vote up Reply

Hmm looks like a lot of Adobe Flex fanboys trying to mod this one down. IMHO this is a reasonably valid list. Discussion about the pros and cons of various RIA alternatives is always welcome. Voted up.

User 125662 avatar

Yakov Fain replied ago:

0 votes Vote down Vote up Reply

1. IntellijIDEA 7.03 started supporting Flex, but this support is limited. This year the version 8.0 will be released which will compete with Flex Builder.
2. Generics is one of the most confusing Java elements. The lack of generics in AS is a plus
3. No Concurrecny. Flex UI was designed as a single threaded app, with absolute different model of screen refresh if you compare it with Java Swing.
Flash player applocates time slices (frame events) to the clients CPU (screen refresh, AS code, events). The calls to the servers that are originated from
the client define callbacks that will be called when either results of faults are returned from the server. This model is cleaner than messing
with the dispatch thread in Swing. Also, it eliminates "frozen screens".
4. No dependency injection. This is just wrong. Flex is an event driven environment that allow lose coupling design of components.
If interested, I blog on the subj at http://flexblog.faratasystems.com/?p=246
5. No abstract classes. True, but this is no big deal
6. No method overloading. Action Script has a way to define methods with variable argument list (see ...rest args). This allows to emulate
method overloading if need be.
7. No constant in interfaces. True. I can live with that.

I hope this time I gave you enough substance :) No hard feelings.

User 258311 avatar

anatolet replied ago:

0 votes Vote down Vote up Reply

Vectors supporting types are the part of next release - and are billed more of performance/coding help then language enhancement. Most of the Java 5 constructs are not really applicable to ActionScript 3 - for fair comparison you need to use Java 7/8 with dynamic scripting language support - and then the way you speak that language changes.
Compare how enum support evolved in Java over the years - starting with patterns - and you would think of language as of evolving environment. I was coming to Java in '97 from C++ and I thought of it as a very poor language. 10 years made it almost tolerable - but I still miss ability to redefine operators - does it really matter to anyone who never did it in first place?

The code for model view controller you are basing your generics case upon is really bad way to do client side software. Not using generics actually allows for more generic code and better reuse of controls and libraries. That allows smaller libraries to be streamed to the client - you really need to get a feel that sending 50MB of Java runtimes is not an option. It is common to take large Flex application ( >20,000 lines of code) built by Java shops, then re-build them using dynamic coding techniques and more generic code - ending up with less then 25% of the original size.

Multithreading is great thing - when it works - and that still require some skills in almost every environment. If you are up to multithreading, it is not hard to provide solution that instantiate and synchronize multiple Flash VMs

Dependency injections - again - Flex uses and promotes factories, gives you annotations both design time (code generator) and run-time (interpreting annotated type info). Combined with built-in introspection ( ie you have DYNAMIC language) it is much more then following pattern that fights with limitation of the language. With e4x XML/object model) and NATIVE getters and setters and Proxy objects you can build your beloved patterns - but time will be better spent on reading framework code and understanding patterns written natively using language

Every language and framework has it's strong and week points. I would not use Flex for a few things - but there is no comparable portable environment for building RIA at this point. Learning new language is fun - as long as you approach it as learning process.
Regards,
Anatole Tartakovsky

Add your comment


Html tags not supported. Reply is editable for 5 minutes. Use [code lang="java|ruby|sql|css|xml"][/code] to post code snippets.