Persevere 1.0

By on November 13, 2009 12:11 pm

Persevere 1.0 is now available for download. Persevere is a JavaScript storage and application server that uses a standards-based interface of HTTP/REST, JSON-RPC, JSONPath, and REST Channels. Persevere is designed for rich client applications and can be used with any framework or client. The Persevere Server runs on Rhino and provides persistent data storage of dynamic JSON data in an interactive server side JavaScript environment with the following key features:

  • Create, read, update, and delete access to persistent data through a standard JSON HTTP/REST web interface
  • Dynamic object persistence – expando objects, arrays, and JavaScript functions can be stored, for extensive JavaScript persistence support
  • Remote execution of JavaScript methods on the server through JSON-RPC for a consistent client/server language platform
  • Flexible and fast indexed query capability through JSONQuery/JSONPath
  • Comet-based data monitoring capabilities through HTTP Channels with Bayeux transport plugin/negotiation support
  • Data-centric role-based object level security with user management, Persevere is designed to be accessed securely through Ajax with public-facing sites
  • Comprehensive referencing capabilities using JSON referencing, including circular, multiple, lazy, non-lazy, cross-data source, and cross-site referencing for a wide variety of object structures
  • Data integrity and validation through JSON Schema based definitions
  • Class-based data hierarchy – typed objects can have methods, inheritance, class-based querying
  • Pluggable data source architectures – SQL tables, XML files, remote web services can be used as data stores
  • Object versioning with transactional history of record states

Persevere in use

Recently, Cramer Development put together a slick little application for making sticky notes. They discuss how quickly the application came together, as Persevere allowed them to quickly establish a data API, and then focus on the client side interface.

Other users include:

  • DataStream Content Solutions is using Persevere to build an XML repository for legal data in combination with MarkLogic.
  • Montana State University is using Persevere for their Yogo Data Management Project.
  • Another multi-national company is using Persevere in production for Intranet applications, with consistent usage from a number of users.
  • And, of course, we at SitePen are using Persevere for a number of the applications we are developing.

Numerous others are using Persevere in a variety of ways.

Learning more

There are a number of resources for learning more about Persevere and getting started with it.

What’s Next

With Persevere 1.0 finished, we are already working on the next version which will be based on the new Pintura architecture. Pintura is the new JavaScript core for the Persevere HTTP interface that is based on the CommonJS and JSGI API. Pintura will run on any CommonJS/JSGI capable JavaScript engine (support for V8, JSCore, and Spidermonkey coming).


  • Iam a newbe i don’t understand the meaning of this project, seems to me jquery look a like with database. Samples can do better. First impression many terms and no expenation on the used terms. Only developers can translate non terms tot readable text. Sorry for the language iam dutch. Greetinx

  • Jacob

    I’m thinking of using Persevere for a multiplayer game, and therefore I’m wondering how you’re handling scaling issues with your comet implementation – how many connections can you handle on a small server? Are there any tests or benchmarks of this?

  • Pingback: Ajaxian » Persevere comes to a 1.0 release()

  • Rusco

    Running on Appengine via Rhino ? (similar to Helma NG) ?

    I think not (otherwise it would be mentioned on this page) – but that would be really great. Maybe a 2.0 feature ?


  • Rusco

    Is Appengine Compatibility (via Rhino) on the Roadmap ?

  • @Jacob: There is some info on Persevere performance here: and Persevere uses Jetty, which can handle a large number of connections:
    but scalability is invariably dependent on how you application uses the framework, so YMMV.

    @Rusco: Appengine is definitely targeted in version 2.0, which should run on JSGI server, including GAE compatible Jack.