Researchers at Brown University have created a new programming language for developing Web applications, known as Flapjax.
The new language makes AJAX-style development easier by hiding complexity, its developers say.
Moreover, Krishnamurthi said Flapjax has six primary characteristics: It is event-driven and reactive; it reduces unnecessary code through its template system; it provides a persistent store that automatically updates all clients sharing the same data; it enables sharing of data with others; it implements access control to channel the data sharing; and it libraries to connect to external Web sites, which enables the creation of client-side mashups.
Krishnamurthi and the core team of Flapjax developers released the technology under the BSD open-source license.
The Flapjax Team, which has copyrighted the name, includes Krishnamurthi, Leo Meyerovich, Michael Greenberg, Gregory Cooper, and Aleks Bromfield.
Krishnamurthi gave a preview of Flapjax at the Lang.NET Symposium at Microsofts campus in Redmond, Wash., on Aug. 1.
There he demonstrated Flapjax in action to an audience of language gurus.
“What we do is present a language that hides the messy details of AJAX,” Krishnamurthi said.
“Instead of worrying about building low-level packets, etc., we give you a simple way of saying This datum resides on a remote server—send all of my updates to it, and get all updates from it to me. Thats what AJAX is typically used for, but never at that high level of abstraction.”
Developers can look at Flapjax in one of two ways, Krishnamurthi said.
Dion Almaer, the Madison, Wis.-based co-founder of Ajaxian.com, said he thinks Flapjax is “really interesting technology,” but he does not expect it to take the world by storm.
However, “It could help if [Flapjax] teamed up with a framework like, for example, [Ruby on] Rails,” Almaer said.
“That would allow you to put up Rails helpers that produce compiled Flapjax.”
The Flapjax tutorial on the technologys Web site says Flapjax tries to reconcile two programming styles that have been in conflict: declarative and imperative programming.
Imperative programming makes the developer act as bookkeeper of the code and to specify which algorithms are to run in program, whereas declarative programs explicitly specify the goal of the program and leave the implementation of the algorithm to the support software.
Yet, in contrast to both of these, “Flapjax programs tend to be declarative specifications over imperative data,” the tutorial said.
Although Flapjax is touted as simplifying AJAX development, some developers viewed it as possibly adding complexity.
In a response to a blog post on Flapjax on the Ajaxian site, a developer who identified himself as Ryan Gahl called it “a step backward. Instead of separation of concerns, it encourages spaghetti. Spaghetti is good for dinner with meatballs and a little parmesan. Keep it away from my projects.”
However, Krishnamurthi responded that Flapjax is usable in many ways, and in its “unobtrusive” mode, Flapjax separates the applications presentation layer from its markup.
The unobtrusive mode provides functionality similar to that of aspect-oriented programming, he said.