URL:http://www.infoq.com/news/2007/12/top-10-flex-misconceptions
At QCon, Adobe's
James Ward
shared with InfoQ.com the top Adobe Flex misconceptions that he
encounters in his travels evangelizing the Flex application framework.
- Users Need to Install Something New to Run Flex Applications.
Ward, exclusive to InfoQ.com, discusses the Flash adoption rates and Flex programming model:
Flash Player 9 is required for Flex 2 & Flex 3. The Flash Player 9
runtime is currently installed on 94% of the world's computers: http://www.adobe.com/products/player_census/flashplayer/version_penetration.html
Flex 2 and Flex 3 applications execute in the Flash Player 9. Flex
applications are built on top of the native Flash Player APIs like
vector graphics, bitmap manipulation, and networking (which are based
on the browser networking stack). The Flex framework adds reusable
components like date pickers, data grids, charts, etc. Compiling a Flex
application results in a SWF file which is the binary byte code format
for the Flash Player. Contained in the SWF file is the byte code for
the Flex framework code and a project's custom code. The Flex compiler
optimizes the byte code so that only classes which are used go into the
SWF file.
For desktop applications, Adobe is aiming to make
their new desktop runtime, dubbed Adobe AIR, as ubiquitous as the web
runtime. The 1.0 release of Adobe AIR will be available in the
beginning of 2008. Currently, AIR is in beta release from
labs.adobe.com. Many companies are already building production
applications on AIR. One example, can be seen with eBay's application eBay Desktop.
- Flash Player is 100% Proprietary.
Ward continued on this item for InfoQ.com:
The core of Flash Player is the Tamarin Virtual Machine, which is an
open source project under Mozilla. While the SWF file format is not
fully open, it is documented by the community on osflash.org. There are
numerous open source products that read and write SWF files. The Flash
Player's product direction has traditionally been heavily influenced by
the community and their needs. The core language for Flash Player is an
implementation of ECMAScript 262, which is the specification for
JavaScript. Flex also uses CSS for styling of components /
applications. Adobe AIR uses web standards as the basis for desktop
applications as well as Open Source technologies like Tamarin, Webkit,
and SQLite.
- Flash is for Designers, Video, and Annoyances.
In Ward’s July, 2007 blog, “How I Overcame My Fear of Flash,” he discussed this point:
Indisputably, the power of Flash has been abused. Pop-ups, pop-overs,
skip intros and annoying ads run rampant across our screens. I've heard
it said that one should never judge a religion by its abuse. The same
adage applies to technology. Flash shouldn't be avoided just because
people use it for annoying things. After all, e-mail isn't avoided just
because spammers happen to abuse it.
Ward elaborated on the topic for InfoQ.com:
Traditionally Flash content was built with the timeline based tool for
designers. Flex is the developer toolset for building Flash based
content / applications. Designers and developers can work together by
sharing assets between the two tools. Flex adds a comprehensive
component base:
http://www.adobe.com/go/flex_explorer_app
http://www.adobe.com/cfusion/exchange/index.cfm?event=productHome&exc=15&loc=en_us
- Flex is Not for Enterprise / Business Applications.
Over the last few weeks, Ward published a seven part blog series on a number of new Oracle applications implemented in Adobe Flex.
The applications, which were announced at the recent Oracle OpenWorld,
ranged from sales tools, to database management, and business
intelligence.
In addition to Oracle’s usage of Flex, InfoQ.com published a piece recapping a number of groups using Flex for enterprise applications.
Ward also points out to InfoQ.com, that there are numerous examples of
enterprise applications being developed with Adobe Flex, including work
at: Workday, SAP, Salesforce, and Business Objects.
- Flex is Expensive.
Ward detailed a number of things Adobe has done to address the cost concerns:
Flex is a free, and soon to be open sourced, developer toolkit for
building Rich Internet Applications for the web and the desktop. This
free SDK includes everything a developer needs to build RIAs that work
the same on any browser or operating system. Part of the free Flex SDK
is an extensive set of components which are extensible, skinable, and
accessible. You can see many of these components in the Flex Component
Explorer: http://www.adobe.com/devnet/flex/samples/code_explorer/
Flex Builder is an optional plugin for Eclipse which makes developing
applications with the free Flex SDK more efficient. It includes
features like integrated debugging, design view, and code completion.
The Flex Builder pricing has changed in quite a few ways recently. Flex
Builder is now free for Students and Faculty. The price for the vanilla
Flex Builder, without the charting components, has been reduced to $249
to better balance the tiered pricing for Flex Builder.
There
are a number of options for building backend infrastructure for Flex
Applications. To take advantage of the high performance AMF data
transfer protocol, there are official Adobe products like LiveCycle
Data Services, as well as numerous open source projects like Granite
Data Services. Using AMF removes the unnecessary steps of converting
data to text (SOAP, RESTful, etc), transferring it, and then converting
it back to data. AMF also allows type information to be preserved
across the wire.
To see a comparison of AMF to other text
based serialization technologies, see James Ward's Census RIA Benchmark
application: http://www.jamesward.org/census.
- Flex Applications Require a Special Server.
Once again, Ward speaking with InfoQ.com:
Flex applications can run on top of any web server, application server,
and database server. Flex applications are much more like client-server
applications. Since the logic is running on the client inside the Flash
Player, you need some way of communicating with the server. There are
many different options for how you connect Flex to your infrastructure.
Without any special libraries, you can expose your back-end data and
services as RESTful, XML, or SOAP and easily consume that data in your
Flex application. If you choose to use the AMF binary serialization
protocol, you may need to add some additional libraries into your web
application. AMF is just another serialization technology, like XML or
JSON, so it can be one of the various methods you use to communicate to
your back-end SOA.
- Flex is Hard to Learn.
Leftie Friele, from the InfoQ.com community, posted a comment on the InfoQ.com piece “Who is Using Flex?”, detailing his company’s experience in learning Flex: Our startup company, Ezmo, have used Flex since the start and we're extremely happy with the framework.
Without any prior knowledge of Flex/Flash, we built our application in
less than two weeks. The integration between Java and Flex is super
simple, and getting started with Flex is just a walk in the park.
The tool support is very good too with Flex Builder. You get the
familiar surroundings of Eclipse and you are off and running without
many problems. The one thing that is missing is better tools for
continuous integration and better plugins into Maven for building Flex
applications.
For those new to Flex, Ward has a Screencast showing a Flex application being built to help get you started. There are also numerous other articles about using Flex and Java in the Adobe Developer Connection.
- With Flex, I Will Need to Rebuild My Entire Application.
In January, Bruce Eckel published an article titled, “Hybridizing Java.”
He argues that the Java community should continue using the good parts
of Java, but should use other technologies where Java is weak. His
primary focus in the article is using Adobe Flex for user interfaces,
instead of the traditional Java options (Swing, JSF, etc…).
Ward elaborates on this concept:
Since Flex applications are just the UI piece of an application the
back-end usually stays the same. If your back-end was built following
the SOA pattern then it is usually very easy to expose those services
out to a new Flex UI. This preserves your existing business logic
whether it is in EJBs, Spring services, POJOs, etc.
- Flex Breaks Normal Browser Functionality, Like the Back Button.
Ward’s blog discusses the back button:
In Flex, back button support is built in and easily customizable so
this was never an issue. Flex also provides an easy way to do hashmark
urls (or named anchors), so the url changes as application state
changes. Another Web 1.0 integration problem solved.
Ward adds more details for InfoQ.com:
Flex 3 provides a simple way for applications to store state parameters
in a named anchor and correctly restore state based on those parameters
when the URL is requested. More information about this feature can be
found in the Flex 3 Feature Introductions Deep Linking documentation.
Accessibility has always been very important for Flex applications.
Since the Flash Player works with Jaws and other accessibility
technologies, the capability for adding accessibility to Flash based
applications is there. The Flex framework builds accessibility into the
core framework. There are many different pieces of accessibility
depending on what impairments and disabilities your application needs
to support. You can find out more about the accessibility features of
Flex in the Developer's Guide.
- I Can Do Everything Flex Does With Ajax.
Ward explains: RIA with Flex and Ajax is not either/or. Sites like Google Finance
show how you can use Flex and Ajax together. Ajax is very good for
content-centric applications, while Flex is very good for interactive,
media, and data-centric applications. If your application is somewhere
in between the two sides of that spectrum, then you can use the Flex
Ajax Bridge to combine the two technologies. In Flex 3, the Flex Ajax
Bridge is integrated directly into the SDK. If you are using Flex 2,
you will need to download the Flex Ajax Bridge separately.
Also, from the InfoQ.com community, Michael Marth commented on why his group chose Flex: We use Flex 2 for our soon-to-launch online dating site viibee.com
The reason: Flex enabled us to create a user experience far beyond
anything that we could have done with a comparable effort in
Javascript/Ajax.
For those of you in the InfoQ.com community, are these misconceptions
you have held about the Adobe Flex framework? Are there additional
barriers that Adobe has yet to address, which are keeping you from
using the Flex application framework?