In its most recent bid to establish itself at the forefront of RIA competitors, Curl, Inc. announced the results of a performance benchmark test of the Curl Rich Internet Application (RIA) platform, Version 6.0, and Adobe Flex 3, showing that the Curl language outperforms ActionScript 3, the programming language of the Adobe Flash Player runtime, by a factor of 8 to 10.
Over the past three months, Curl, Inc has released a series of RIA technologies aimed at helping developers design a new class of complex, Web-based business applications. These RIAs include an open-source Web-services development kit, support for Ubuntu, and Curl's run-time environment for Macintosh. Thus, the test’s findings are particularly important to developers looking for highly productive ways to build mission-critical RIAs with extensive performance capabilities.
Curl’s announcement on the test result states:
The results of the test showed that Curl retains a substantial advantage in raw execution speed, attributed mostly to the significant difference in the two platforms' programming languages. While the Curl language was architected to support compiling to efficient code, Adobe's ActionScript was not. The end result is Curl's superior performance for building enterprise RIAs.
Curl’s technology, especially on the client side, works in ways that are similar to Flash-based technologies. It requires a run time engine for desktop application or a plug-in for browser-based application. As Bert Halstead, Vice President and Chief Architect for Curl, Inc., explains: “Curl was designed to be a very powerful, high-performing language and platform, and we have always been proud of this unmatched capability. The results of this test support our claims, and we will continue to expand on this study to further document Curl's superiority for enterprise RIAs.”
However, Ted Patrick, Technical Evangelist for Flex at Adobe, disagrees with the test result. He says:
At first glance it seemed very impressive; eight times faster than ActionScript, WOW! But, looking deeper this finding is mostly irrelevant. The first thing that struck me was that the benchmark was for encoding a JPG image; not for rendering it or uploading it, but iterating over each pixel and translating it to another image type.
According to Patrick the encoding aspect of JPG doesn’t tell the whole story:
We support Encoding in the Flex Framework to allow image conversion, but it is far from a mainstream feature. Flash Player supports imaging directly in the runtime, so you can create images from any content in the Flash Player as native objects. There is no need to encode these as JPGs, ever. Also, the speed is lightening fast. Actually, it is far faster than any of the Curl results by an order of magnitude.
Patrick also gives his opinion on code exaction:
I keep seeing other runtimes benchmark against Flash Player, but they do so within the performance vacuum and do not take into account reach, rendering performance, cross-platform and compatibility aspects. Every developer wants to use the fastest language, but the reality is that the language most compatibly installed eventually wins out. Both JavaScript and ActionScript are gaining adoption rapidly, because they are widely available, not because they set land speed records for image encoding.
Despite the controversy surrounding the recent test results, Curl is clearly becoming a strong player in the RIA arena. Nelson King of Intelligent Enterprise writes, “Curl creates applications that ultimately compete with applications from Microsoft Silverlight and Adobe Flash/AIR, most especially in the enterprise.” Moreover, when Curl released its desktop product, Nitro, Heather Havenstein of Computer World reported, “Curl is the latest vendor looking to garner part of the expanding offline RIA business, where users extend the rich user interface and fast loading times of RIAs onto the desktop. Other offerings include Google Inc.'s Google Gears technology, Mozilla Corp.'s Prism software and Adobe Systems Inc.'s Adobe Integrated Runtime (AIR).”
InfoQ will watch closely to see how the growing competition in RIA technology evolves over the period ahead.
Community comments
Importance of RIA language performance
by Bert Halstead,
Re: Importance of RIA language performance
by Christopher Brind,
Re: Importance of RIA language performance
by Bert Halstead,
Re: Importance of RIA language performance
by Christopher Brind,
Re: Importance of RIA language performance
by Bert Halstead,
Flex is not just about the runtime
by leftie friele,
Curl RTE penetration
by Christopher Bartling,
Re: Curl RTE penetration
by Bert Halstead,
Re: Curl RTE penetration
by Ryan Gardner,
Re: Curl RTE penetration
by Bert Halstead,
Importance of RIA language performance
by Bert Halstead,
Your message is awaiting moderation. Thank you for participating in the discussion.
Thanks for your attention to this issue. Ted Patrick was understandably eager to put the results of our performance test in the best light for Adobe, but I think there is more to the story. I discuss the issues in more depth in the Curl blog, but briefly:
We certainly welcome the dialog with our community and our competitors, and we think it's through this exchange that everybody will become better able to pick the technology that's right for them.
Bert Halstead
Chief Architect
Curl, Inc.
Flex is not just about the runtime
by leftie friele,
Your message is awaiting moderation. Thank you for participating in the discussion.
In my opinion Flex isn't the best RIA framework out there just because it's performance is great. It's about the development tools that Adobe have created which is amazing and makes it stand out against competitors like Silverlight, Curl, JavaFx, etc.
Photoshop, Flash CS3 and Flex Builder is such an amazing tool chain and it's the tools of choice for all visual designers. Therefor Flex will always come out on top, because it's not just about performance. It's about creating amazing experiences and this is where Flex is by far the superior framework with it's seamless integration with the preferred tools of the visual designers. Until competitors like Curl get a hook into those tools, it's always going to be just a niche product imho.
Re: Importance of RIA language performance
by Christopher Brind,
Your message is awaiting moderation. Thank you for participating in the discussion.
I work on enterprise projects with Java and Flex. We have plenty of work to do and are always on the look out for more developers with Java and Flex experience to try and cope with the workload. Flex is part of the reason we have some of our customers in the first place.
My questions are:
Why should we switch from Flex to Curl (or even spend the time investigating it)?
What tools do you offer than can compete with Flex Builder 3.0 Pro / Photoshop?
Do the Curl APIs offer RPC support, for instance in to Java Objects or provide integration with WebServices or other HTTP based services (i.e. compared to Flex's RemoteObject, WebService, HttpService)?
Can you inline XML and Regular Expressions?
Why did you choose to share the name of one of a famous unix command line program / library?
Why do you have Flash on your home page?
Cheers
Chris
Re: Importance of RIA language performance
by Bert Halstead,
Your message is awaiting moderation. Thank you for participating in the discussion.
Chris,
Here are your questions and my answers.
Why should we switch from Flex to Curl (or even spend the time investigating it)?
If you currently use Flex and don't find that there is anything about it that limits your effectiveness, you're probably not going to be too motivated to explore alternatives. But many of our customers have found (sometimes after attempting to use Flex) that Curl's security, functionality, and performance enables them to do things that they couldn't do before. That's why we've been blogging about these properties of Curl. If there's something you wish Flex would do but it doesn't, or if you are still investigating RIA platforms and want to pick the one that will suit your needs the best, then you owe it to yourself to evaluate Curl as one of your alternatives.
What tools do you offer than can compete with Flex Builder 3.0 Pro / Photoshop?
Curl has a full-featured IDE, including drag-and-drop visual editing, syntax-sensitive editor with autocompletion, debugger with breakpoints and extensive data inspection facilities, performance profiler, source-code-control integration, extensive documentation including interactive example code, and much more. The Curl compiler is much faster than the Flex compiler, whose performance has been the subject of some complaints. We will soon be making this same suite of capabilities available in the form of an Eclipse plugin for people who prefer to use that packaging. For preparing graphics, Adobe has great tools like Photoshop and Illustrator. Of course you can use your artwork from these tools with our IDE.
Do the Curl APIs offer RPC support, for instance in to Java Objects or provide integration with WebServices or other HTTP based services (i.e. compared to Flex's RemoteObject, WebService, HttpService)?
Yes. You want to look at Curl's open-source Web Services Development Kit (WSDK).
Can you inline XML and Regular Expressions?
I'm not sure what you mean by "inlining" XML, but the WSDK has extensive capabilities for manipulating XML data streams, which could come from files or could be generated as part of your application. And Curl has a top-notch regular expression API built in.
Why did you choose to share the name of one of a famous unix command line program / library?
We actually used the name first! The MIT Curl research project that developed the basis for the Curl technology was using the name Curl three years before the cURL project adopted it. When the Curl technology was spun out for commercial development, we submitted the trademark registration and obtained the curl.com domain name shortly before the cURL project adopted their current name. Unfortunately neither project learned of the existence of the other until about two years after that, and when we did learn about the existence of cURL, we felt that it would be more civilized not to pursue any claims with them, because we knew they had acted in good faith and we did not feel there would be a serious potential for confusion. We still believe the "good faith" part. On the other hand, there has been some confusion, as evidenced by your question. But at this point, we just have to make the best of the situation. We certainly wish the cURL people well.
If you're curious, the name "Curl" comes from the use of "{}" curly braces in the language.
Why do you have Flash on your home page?
The value of wide deployment over performance and other considerations varies a lot depending on your situation. In many scenarios, wide deployment is very important. We use Flash to add some visual punch to our corporate home page that all comers can enjoy! For this kind of application, wide deployment often trumps performance and you adjust your ambitions, if necessary, to fit the constraints of the platform.
Best,
Bert
Curl RTE penetration
by Christopher Bartling,
Your message is awaiting moderation. Thank you for participating in the discussion.
I was interested in seeing what Curl was all about. I went out to the website and noticed that I needed to install a new runtime environment to see the demos. Unfortunately, Curl is playing the same plugin game that Silverlight and Java have to play today. There will be a lot of inertia to installing any other plugin than Flash these days.
Flex is the king of the hill in RIA right now not because it's fast or it's development tools are the best, but because the Flash player is ubiquitous. I've never come across any Curl content that has required me to acquire the Curl RTE. Unfortunately, that's the world Curl faces today.
Re: Curl RTE penetration
by Bert Halstead,
Your message is awaiting moderation. Thank you for participating in the discussion.
Flash plays the plugin game too. In fact, an awful lot of the people who have Flash 9 on their machines today have had to, at some point, click "OK" when asked whether they wanted their Flash player upgraded to Flash 9. You're right that the psychology in the B2C application world is different when they have to go find a new plugin to install rather than just clicking "OK". But for the enterprise applications where Curl's advantages are the greatest, this hasn't been an issue, and lots of companies have installed Curl on their machines because they saw it was delivering real value that they couldn't get otherwise.
There's a first time for everything, including AIR and Silverlight as well as Curl. If you want to learn about Eclipse, Photoshop, or Flex Builder you need to install something too. I hope you won't let plugin-phobia deter you from learning about something that you actually want to learn about. The installation is free, only takes a moment, and I guarantee you there are no viruses in it!
Bert
Re: Curl RTE penetration
by Ryan Gardner,
Your message is awaiting moderation. Thank you for participating in the discussion.
CURL's claims caught my attention - until I looked at the actual "benchmark"... One specific algorithm... who gives a crap?
Where are these so-called "enterprises" that think that encoding a JPG is the bottleneck in their application? I would like to see them so I can point my finger at them and laugh at them.
I'm not on Adobe's payroll, so I don't have any particular zany love for Flex 3 or anything - but I can't help but think that Curl's claims are nothing more than marketing fumes. Apparently, the "enterprise" cares about strange tasks that none of my clients have ever bothered to bring up as an issue...but even with a 99.7% installed base I still have to make a case for using Flex over AJAX for applications where Flex is clearly a better fit.
Curl makes a claim that their performance is better. People respond and say "Um... your one benchmark is rather stupid." and then curl comes back and says "You obviously aren't dealing in the same Enterprise that we are" - ("You dont think w3 are teh bomb 'cuz you aren't in da Enterpirze d00d! Entarprize luvz us lolz")
I don't doubt that Curl has a limited space in the market place - but it's certainly not the 'next big thing'
Re: Importance of RIA language performance
by Christopher Brind,
Your message is awaiting moderation. Thank you for participating in the discussion.
Thanks Bert, that's a great response - very level headed. :) In response to your response...
Remoting. WebServices are obvious, but developing webservices can be a pain and they tend to be slow and difficult to maintain. My preference is to use some kind of remoting technology unless a specific need for WebServices has been identified. At the moment I favour mx:RemoteObject using AMF to talk directly to Java objects on my server. Does Curl have anything like this?
Security. Can you outline where you think Curl succeeds where Flex fails, please?
Thanks again.
Cheers,
Chris
Re: Curl RTE penetration
by Bert Halstead,
Your message is awaiting moderation. Thank you for participating in the discussion.
Ryan, I don't want to be repetitive with material I've posted earlier in this discussion thread that addresses your points, so I'll be brief. I've discussed these points more extensively on the Curl developer center blog. Briefly, if you look at Ted Patrick's blog article and its followup, you'll see that JPEG encoding is not quite as irrelevant as you make it out. It's used, for example, in the Adobe AIR Salesbuilder demo, and it's a cause of some performance degradation there. And lots of people chimed in with comments on Ted's articles to say that JPEG encoding was important in their applications.
But, as I've stated before, the real point for enterprises is that applications that handle a lot of data frequently need to have application code in their inner loops. JPEG encoding is one example but data-cube handling is another: no RIA platform has a pre-optimized data-cube API hardwired into it. Actually there are a lot of examples, which is why the problem of supporting these algorithms well can't be solved by just including every one of them as a primitive operation in an RIA platform. We benchmarked JPEG encoding because it's a non-toy algorithm, it's included in the Flex framework and we could do a good apples-to-apples comparison with it to isolate the effects of actual language performance. We certainly aren't going to stop there and we certainly invite other people to bring their own actual data to the table.
Re: Importance of RIA language performance
by Bert Halstead,
Your message is awaiting moderation. Thank you for participating in the discussion.
Chris, thanks for your further comments. The Web Services Development Kit really covers more than just Web Services per se, so it does provide tools for REST interactions and other kinds of client/server interactions. However, it is just a client-side library, so there needs to be a server-side implementation of a protocol for the client to talk to. Curl doesn't at this time supply a server-side component that would bind to server-side Java objects and implement a protocol for talking with them. However, in our open-source Curl Data Kit (CDK) project, we are building a client-side implementation of the AMF protocol so that Curl applications can talk to an AMF-based server component such as those that are available from Adobe.
Regarding security, Curl supports both sandboxed ("safe") and unsandboxed ("unsafe") execution modes, both in the browser and as a desktop applet (cf. Adobe AIR), and in both online and offline mode. By default, of course, applications run in safe mode. Unsafe execution of applets from specifically designated URLs (or signed with recognized certificates) can be authorized. The Curl RTE can be installed so that these decisions are controlled by the end user, or the security policy to apply can be pre-specified by the IT administrator, which would be a typical case in an enterprise.
Executing in unsafe mode, Curl applications can embed ActiveX controls, call DLLs, and interact in powerful ways with the client machine, and some of our enterprise customers value that power for their Curl applications that are served from internal servers. Nevertheless, for obvious reasons, it is desirable for applications to be able to execute in safe mode to the maximum extent possible. We've worked hard, and I think provided a lot of leadership, in finding ways to expand the things that an application can do while still executing in safe mode. For example, Curl's "curl-access.txt" mechanism for cross-domain access was later copied by Flash/Flex in the form of crossdomain.xml files. Curl also has always provided a way for applications to directly (without server intervention) access files on the client machine that are specifically authorized by the user. I understand that this capability is now slated to find its way into Flash 10. Finally, Curl has an architecture that permits applications to keep application-related data persistently on the client machine in a reserved area in the file system, yet again expanding the features that an application can have without needing to escape from the sandbox.
So, in short, some of the areas where Curl stands out are in the ability to support safe as well as unsafe execution modes in the full range of deployment models from browser-based to desktop to offline; in expanding the capabilities of the safe execution mode, for example with the client-side persistent storage mechanism; and in the ability for IT administrators to allow both safe and unsafe execution while locking down the policy so that unsophisticated users cannot make dangerous security decisions. I'd also add that there has never yet been a Curl security exploit initiated out in the wild that we had to patch. The greater visibility of Flash at this time certainly puts Adobe at a disadvantage in this respect, but we also like to think that there is some evidence here that we have been careful and prudent in our design and coding practices.
Regards,
Bert