nJoy is an experimental platform for creating Internet-based mobile services. It's designed to facilitate the development of mobile services based on standard web technologies.
nJoy provides a simple web interface for storing, retrieving and sharing data on the web. It's designed with standard web technology (like HTTP, XML, Atom, JSON) and it nicely integrates with the Web 2.0 approach to web services. nJoy also provides provides a high-level of customability for retrieving content on low bandwidth and high latency networks (like 2G and 3G). The main design philosophy is just enough requests, just enough data. This allows mobile clients to carefully tune the amount of data transiting in the network without compromising functionality. In short, nJoy makes it easy to publish content in a Web 2.0 environment and to optimize the data traffic in a mobile environment.
Some of the use cases that are supported by the nJoy APIs are:
nJoy can be thought of as a storage system that is operated with the basic HTTP operations GET, PUT, POST and DELETE. Each piece of information (binary and metadata) is a web resource that is identified by a well-defined URI. The HTTP operations are applied to the URIs in order to fetch a representation of the resource or to update its content. The key advantage of nJoy is to provide several methods for customizing the representations that are fetched from the network. Hence, clients can always fetch the optimal representation for a particular task.
The ultimate goal of nJoy is to provide a secure and reliable infrastructure for building internet-based services. There is a basic set of services (like storage, authentication, data format conversions) that should be taken for granted by projects that are building mobile applications and services. nJoy aims at providing the basic data layer for storing the raw data that is generated and consumed by several applications (web and mobile clients).
nJoy's approach is twofold. For Nokia internal users nJoy aims at creating a high-level data layer over a reliable, low-latency and scalable infrastructure (hiding the underlying implementation and storage solutions). Decoupling the content storage from the application functionality simplify system integration and facilitate sharing content across different applications/projects. For external users, nJoy aims at delivering set of coherent and well-structured web APIs that enables 3rd party developers to mashup data stored in nJoy with other services.
Based on these objectives, the key design requirements for nJoy are:
To address the previous requirements, nJoy follows the following design principles: