Matt Raible: Comparing JVM Web Frameworks

Matt Raible is one of those guys in the Java community who I’ve always respected. He has been around for a long time and contributed a ton to making the ecosystem better. He recently posted a few blogs about “Comparing JVM Web Frameworks”:

I wanted to respond to Matt’s request to provide feedback about his presentation. Due to the length of my response I decided to post it on my blog instead of in the comments on his. So here goes…

Matt says not to believe evangelists, like myself. But he does say to “believe developers that are experienced with the framework and have used it in production”. Hmmm… I’m both. I was a developer who successfully built a production Flex based customer service portal on Oracle Portal and Oracle CRM. Since then I was hired as an evangelist to help companies like Salesforce, Intuit, Oracle, BEA and many others successfully build production Flex applications. I also still get to build production applications on Flex like my Census RIA Benchmark, the webmail client, and numerous others. So if you think my view is untrustworthy that’s ok, there are plenty of others who hold the same views.

First lets address Matt’s Pros of Flex:

Produces Flash UI
Funded by Adobe
Has a “poster child” in Picnik

“Produces Flash UI” – Lets dive into a few reasons why that is a pro:
1) Consistent across browsers and operating systems
2) Native vector graphic support
3) Native video support
4) Performance of a JIT Compiler Enabled VM

“Funded by Adobe” – There are a few others that I’d probably highlight before this one, like:
1) Mature UI framework for RIAs
2) Back-end agnostic (Anything that can produce SOAP, RESTful, JSON, AMF, whatever)
3) Strong community momentum (now over 8000 members of the flexcoders Yahoo Group, over 600 Flex blogs aggregated on MXNA, over 50 worldwide Flex User Groups)

“Has a ‘poster child’ in Picnik” – Picnik is great but I’d probably say something like “Has 130 ‘poster children’ –“. And that doesn’t include the thousands of non-public facing Flex apps.

Now lets address the cons:

Flash is difficult to integration test
508 Compliance
Adobe Funded open source project

“Flash is difficult to integration test” – Not really. Check out:

“508 Compliance” – Works great! Check out:

“Adobe Funded open source project” – I’m not sure how this is a con.

I’d also like to respond to another comment Matt makes:

It seems like learning Flex is going to be better for your career, but it’s likely useless without the Flex Builder – which is not open source.

You can use the free and open source Flex SDK with any IDE you want. Until recently when Flex Builder was released for Linux my primary IDE for Flex was vim. That’s over two years of Flex development without Flex Builder. It’s certainly possible and many people are using only the free Flex SDK to build their Flex applications. They are building RIAs by only using open source Flex tools and not paying Adobe a dime.

Now we could debate these pros and cons all day. But really it depends on what you are building. What I find most interesting is how these frameworks relate to building Rich Internet Applications. That helps narrow it down a bit since very content-centric applications differ greatly from RIAs. But what is a RIA? I’ve taken a stab at defining RIA.

Based on those characteristics I can tell you more definitively how Flex compares as an RIA framework.

Connected – RIAs blur the line between connected and disconnected. Flex provides the programming model for building applications that work as desktop and web applications. In both cases there are a variety of ways to persist data locally and interact with other offline applications.

Alive – The success of the iPhone shows us that users want software that feels more alive – more like the natural world. With capabilities like vector graphics, bitmap manipulation, drop shadows, translucency, etc all just baked into Flex, Flash Player, and AIR – creating interfaces that feel alive is natural and simple.

Interactive – We all interact with things and others in many different ways – visually, audibly, with touch, and, etc. Flex natively supports video playback, web cam integration, and audio playback and recording. In a recent application, I built Ribbit phone calling right into the application. And it only took three lines of code!

Responsive – It’s strange if I ask someone a question and they don’t respond in less than a second. However most web applications force us to wait around. My Census RIA Benchmark application was created to show the kind of responsiveness you can expect from Flex and web applications.

Overall what is most exciting to me about Flex, Flash Player, and AIR is how they really enable us to build better software experiences – software experiences that function and look more like the natural world.

  • Thanks for the feedback James. If my cons are not really cons – what are the cons for Flex. There /has/ to be some disadvantages. If there are none, no one will believe it. ;-)

  • Thanks Matt. Of course there are some cons to using Flex. Flex’s cons become more visible the more content centric a project is – as opposed to being interaction / application centric. For instance, in some situations having to do extra work to have a search engine indexable version of the site is a con. In other scenarios that doesn’t matter. Also Flash doesn’t render HTML content well (only 8 tags or so are supported). So integrating Flex with “legacy” content and applications can be challenging. You can always resort to pop-up windows but that diminishes the user experience. Printing is an interesting one. Usually Flex applications don’t print well by default. You can have deep control over how something gets printed but it can require extra work to create a good printable version of a “page”. Buzzword (built with Flex and now in public beta) has some deep printing and pagination customizations but they spent a lot of time making that stuff work right. Flex does provide components like the PrintableDataGrid which makes the printing problem easier by paginating a DataGrid across multiple pages, etc. PDF generation is another way of getting around this problem and there are lots of interesting ways to actually generate a PDF in a Flex app depending on what you need.

    Interestingly many of these cons are common to other Ajax frameworks as well. SEO, Printing, etc.

    With Adobe AIR one of the commonly cited limitations is the lack of native extensibility. For instance you can’t execute another process from AIR or talk to DLLs. There is not JNI-like support. There is also not usb device support in AIR today.

    I hope that helps. I should have included this in the original blog but got sleepy. You could also peruse the Flex bug DB to find more cons:

  • pete

    Our whole team(50+ of us) have the same feeling as Matt does. Adobe shroud’s themself in the term open source. I guess it’s your job as an evangelist to speak in double entendres but for ex. every one one of your links for automated testing is integrated w/ Mercury Pro Runner. For F*cksakes…talk about a NEGATIVE. And you can’t do any serious enterprise dev w/out flex builder.

    If you want the java community wholesale, you’ll have to open everything. else you’ll have an adoption rate like websphere or weblogic. you should certainly know better being a java developer. do you think interface21 would have had the adoption rate they did were they charging?

  • Hi Pete,

    Thanks for the feedback. We announced that the Flex SDK is being open sourced. It’s a process. When Flex 3 ships it will be open source. It takes time like it did with the Java JDK.

    As far as automated testing, what are you currently using? There are quite a few other projects going on to support the other tools.

    I’m curious if you have tried to do enterprise Flex development without FB and had problems? I did this for years and using just the free Flex SDK and vim was fine – on an enterprise project. What tools do you use with your web framework of choice?



  • ebc

    >> And you can’t do any serious enterprise dev w/out flex builder.

    I’m with James, Pete. Could you be more specific? What specifically have you found that you need FlexBuilder for in order to build serious enterprise applications? I think I’ve worked on some “serious enterprise” applications without FlexBuilder and have been just fine. What would you be missing?

  • I’ve never used FlexBuilder. I’ve been using the Flex 2 SDK since it’s launch.

  • pete

    Hmm. well how many large enterprises do you see doing .net development w/ just the sdk? or j2ee development w/ just the sdk?

    James – if you honestly believe that you don’t need FB, then you are not going after enterprises + you never worked for one.

    As a matter of fact I have done quite a bit of development, back in java 1.1 days w/ just the sdk. Am I more productive in Eclipse by a large factor? Would I be willing to write a smallish 10k line business app using text editors? Maybe. Should my manager be fired if he allows me to do this? YES.

  • ebc

    Hey Pete,
    So your argument is that since you need an IDE for .NET and J2EE (it’s JEE now, BTW), then you need one for Flex, too? So is your logic that you need an IDE for anything with an SDK? Hmm indeed. I use Eclipse for Java development, too. I can fly in it. But I still don’t think you need FlexBuilder to be equally as efficient developing Flex apps. Flex development simply isn’t as complicated as Java development. Different tools for different problems.

    Thanks for waving away a call for specifics regarding the features you need in FlexBuilder with the sword of enterprise. I really learned a lot.

  • Pingback: » Flex and Java presentation framework discussionsJeff Potts on ECM, portals, search, collaboration, and a bunch of personal stuff()

  • pete

    You admit to being able to fly in Eclipse, but you say that Flex is an exception somehow. I’m sorry I don’t have the time to laundry list all the reasons why…and I’m sorry you can’t imply common sense.

    How about this…why doesn’t Adobe keep wiki esque page of development teams that are using the Flex SDK only? And there experiences w/ it? Should be great for a laugh.

    I think everyone has me pinged as a flex detractor but I think Flex is great. builds nice output. But tools blow. And Adobe is kidding itself if it wants to get widespread use from just command line tools.

  • Great post!

    With respect to automated testing, I also see as a lot harder than html/js based web frameworks.

    For once, the ones using the automation package needs a license to FDS (or is it this Mercury stuff?). Then there is flexunit. But hey, a lot of them problem is with the type of the application. If I want to run an integration build using cruisecontrol or ant on a headless linux box, I will have some trouble running flexunit tests. Won’t I?

    It would be nice if Flex3 had had some more focus on testability baked into the framework. It really would. Flex really shines when you are building whole, complete applications on the net using it. But that means possibly a lot of business logic in AS3 code. This NEEDS to be EASILY testable. It just HAS to be. Trust me :-)

    Anyways, great post.

  • The requirement for an FDS license to do the Mercury testing has changed with Flex 3. Now I believe you will just need a Flex Builder 3 Professional license.


  • Okay, but still, I would need a license. My opinion is, that such stuff should be an integral part of the SDK. Look at spring (I know, it is a completely different technology), it comes with a full test-api, which unittest classes to inherit, that makes it especially easy to test springbased applications automatically. I think, that spring would gain a lot of respect in the open source community, if such stuff became easy and part of the SDK.

  • Oups! Correction: Of course, I think that *Flex* would gain the respect. Not spring. It already has it :)

  • Eric P

    Re: Printing – What do you consider to be the best ways to generate PDF from Flex or Air?

  • Hi Eric,

    It depends if you want to do it client-side or server-side. If client-side check out:
    If server-side there are many different solutions. Live Cycle Data Services is one:

    I hope that helps.


  • Eric P

    Thanks James – I’ll check out alivepdf. I want to do it client side.

  • Bhaskar Maddala

    I for one am certainly not in a position to judge the pros and cons of Flex/Flash based technologies, but I did try Flex about a year back. I needed something to get started on quickly, understand and evaluate and determine if I could really use it with my limited skill sets (first foray into the flex world). It is safe to say that I did not find the tools available to me that would allow me to play with the technology a first step to getting started. Without the tools the technology is for technology developers not for the technology users. Suffice to say I have since not visited Flex/Flash land, I guess it might be worth looking at once more.

  • Nathan C

    I got stuck at the pros. Not being familiar with Picnik, I went to the linked Showcase page to find it. After a pretty long load time, I was presented with a pretty list of apps in a statically sized box that could not be scrolled with my mouse’s scrollwheel. I could not search for Picnik using my browser’s search functionality and the app provided none. I gave up looking for Picnik and thought I would try another app, which I attempted to open in a new tab by middle-clicking or right-clicking to bring up the familiar browser menu. No such luck. Flash is a frustrating technology.

  • Hi Nathan,

    I’ll send your feedback on to the team who built the showcase. You can check out Picnik at:


  • Rathu

    Hi James,
    I just read all your post, I feel happy..
    we have been working with legacy enterprise application built on websphere Portal(jsr168) and portlets.
    now are planning to intigrate felx into that portlets for the data entry forms. we are just working on proof of concept and we are having integration issues and session maintenance issues. we are using Ajax bridge…. Data Services..
    what do you suggest james.. looking forward your suggestion

  • Hi Rathu,

    Feel free to email me so we can discuss the details of your problem. jaward <at> adobe <dot> com


  • Though I’m very excited by the opportunities Flex provides to build a truly RIA, I’ve become concerned with the limited amount of detailed information or samples that describe implementing Flex application back-ends in Java without using FDS. I understand that FDS is one of Adobe’s few opportunities to make $$ from Flex, but IMO the fees for it are very very high. The 30-minute test drive, for example, is the type of sample I’d like to see but provided without a requirement on FDS. Its a little disigenuous to advertise Flex as becoming open and not requiring FDS to build many types of enterprise applications, but then to not provide a decent samples or guidance on how to do this. Or have I been Googling in the wrong places ;). Given the huge amount of collateral that James, Bruce, Christophe, and other Flex experts have provided it would be nice to see something of substance describing the non-FDS scenario. Any good pointers for to samples or tutorials for this?

  • You might want to check out:

    Also check back here in a week or so for more information about Flex & Java. I’m working on a blog that will be of interest to you.


  • Sunil Guttula

    We are using Flex to build an enterprise product and it has worked well. There are not too many good options for connecting Flex with a backend java server. The open source options available in May 2007 (GraniteDS) did not really work well, lot of configuration and no support for custom classloaders on server side. BlazeDS from Adobe and Hessian (from Caucho) are 2 more options now and graniteds may have matured more. Hessian is a clean one, not know too much about BlazedS. We have developed a bridge from Flex to Java (needs Servlet container) using xml as the data format and is working quite well.

  • Steven Libonati

    @Sunil Guttula
    I know this is an old post, but I would have thought you were aware of Flex + BlazeDS + SpringFactory + Spring . This is an amazingly powerful combination. What you get is a portable .war or .ear that is deployable in any JEE server.

  • @Steven Libonati

    Sure. I suppose you have used this combination in production environment and got some numbers (response times and resource usage, cpu and memory) to share. After my last post we are using BlazeDS for a chat application and I am yet to become comfortable to recommend it to the world. So if you do have numbers please share them. The numbers I am working with in production are: 32 MB tomcat process, 20ms avg server response time and <10% CPU usage on a standard Amazon EC2 instance. This supports about 600 users on 2 applications (in the same tomcat) – roughly 60 of them are online at any time.