Comparison tables
A comparison between Ur/Web and some other functional programming frameworks.
Part 1
Framework | Documentation | Commercial support | License | Programming language(s) | Standard execution model | Free of garbage collection overhead |
---|---|---|---|---|---|---|
Ur/Web | Yes | Yes | Ur/Web | Native code | Yes | |
OPA | Yes | OPA | ||||
Play with Scala module | Yes | Yes | Scala | JVM | No | |
Lift | Incomplete | Yes | ||||
Yesod | Haskell | Native code | No | |||
Happstack |
Part 2
Framework | "Stateless" | CSRF protection | Javascript code generation | FRP-like client-side code | Type-safe SQL | Type-safe metaprogramming | MVC-based |
---|---|---|---|---|---|---|---|
Ur/Web | Yes | Yes | Yes | Yes | Yes | Yes | Optional |
OPA | |||||||
Play with Scala module | Yes | No | Yes | ||||
Lift | Low-level only | ||||||
Yesod | |||||||
Happstack |
Notes
It is not really worth trying to measure "maturity" here, as none of the frameworks on this page have seen huge takeup thus far, and in any case it should be remembered that a "mature" web framework is not necessarily a modern or well-designed one.
The Programming language(s) heading refers to the programming language(s) (and, for the avoidance of doubt, template language(s)) that the developers using the framework are expected to program in (excluding Javascript, if applicable), not the programming language(s) that the framework is implemented in.
Stateless means that no state is no retained in the application server (as opposed to the database, or the web browser) between requests.