BlazeBench: Why you want AMF and BlazeDS

Update: I’ve merged BlazeBench and Census into a single demo. There is a known bug in in Firefox 3 due to a change in IFrame handling. To start the test when using FF3 you need to click on the results panel.

Today Adobe released BlazeDS, an open source Java implementation of AMF based remoting and messaging. This is huge news for the Flex, Flash, Adobe AIR and Java communities! I can’t wait to break the news with Bruce Eckel in a few hours at the JavaPolis day 2 Keynote! Check out the press release. And go download the bits. And take a look at my new BlazeBench application which shows why you want AMF and BlazeDS. Right-click on the application to find the source code on SourceForge. I’ll roll out a binary and source build in the next week or so. We have also officially published the AMF spec!

[Please note that my server is probably going pretty taxed for the next few days so the results you see might vary from normal results. When I publish the binary version of this app you will be able to run it locally and see more accurate results. Notice how much time it's taking my server to create those large data packets and gzip them? One more reason that AMF is great! Super fast without the need for gzip!]

blazebench.jpg

This entry was posted in BlazeDS, Flex, Java. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

29 Comments

  1. Jon Ro
    Posted December 12, 2007 at 11:51 pm | Permalink

    What took so long? No more excuses for not using Flex…

  2. Jon Rose
    Posted December 12, 2007 at 11:52 pm | Permalink

    What took so long? No more excuses for not using Flex.

  3. Ivan
    Posted December 13, 2007 at 1:35 am | Permalink

    hi

    Great test! why with less data (500 Rows) AMF is not so go ? in this case for chat app that exchange little data there is no a big difference between xml , json and amf.

    what do you think about ?

  4. Posted December 13, 2007 at 2:21 am | Permalink

    About BlazeBench application, IE7 hunged up…

  5. Posted December 13, 2007 at 3:49 am | Permalink

    Now that’s really good news.
    We are currently using Java/LCDS and Flex/Air for our soon to be released Invoicing application called Qoove. We mainly decided to use LCDS because of its Data Pushing technology (we previously used AMF PHP), though we had concerns about the pricing as soon as we have to scale.

    Hopefully BlazeDS can solve that problem for us (I still need to look at the exact features and restrictions).

    Keep on the good work Adobe guys!
    Alex

  6. Pierre-Yves Saumont
    Posted December 13, 2007 at 8:33 am | Permalink

    Seems good. Maybe I could use it instead of Hessian. But for this, It would need to be at least as much practical to use as Hessian a in Spring environment, ie I would need it to be supported by Spring! Using Hessian (or any other protocol) to remote a service in Spring is only one line of configuration. Using Hessian in a flex client application is one line of code. This is much more significant than any performance increase!

  7. ebc
    Posted December 13, 2007 at 10:54 am | Permalink

    Nice move. Pretty damn sweet.

  8. Raj
    Posted December 13, 2007 at 11:25 am | Permalink

    How is BlazeDS different from LiveCycle Data Services? Many of the capabilities seem similar.

  9. Brian Ehmann
    Posted December 13, 2007 at 1:34 pm | Permalink

    Wow, this is very, VERY, exciting.

  10. Posted December 13, 2007 at 5:32 pm | Permalink

    It was an honour for me to share the stage with you for such an kick ass anouncement!
    Hope you`ll have a save trip home.
    Benz

  11. Posted December 15, 2007 at 12:25 am | Permalink

    I’ve gotta say that the use of json.js to “deserialize” the JSON is somewhat misleading. Real-world users almost always just go for eval(“(“+str+”)”) instead of the regex madness in that file. Additionally, the string manipulation you’re using in ajax_json.html is perhaps the slowest possible way it could be done (at least for JScript). Event handlers would also probably be set on the tbody our outside table, mapping back by id or event target to pass in the row to the handler. The tbody is also not explicitly created, slowing down table render. Lastly, column widths aren’t specified in the table, table-rendering: fixed; isn’t used, slowing down the browser render as the layout algorithm walks the size sinks iteratively in order to come up with a reasonable width-in, height-out solution.

    I don’t want to say it’s a rigged test, but it’s certainly not real-world and the code wouldn’t pass muster here at SitePen.

    Regards

  12. Xavi Colomer
    Posted December 15, 2007 at 12:31 pm | Permalink

    Hi James,

    I’m trying to develop a mini ERP and I’m stacked with the database communication. I have the database in a local server and is a SQL Server 2005. What do you recommend to build professional database communication with air projects? Must I “convert” to Java? (Now I’m working with c#)

    Point me to the right direction please

  13. Kazuya Komon
    Posted December 17, 2007 at 10:28 pm | Permalink

    Hi James,
    It’s cool information! thanx!!
    Do you have the bench data which show some information about the performance of BlazeDS’s data publising without RTMP.

  14. Solerous
    Posted December 18, 2007 at 1:02 pm | Permalink

    Why no Mac version? Is one planned soon?

  15. Johan Temmerman
    Posted December 20, 2007 at 9:41 am | Permalink

    @RAY BlazeDS is a light-version of LCDS, so yeah.. many of the capabilities are similar ;)

    James,
    I’ve heard today, you’ll be joining us in Belgium again during the Pre-Release Tour. Can’t wait to see where AIR is going (has been since beta1 for me to play with).

    See you there!

    –Johan

  16. Posted December 27, 2007 at 7:04 pm | Permalink

    Hi! james, the benchtest app has error in debugger:
    ——————————————————-
    R[RPC Fault faultString="Send failed" faultCode="Client.Error.MessageSend" faultDetail="Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Status 200: url: 'http://www.jamesward.org/blazebench/messagebroker/amf?id=flex_amf3&gzip=true'"]
    at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()
    at mx.rpc::Responder/fault()
    at mx.rpc::AsyncRequest/fault()
    at mx.messaging::ChannelSet/faultPendingSends()
    at mx.messaging::ChannelSet/channelFaultHandler()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at mx.messaging::Channel/connectFailed()
    at mx.messaging.channels::PollingChannel/connectFailed()
    at mx.messaging.channels::AMFChannel/statusHandler()

  17. freedn
    Posted December 29, 2007 at 6:20 am | Permalink

    what an exciting benchmark!, however, How many bytes and fields of a row in the bench database?

  18. Posted January 17, 2008 at 2:17 pm | Permalink

    Any news of when this will be released under LGPL? We are currently using it in a development version of our application but would love to be able to use it in full production mode asap, however the current prerelease license prohibits that…

    Thanks,

    Beau

  19. Roger
    Posted March 4, 2008 at 11:28 am | Permalink

    Seems that if you want a quick, small answer, AMF is not the best choice since it is never quicker than 1.0s (at least according to this benchmark). Is that a characteristic of the protocol, an implementation deficiency, or a benchmark artifact?

    It would be very interesting to compare BlazeDS with amfPHP, particularly with the enhanced accelerator DLL.

    My experience suggests that amfPHP can respond faster than 1.0s for small data sets. And it would be interesting to see how it stacked up with larger data sets too.

    Although the ability to handle large data sets is important, many programs depend on small, fast responses to enhance the user experience. For example, “as-you-type” spelling suggestions.

  20. Posted April 7, 2008 at 9:11 am | Permalink

    After testing all the options, the largest variant was the server exec time. Since that is largely a function of the libraries used on the server this isn’t an accurate benchmark. I do have a fast machine and a fast internet connection so perhaps on slower machines/connections the parsing and transfer play a bigger role in the total time.

  21. Jeremy Norland
    Posted April 17, 2008 at 12:52 am | Permalink

    That is such a cool set of benchmarks. Thanks.

    I would love to see how Hessian matches up against these.

  22. Posted May 5, 2008 at 5:23 am | Permalink

    Has anyone done a comparison between BlazeDS AMF3 and AMFPHP?

    Thanks in advance

  23. Umberto21
    Posted October 16, 2008 at 5:04 pm | Permalink

    Hello.

    I am trying to send BlazeDS data across the network into a flex app (directly into its object).
    I have to code the raw packet in C++ binary.

    I have sniffed a sample object from a java program using BlazeDS and a Flex App (swf).
    I can understand the http headers (of course) but the data itself is difficult to understand.

    It looks like AMF0 format then some bits are AMF3 format. I am not a java expect. I guess I could debug through the code (of BlazeDs) and see, byte by byte how it assembles the response :)

    I was wondering if anyone has done this before..

  24. Posted October 17, 2008 at 11:12 am | Permalink

    Hi Umberto21,

    Would reading the AMF spec help?

    http://download.macromedia.com/pub/labs/amf/amf3_spec_121207.pdf

    -James

  25. Posted April 29, 2009 at 3:08 pm | Permalink

    Hi,

    Great tool! Really cool to see all the technologies stacked up against each other in a clean, easy-to-understand visual way.

    How about adding an benchmark of google protocol buffers and javascript for comparison?

    http://code.google.com/p/protobuf/

    http://code.google.com/p/protobuf-js/

    -Nikolay

  26. Posted August 19, 2009 at 3:11 am | Permalink

    This app has consistently provided a measurable way of supporting the argument in favor of AMF and it’s related technologies. James, you’re the man for continuing to mprove upon it. In consideration of your efforts and the usefulness of this tool over the last two years, I am featuring the app in the upcoming book titled “Flex 4 in Action” (Manning Press) that I’m writing with Tariq Ahmed and John C. Bland. In Chapter 15 on Data Service integration, I will be using the application once again as supporting evidence in favor of the Action Message Format for general data communications.

    Kudos to the cowboy for a job well done :-)

  27. Posted August 21, 2009 at 2:42 pm | Permalink

    Thanks Dan! I’m working on Census v2 right now. It’s going to rock!

    -James

  28. Stanislav Zayarsky
    Posted November 5, 2009 at 8:18 am | Permalink

    James,

    Please add gzip to AMF, it should be there as an option. We used gzip in our project and it did great compression 2 – 5 times. I understand that it will add time for unzipping, but let’s try.

  29. Posted November 5, 2009 at 9:41 am | Permalink

    Hi Stanislav,

    GZip is there as an option for AMF and all other tests.

    -James

9 Trackbacks

  1. [...] podemos disfrutar de la primera Beta aqui. James Ward tambien habla de BlazeDS y ha modificado su ejemplo de medición de protocolos para correr sobre BlazaDS, lo podeis ver [...]

  2. [...] James Ward talking about the annoncement [...]

  3. [...] Ward???Blog??“BlazeBench: Why you want AMF and BlazeDS”?????????????????? Adobe?Ted Patrick?????“The [...]

  4. By People Over Process » links for 2008-01-05 on January 5, 2008 at 12:19 am

    [...] James Ward – RIA Cowboy » Blog Archive » BlazeBench: Why you want AMF and BlazeDS (tags: blazeds adobe messaging data opensource ria redmonklclients) [...]

  5. [...] already use the new Flex skins in their demos: for example, there’s cool black theme in BlazeBench by James Ward. The same theme is used in the Flex Builder 3 betas, look at welcome screen. Maybe Adobe’s [...]

  6. [...] http://www.jamesward.com/blog/2007/12/12/blazebench-why-you-want-amf-and-blazeds/ Posted in AIR, Data Remoting, Flex, RIA | Leave a Comment [...]

  7. [...] performance problems. The Adobe Flex technology passes>BlazeBench: Why you want AMF and in a BlazeDS article compared in detail has used the performance promotion which BlazeDS brought, got down the [...]

  8. By Flex, Java & BlazeDS « M@ Blog on August 28, 2009 at 3:52 pm

    [...] Ward’s site has some benchmarks for comunicating via AMF with [...]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Subscribe without commenting

  • About James Ward



    View James Ward's profile on LinkedIn

  • First Steps in Flex by James Ward and Bruce Eckel




  • Twitter Updates


  • Tour de Flex