Easy-to-learn Curl 5.0 equips developers to create powerful RIAs

Curl up with a comfortable rich Internet application IDE 

RIAs (rich Internet applications) are all the rage now, and for good reason: Given the wide availability of high-speed Internet service, they have the potential to combine the ease-of-access of Web applications with the ease-of-use of desktop applications. Curl, which is a programming language, an IDE, and a runtime engine, was actually ahead of its time back in 2003, when I wrote about Curl 2.0 for Byte.com. However, broadband access wasn't quite so widespread at the time, and the idea of RIAs didn't seem quite so compelling.

[ See also: InfoWorld Technology of the Year Awards Application Development winners | Screencast: Curl 5.0 ]

That's all changed. Curl 5.0, available in both a Personal and Pro edition, is now positioned as an industrial-strength RIA platform: It has all the good attributes of RIAs -- Web-enabled, lightweight, and a rich interface -- plus additional characteristics that make it suitable for enterprise use. Curl applications can handle intermittent connectivity, support large data sets, run securely, and present complex user interfaces gracefully.

Click for larger view.

The commercial Curl I'm writing about here needs to be distinguished from curl or cURL, the command line tool for transferring files with URL syntax, and the bindings for libcurl available for many languages. Curl was originally developed as an MIT research project; this is a spin-off from that project.

So why haven't you heard about Curl? Curl of Cambridge, Mass., was acquired by Sumisho Computer Systems of Japan in 2004, and Curl was primarily marketed in Japan until this spring.

With an 8MB runtime engine, Curl 5.0 falls near the middle of the range of rich Internet clients as far as "heaviness." It falls near the high end of the range when it comes to runtime performance. It has an impressive JIT (just-in-time) compiler with code caching and good support for graphics hardware. This is quite clear from some of the standard Curl demos and samples, especially the ones that demonstrate ray tracing.

Ray tracing is one of the most compute- and graphics-intensive types of applications, and Curl can actually compute and display animated ray-traced scenes at reasonable frame rates. Curl runs hundreds of times faster than JavaScript, and it comes close to native code speed for many applications.

Easy does it
Curl's original design goals were to unify documents and applications; to provide markup, scripting, and object-oriented programming in one environment with high performance; to create interactive UIs with a minimum of code; to support rapid development; and to be a "gentle slope" language. By "gentle slope," Curl's designers mean that all APIs can be extended, simple tasks require only simple code, and the language needs only the minimum of boilerplate code.

In my experience, Curl meets most of these goals at the language level, and the visual layout editor picks up the slack in the area of rapid UI development.

Curl has an impressive set of features. Starting with portability, Curl applications run on Windows, Linux, and Mac OS X, although the Curl IDE currently runs only on Windows and Linux. There are different client RTEs for each platform, but the Curl source doesn't change from platform to platform, and is compiled just-in-time on the client. I'm not aware of any compatibility issues among platforms, but I haven't tested this firsthand.

Click for larger view.
For data management and display, Curl 5.0 has RecordSet, RecordFilter, RecordSort, RecordView, RecordGrid, and RecordForm objects. It can manipulate structured data internally, fetch and store data in a database, and work with data stored in files on the client. The typical way of connecting a Curl RecordSet to a database server is to use the provided Java database connection servlet and a JDBC driver. JDBC drivers are available for a wide assortment of databases, and a JDBC-ODBC bridge is available for Windows.

Web-service friendly
Curl ships with XML, SAX (Simple API for XML), and SOAP classes. Further, it has a free add-on, the Curl Web Services SDK, that provides WSDL, XML Document Object Model, and XPath functionality. This add-on can import WSDL and generate a Curl package that lets you call a Web service through Curl classes and methods without having to explicitly deal with SOAP requests and responses.

A less capable version of this, the Curl XML Document Model Library, was all that was publicly available for download at the time of this review. The prerelease WSDK 1.0.4 that I reviewed was provided by Curl support, and an updated build of this will be available for download in the fall.

The Curl IDE features dockable panes and a layout reminiscent of Visual Studio or Eclipse. Besides a code editor and debugger, the IDE has a VLE (Visual Layout Editor). All of the above are free.

The Pro IDE adds source-code control integration, performance profiling and coverage analysis tools, and the ability to create VLE extensions, that is, add custom controls to the VLE. Professional Server features include HTTPS support (SSL/TLS [Transport Layer Security] encryption), complex concurrency (for high performance), applets with privilege (to allow operations beyond the sandbox), pCurl encryption (which hides your source code and improves performance), single sign-on (which lets a Curl applet get credentials from a Web site), and integration with the Mercury Interactive QuickTest Professional tools.

Curl may well be the most interesting computer language that you don't already know. Given that you can use the personal tools free forever and deploy the results on the Internet for free, the only barrier to evaluating it would be finding the time, and you may be pleasantly surprised at how quickly you pick it up. If you get serious about Curl and need to evaluate the professional tools and runtime, you can download a free 60-day trial. Curl should certainly be an option to consider for your next RIA project.

InfoWorld Scorecard
Ease of development (30.0%)
Value (10.0%)
Documentation (15.0%)
Performance (15.0%)
Capability (30.0%)
Overall Score (100%)
Curl 5.0 8.0 9.0 8.0 9.0 9.0 8.6

Copyright © 2007 IDG Communications, Inc.