Tuesday, May 02, 2006

Links: Web Programming Without Tiers

From Lambda the Ultimate:
Links is a programming language for web applications. Links generates code for all three tiers of a web application from a single source, compiling into JavaScript to run on the client and into SQL to run on the database. Links provides support for rich clients running in what has been dubbed `Ajax' style. Links programs are scalable in the sense that session state is preserved in the client rather than the server, in contrast to other approaches such as Java Servlets or PLT Scheme.

It looks like Links is making some great progress. A couple of interesting points from the paper:
  • Links supports web continuations. The continuation state is stored on the client, not the server. They defunctionalize the continuation object, replacing functions with unique identifiers. In this way they reduce the size of the continuations to be manageable for client side storage.
  • Client side concurrency! The client side code is compiled to Javascript in continuation passing style. This gives lightweight threads in Javascript on the browser.


Categories: ,

2 Comments:

Blogger b7j0c said...

i would be interested to see how this compares, long term, to toolkits like django, rails, apache::asp (mod_perl based) etc. personally i find it to be quite advantageous to be able to code in the same language for webapps that i do for offline/batch coding, this aids reuse and can help minimize coding.

7:20 AM  
Blogger Chris Double said...

I also prefer that approach. I like the fact thta I can write my web applications in Lisp and reuse all the existing Lisp libraries for example.

Links does has some interesting ideas though. I do like the compiling the client side code into CPS style to get light weight threads.

I'm not sure about the client side storage of continuation data though. The continuations gets pretty big in the apps I've built using continuation based systems so it'll be interesting to see how that goes with real world sizes. For a scalability perspective client side is a good approach though.

9:00 AM  

Post a Comment

<< Home